create-react-forge 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -22
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +21 -7
- package/dist/cli/prompts.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +4 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/docs/index.d.ts +1 -0
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +1 -0
- package/dist/docs/index.js.map +1 -1
- package/dist/docs/readme-generator.d.ts +6 -0
- package/dist/docs/readme-generator.d.ts.map +1 -0
- package/dist/docs/readme-generator.js +276 -0
- package/dist/docs/readme-generator.js.map +1 -0
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +5 -2
- package/dist/generator/index.js.map +1 -1
- package/package.json +1 -1
- package/src/templates/overlays/state/jotai/manifest.json +16 -0
- package/src/templates/overlays/state/jotai/src/stores/atoms.ts +52 -0
- package/src/templates/overlays/state/jotai/src/stores/index.ts +30 -0
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
[](https://github.com/chiragmak10/create-react-forge/actions/workflows/codeql.yml)
|
|
2
|
+
[](https://github.com/chiragmak10/create-react-forge/actions/workflows/release.yml)
|
|
3
|
+
[](https://github.com/chiragmak10/create-react-forge/actions/workflows/dependency-review.yml)
|
|
4
|
+
[](https://github.com/chiragmak10/create-react-forge/actions/workflows/ci.yml)
|
|
1
5
|
# create-react-forge
|
|
2
6
|
|
|
3
7
|
Production-ready React scaffolding CLI with first-class testing, flexible runtimes (Vite/Next.js), and a composable template system inspired by [bulletproof-react](https://github.com/alan2207/bulletproof-react).
|
|
4
8
|
|
|
5
9
|
## Requirements
|
|
6
10
|
|
|
7
|
-
- Node.js **>=
|
|
11
|
+
- Node.js **>= 20.9.0**
|
|
8
12
|
|
|
9
13
|
## Quick start
|
|
10
14
|
|
|
@@ -27,28 +31,27 @@ When you run `create-react-forge`, it will:
|
|
|
27
31
|
|
|
28
32
|
- Ask a few questions (runtime, language, styling, testing, etc.)
|
|
29
33
|
- Generate a new project directory (the directory **must not already exist**)
|
|
30
|
-
- Optionally initialize a git
|
|
31
|
-
- Print the
|
|
34
|
+
- Optionally initialize a git repository
|
|
35
|
+
- Print the "next steps" commands
|
|
32
36
|
|
|
33
|
-
Note: it **does not automatically install dependencies** — you
|
|
37
|
+
Note: it **does not automatically install dependencies** — you'll run your package manager install after generation.
|
|
34
38
|
|
|
35
|
-
## Interactive prompts
|
|
39
|
+
## Interactive prompts
|
|
36
40
|
|
|
37
|
-
The CLI is
|
|
41
|
+
The CLI is **prompt-driven**. You'll choose:
|
|
38
42
|
|
|
39
43
|
- **Project name** (lowercase letters/numbers/hyphens)
|
|
40
44
|
- **Project directory**
|
|
41
45
|
- **Runtime**: Vite or Next.js
|
|
42
46
|
- **Language**: TypeScript or JavaScript
|
|
43
|
-
- **Styling**: Tailwind,
|
|
44
|
-
- **State**: none, Zustand, or Redux Toolkit
|
|
47
|
+
- **Styling**: Tailwind, Styled Components, CSS Modules, or Plain CSS (Vite offers all 4; Next.js auto-selects Tailwind)
|
|
48
|
+
- **State**: none, Zustand, Jotai, or Redux Toolkit
|
|
45
49
|
- **Testing**: full (unit+component+E2E), unit+component only, or none
|
|
46
50
|
- **Unit runner**: Vitest or Jest (if testing enabled)
|
|
47
51
|
- **E2E runner**: Playwright or Cypress (if full testing)
|
|
48
52
|
- **Data fetching**: include TanStack Query
|
|
49
53
|
- **Package manager**: npm / yarn / pnpm
|
|
50
54
|
- **Git init**: yes/no
|
|
51
|
-
- **Prettier**: yes/no
|
|
52
55
|
|
|
53
56
|
## What you get
|
|
54
57
|
|
|
@@ -59,33 +62,53 @@ my-app/
|
|
|
59
62
|
├── src/
|
|
60
63
|
│ ├── app/ # App setup (providers, router)
|
|
61
64
|
│ ├── components/ # Shared UI components
|
|
65
|
+
│ │ ├── ui/ # Base UI primitives
|
|
66
|
+
│ │ └── errors/ # Error boundaries & fallbacks
|
|
62
67
|
│ ├── features/ # Feature-based modules
|
|
63
68
|
│ ├── hooks/ # Custom hooks
|
|
64
69
|
│ ├── lib/ # Utilities, API client
|
|
65
70
|
│ ├── stores/ # State management (if selected)
|
|
71
|
+
│ ├── styles/ # Global styles
|
|
66
72
|
│ ├── testing/ # Test utilities, mocks (if selected)
|
|
67
73
|
│ └── types/ # Shared types
|
|
68
74
|
├── tests/ # E2E tests (if selected)
|
|
75
|
+
├── README.md # Auto-generated project README
|
|
76
|
+
├── ARCHITECTURE.md # Auto-generated architecture docs
|
|
69
77
|
└── [config files]
|
|
70
78
|
```
|
|
71
79
|
|
|
72
|
-
## Configuration options
|
|
80
|
+
## Configuration options
|
|
73
81
|
|
|
74
82
|
| Category | Choices |
|
|
75
83
|
|---|---|
|
|
76
84
|
| **Runtime** | `vite`, `nextjs` |
|
|
77
85
|
| **Language** | `typescript`, `javascript` |
|
|
78
|
-
| **Styling** | `tailwind`, `
|
|
79
|
-
| **State** | `none`, `zustand`, `redux` |
|
|
86
|
+
| **Styling** | `tailwind`, `styled-components`, `css-modules`, `css` (Vite: all 4, Next.js: tailwind only) |
|
|
87
|
+
| **State** | `none`, `zustand`, `jotai`, `redux` |
|
|
80
88
|
| **Testing** | `full`, `unit-component`, `none` |
|
|
81
89
|
| **Unit runner** | `vitest`, `jest` |
|
|
82
90
|
| **E2E runner** | `playwright`, `cypress` |
|
|
83
91
|
| **Data fetching** | TanStack Query on/off |
|
|
84
92
|
| **Package manager** | `npm`, `yarn`, `pnpm` |
|
|
85
|
-
| **Formatting** | Prettier on/off |
|
|
86
93
|
| **Git** | init on/off |
|
|
87
94
|
|
|
95
|
+
## Dependency versions
|
|
96
|
+
|
|
97
|
+
The CLI uses pinned, tested versions for all dependencies:
|
|
98
|
+
|
|
99
|
+
| Package | Version |
|
|
100
|
+
|---|---|
|
|
101
|
+
| React | ^19.0.0 |
|
|
102
|
+
| Vite | ^6.0.7 |
|
|
103
|
+
| Next.js | ^16.1.6 |
|
|
104
|
+
| Tailwind CSS | ^4.0.0 |
|
|
105
|
+
| TanStack Query | ^5.62.10 |
|
|
106
|
+
| Vitest | ^2.1.8 |
|
|
107
|
+
| Playwright | ^1.49.1 |
|
|
108
|
+
| TypeScript | ^5.7.2 |
|
|
109
|
+
|
|
88
110
|
## Screenshot
|
|
111
|
+
|
|
89
112
|
<img width="709" height="1047" alt="image" src="https://github.com/user-attachments/assets/dc8956a9-473b-4001-8c2d-0b3b54f29583" />
|
|
90
113
|
|
|
91
114
|
## Next steps (after generation)
|
|
@@ -96,9 +119,9 @@ npm install
|
|
|
96
119
|
npm run dev
|
|
97
120
|
```
|
|
98
121
|
|
|
99
|
-
## Advanced:
|
|
122
|
+
## Advanced: API exports
|
|
100
123
|
|
|
101
|
-
This package exposes
|
|
124
|
+
This package exposes advanced entrypoints for tooling integration:
|
|
102
125
|
|
|
103
126
|
### Config schema (Zod)
|
|
104
127
|
|
|
@@ -114,24 +137,30 @@ const parsed = ProjectConfigSchema.parse(DEFAULT_CONFIG);
|
|
|
114
137
|
import { TemplateRegistry } from 'create-react-forge/templates';
|
|
115
138
|
|
|
116
139
|
const registry = new TemplateRegistry();
|
|
117
|
-
|
|
140
|
+
const templates = registry.loadTemplatesForConfig({
|
|
141
|
+
runtime: 'vite',
|
|
142
|
+
styling: { solution: 'tailwind' },
|
|
143
|
+
stateManagement: 'zustand',
|
|
144
|
+
testing: { enabled: true, unit: { runner: 'vitest' }, e2e: { enabled: true, runner: 'playwright' } },
|
|
145
|
+
dataFetching: { enabled: true },
|
|
146
|
+
});
|
|
118
147
|
```
|
|
119
148
|
|
|
120
149
|
## Troubleshooting
|
|
121
150
|
|
|
122
|
-
-
|
|
123
|
-
- **Node version issues**: ensure `node -v` is **
|
|
151
|
+
- **"Directory already exists"**: pick a new project directory (or delete the existing folder).
|
|
152
|
+
- **Node version issues**: ensure `node -v` is **20.9.0+**.
|
|
124
153
|
- **Install step**: dependencies are not installed automatically — run your package manager install in the generated folder.
|
|
125
154
|
|
|
126
155
|
## Architecture & development
|
|
127
156
|
|
|
128
|
-
See [ARCHITECTURE.md](
|
|
157
|
+
See [ARCHITECTURE.md](./ARCHITECTURE.md) for internal design details.
|
|
129
158
|
|
|
130
159
|
```bash
|
|
131
160
|
npm install
|
|
132
|
-
npm run dev
|
|
133
|
-
npm run test
|
|
134
|
-
npm run build
|
|
161
|
+
npm run dev # Run CLI in development
|
|
162
|
+
npm run test # Run tests
|
|
163
|
+
npm run build # Build to dist/
|
|
135
164
|
```
|
|
136
165
|
|
|
137
166
|
## License
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare function promptAnswersToConfig(answers: PromptAnswers): {
|
|
|
10
10
|
styling: {
|
|
11
11
|
solution: "css" | "tailwind" | "styled-components" | "css-modules";
|
|
12
12
|
};
|
|
13
|
-
stateManagement: "none" | "redux" | "zustand";
|
|
13
|
+
stateManagement: "none" | "redux" | "zustand" | "jotai";
|
|
14
14
|
dataFetching: {
|
|
15
15
|
enabled: boolean;
|
|
16
16
|
library: "tanstack-query";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,QAAQ,EAAE,YAAY,GAAG,YAAY,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC5C,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,QAAQ,EAAE,YAAY,GAAG,YAAY,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC5C,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAsIxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnF"}
|
package/dist/cli/prompts.js
CHANGED
|
@@ -33,18 +33,32 @@ export async function promptForProjectDetails(suggestedName) {
|
|
|
33
33
|
{ name: 'JavaScript', value: 'javascript' },
|
|
34
34
|
],
|
|
35
35
|
}));
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
// Styling options are conditional based on runtime
|
|
37
|
+
// Vite: 4 options (tailwind, styled-components, css-modules, css)
|
|
38
|
+
// Next.js: auto-select tailwind (best practice for App Router)
|
|
39
|
+
let styling;
|
|
40
|
+
if (runtime === 'vite') {
|
|
41
|
+
styling = (await select({
|
|
42
|
+
message: 'Styling solution:',
|
|
43
|
+
choices: [
|
|
44
|
+
{ name: STYLING_DESCRIPTIONS.tailwind, value: 'tailwind' },
|
|
45
|
+
{ name: STYLING_DESCRIPTIONS['styled-components'], value: 'styled-components' },
|
|
46
|
+
{ name: STYLING_DESCRIPTIONS['css-modules'], value: 'css-modules' },
|
|
47
|
+
{ name: STYLING_DESCRIPTIONS.css, value: 'css' },
|
|
48
|
+
],
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Next.js - auto-select tailwind
|
|
53
|
+
styling = 'tailwind';
|
|
54
|
+
console.log(' ✓ Styling: Tailwind CSS (recommended for Next.js)');
|
|
55
|
+
}
|
|
43
56
|
const stateManagement = (await select({
|
|
44
57
|
message: 'State management:',
|
|
45
58
|
choices: [
|
|
46
59
|
{ name: STATE_DESCRIPTIONS.none, value: 'none' },
|
|
47
60
|
{ name: STATE_DESCRIPTIONS.zustand, value: 'zustand' },
|
|
61
|
+
{ name: STATE_DESCRIPTIONS.jotai, value: 'jotai' },
|
|
48
62
|
{ name: STATE_DESCRIPTIONS.redux, value: 'redux' },
|
|
49
63
|
],
|
|
50
64
|
}));
|
package/dist/cli/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAkB1J;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAsB;IAEtB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,aAAa,IAAI,QAAQ;QAClC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK;gBAAE,OAAO,0BAA0B,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B,OAAO,0DAA0D,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,KAAK,WAAW,EAAE;KAC5B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;YAClD,EAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;SACvD;KACF,CAAC,CAAsB,CAAC;IAEzB,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC;QAC7B,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,YAAY,EAAE;YACzD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;SAC5C;KACF,CAAC,CAAgC,CAAC;IAEnC,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare const DEFAULTS: {
|
|
|
6
6
|
styling: {
|
|
7
7
|
solution: "css" | "tailwind" | "styled-components" | "css-modules";
|
|
8
8
|
};
|
|
9
|
-
stateManagement: "none" | "redux" | "zustand";
|
|
9
|
+
stateManagement: "none" | "redux" | "zustand" | "jotai";
|
|
10
10
|
dataFetching: {
|
|
11
11
|
enabled: boolean;
|
|
12
12
|
library: "tanstack-query";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAC;AAEvC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAC;AAEvC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKrD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAatF,CAAC"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -14,6 +14,7 @@ export const STATE_DESCRIPTIONS = {
|
|
|
14
14
|
none: 'No state management',
|
|
15
15
|
redux: 'Redux Toolkit - Predictable state container',
|
|
16
16
|
zustand: 'Zustand - Lightweight state management',
|
|
17
|
+
jotai: 'Jotai - Primitive and flexible state management',
|
|
17
18
|
};
|
|
18
19
|
export const TEST_RUNNER_DESCRIPTIONS = {
|
|
19
20
|
vitest: 'Vitest - Lightning-fast unit tests',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,IAAI,EAAE,+CAA+C;IACrD,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,GAAG,EAAE,4BAA4B;IACjC,QAAQ,EAAE,wCAAwC;IAClD,mBAAmB,EAAE,+BAA+B;IACpD,aAAa,EAAE,8BAA8B;CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,6CAA6C;IACpD,OAAO,EAAE,wCAAwC;
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,IAAI,EAAE,+CAA+C;IACrD,MAAM,EAAE,8CAA8C;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,GAAG,EAAE,4BAA4B;IACjC,QAAQ,EAAE,wCAAwC;IAClD,mBAAmB,EAAE,+BAA+B;IACpD,aAAa,EAAE,8BAA8B;CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,6CAA6C;IACpD,OAAO,EAAE,wCAAwC;IACjD,KAAK,EAAE,iDAAiD;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,MAAM,EAAE,oCAAoC;IAC5C,IAAI,EAAE,kCAAkC;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,UAAU,EAAE,wCAAwC;IACpD,OAAO,EAAE,0CAA0C;IACnD,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAsD;IACzF,GAAG,EAAE;QACH,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,UAAU;KACjB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;KAClB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;KAClB;CACF,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const LanguageSchema: z.ZodEnum<["javascript", "typescript"]>;
|
|
|
9
9
|
export type Language = z.infer<typeof LanguageSchema>;
|
|
10
10
|
export declare const StylingSchema: z.ZodEnum<["css", "tailwind", "styled-components", "css-modules"]>;
|
|
11
11
|
export type Styling = z.infer<typeof StylingSchema>;
|
|
12
|
-
export declare const StateManagementSchema: z.ZodEnum<["none", "redux", "zustand"]>;
|
|
12
|
+
export declare const StateManagementSchema: z.ZodEnum<["none", "redux", "zustand", "jotai"]>;
|
|
13
13
|
export type StateManagement = z.infer<typeof StateManagementSchema>;
|
|
14
14
|
export declare const PackageManagerSchema: z.ZodEnum<["npm", "yarn", "pnpm"]>;
|
|
15
15
|
export type PackageManager = z.infer<typeof PackageManagerSchema>;
|
|
@@ -129,7 +129,7 @@ export declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
129
129
|
}, {
|
|
130
130
|
solution?: "css" | "tailwind" | "styled-components" | "css-modules" | undefined;
|
|
131
131
|
}>;
|
|
132
|
-
stateManagement: z.ZodDefault<z.ZodEnum<["none", "redux", "zustand"]>>;
|
|
132
|
+
stateManagement: z.ZodDefault<z.ZodEnum<["none", "redux", "zustand", "jotai"]>>;
|
|
133
133
|
dataFetching: z.ZodObject<{
|
|
134
134
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
135
135
|
library: z.ZodDefault<z.ZodLiteral<"tanstack-query">>;
|
|
@@ -237,7 +237,7 @@ export declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
237
237
|
styling: {
|
|
238
238
|
solution: "css" | "tailwind" | "styled-components" | "css-modules";
|
|
239
239
|
};
|
|
240
|
-
stateManagement: "none" | "redux" | "zustand";
|
|
240
|
+
stateManagement: "none" | "redux" | "zustand" | "jotai";
|
|
241
241
|
dataFetching: {
|
|
242
242
|
enabled: boolean;
|
|
243
243
|
library: "tanstack-query";
|
|
@@ -303,7 +303,7 @@ export declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
303
303
|
};
|
|
304
304
|
runtime?: "vite" | "nextjs" | undefined;
|
|
305
305
|
language?: "javascript" | "typescript" | undefined;
|
|
306
|
-
stateManagement?: "none" | "redux" | "zustand" | undefined;
|
|
306
|
+
stateManagement?: "none" | "redux" | "zustand" | "jotai" | undefined;
|
|
307
307
|
packageManager?: "npm" | "yarn" | "pnpm" | undefined;
|
|
308
308
|
plugins?: {
|
|
309
309
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AAEH,eAAO,MAAM,aAAa,+BAA6B,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc,yCAAuC,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,aAAa,oEAAkE,CAAC;AAC7F,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AAEH,eAAO,MAAM,aAAa,+BAA6B,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc,yCAAuC,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,aAAa,oEAAkE,CAAC;AAC7F,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,qBAAqB,kDAAgD,CAAC;AACnF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,oBAAoB,oCAAkC,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,oBAAoB,+BAA6B,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,mBAAmB,8CAA4C,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe;;;;;;;;;EAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,aAqC5B,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -6,7 +6,7 @@ import { z } from 'zod';
|
|
|
6
6
|
export const RuntimeSchema = z.enum(['vite', 'nextjs']);
|
|
7
7
|
export const LanguageSchema = z.enum(['javascript', 'typescript']);
|
|
8
8
|
export const StylingSchema = z.enum(['css', 'tailwind', 'styled-components', 'css-modules']);
|
|
9
|
-
export const StateManagementSchema = z.enum(['none', 'redux', 'zustand']);
|
|
9
|
+
export const StateManagementSchema = z.enum(['none', 'redux', 'zustand', 'jotai']);
|
|
10
10
|
export const PackageManagerSchema = z.enum(['npm', 'yarn', 'pnpm']);
|
|
11
11
|
export const UnitTestRunnerSchema = z.enum(['vitest', 'jest']);
|
|
12
12
|
export const E2ETestRunnerSchema = z.enum(['playwright', 'cypress', 'none']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;AAG7F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/docs/index.d.ts
CHANGED
package/dist/docs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC"}
|
package/dist/docs/index.js
CHANGED
package/dist/docs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme-generator.d.ts","sourceRoot":"","sources":["../../src/docs/readme-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAyPzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6D5D"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate badge URLs for tech stack
|
|
3
|
+
*/
|
|
4
|
+
function generateBadges(config) {
|
|
5
|
+
const badges = [];
|
|
6
|
+
// Runtime badge
|
|
7
|
+
if (config.runtime === 'vite') {
|
|
8
|
+
badges.push('');
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
badges.push('');
|
|
12
|
+
}
|
|
13
|
+
// Language badge
|
|
14
|
+
if (config.language === 'typescript') {
|
|
15
|
+
badges.push('');
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
badges.push('');
|
|
19
|
+
}
|
|
20
|
+
// Styling badge
|
|
21
|
+
const stylingBadges = {
|
|
22
|
+
tailwind: '',
|
|
23
|
+
'styled-components': '',
|
|
24
|
+
'css-modules': '',
|
|
25
|
+
css: '',
|
|
26
|
+
};
|
|
27
|
+
if (stylingBadges[config.styling.solution]) {
|
|
28
|
+
badges.push(stylingBadges[config.styling.solution]);
|
|
29
|
+
}
|
|
30
|
+
// State management badge
|
|
31
|
+
const stateBadges = {
|
|
32
|
+
redux: '',
|
|
33
|
+
zustand: '',
|
|
34
|
+
jotai: '',
|
|
35
|
+
};
|
|
36
|
+
if (config.stateManagement !== 'none' && stateBadges[config.stateManagement]) {
|
|
37
|
+
badges.push(stateBadges[config.stateManagement]);
|
|
38
|
+
}
|
|
39
|
+
// Data fetching badge
|
|
40
|
+
if (config.dataFetching.enabled) {
|
|
41
|
+
badges.push('');
|
|
42
|
+
}
|
|
43
|
+
// Testing badges
|
|
44
|
+
if (config.testing.enabled) {
|
|
45
|
+
const testBadges = {
|
|
46
|
+
vitest: '',
|
|
47
|
+
jest: '',
|
|
48
|
+
};
|
|
49
|
+
if (testBadges[config.testing.unit.runner]) {
|
|
50
|
+
badges.push(testBadges[config.testing.unit.runner]);
|
|
51
|
+
}
|
|
52
|
+
if (config.testing.e2e.enabled) {
|
|
53
|
+
const e2eBadges = {
|
|
54
|
+
playwright: '',
|
|
55
|
+
cypress: '',
|
|
56
|
+
};
|
|
57
|
+
if (e2eBadges[config.testing.e2e.runner]) {
|
|
58
|
+
badges.push(e2eBadges[config.testing.e2e.runner]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return badges.join(' ');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get package manager commands
|
|
66
|
+
*/
|
|
67
|
+
function getPackageManagerCommands(pm) {
|
|
68
|
+
const commands = {
|
|
69
|
+
npm: {
|
|
70
|
+
install: 'npm install',
|
|
71
|
+
dev: 'npm run dev',
|
|
72
|
+
build: 'npm run build',
|
|
73
|
+
test: 'npm run test',
|
|
74
|
+
},
|
|
75
|
+
yarn: {
|
|
76
|
+
install: 'yarn',
|
|
77
|
+
dev: 'yarn dev',
|
|
78
|
+
build: 'yarn build',
|
|
79
|
+
test: 'yarn test',
|
|
80
|
+
},
|
|
81
|
+
pnpm: {
|
|
82
|
+
install: 'pnpm install',
|
|
83
|
+
dev: 'pnpm dev',
|
|
84
|
+
build: 'pnpm build',
|
|
85
|
+
test: 'pnpm test',
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
return commands[pm] || commands.npm;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate scripts table based on config
|
|
92
|
+
*/
|
|
93
|
+
function generateScriptsTable(config) {
|
|
94
|
+
const pm = config.packageManager;
|
|
95
|
+
const runCmd = pm === 'npm' ? 'npm run' : pm;
|
|
96
|
+
const scripts = [
|
|
97
|
+
{ command: `${runCmd} dev`, description: 'Start development server' },
|
|
98
|
+
{ command: `${runCmd} build`, description: 'Build for production' },
|
|
99
|
+
{ command: `${runCmd} preview`, description: 'Preview production build' },
|
|
100
|
+
];
|
|
101
|
+
if (config.testing.enabled) {
|
|
102
|
+
scripts.push({ command: `${runCmd} test`, description: 'Run unit tests' });
|
|
103
|
+
scripts.push({ command: `${runCmd} test:watch`, description: 'Run tests in watch mode' });
|
|
104
|
+
scripts.push({ command: `${runCmd} test:coverage`, description: 'Run tests with coverage' });
|
|
105
|
+
if (config.testing.e2e.enabled && config.testing.e2e.runner !== 'none') {
|
|
106
|
+
scripts.push({ command: `${runCmd} test:e2e`, description: 'Run E2E tests' });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (config.linting.prettier) {
|
|
110
|
+
scripts.push({ command: `${runCmd} format`, description: 'Format code with Prettier' });
|
|
111
|
+
}
|
|
112
|
+
scripts.push({ command: `${runCmd} lint`, description: 'Lint code' });
|
|
113
|
+
const tableRows = scripts
|
|
114
|
+
.map((s) => `| \`${s.command}\` | ${s.description} |`)
|
|
115
|
+
.join('\n');
|
|
116
|
+
return `| Command | Description |
|
|
117
|
+
|---------|-------------|
|
|
118
|
+
${tableRows}`;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Generate project structure section
|
|
122
|
+
*/
|
|
123
|
+
function generateProjectStructure(config) {
|
|
124
|
+
const isNextjs = config.runtime === 'nextjs';
|
|
125
|
+
let structure = `\`\`\`
|
|
126
|
+
${config.name}/
|
|
127
|
+
├── src/
|
|
128
|
+
│ ├── components/ # Reusable UI components
|
|
129
|
+
│ │ └── ui/ # Base UI primitives
|
|
130
|
+
│ ├── features/ # Feature-based modules
|
|
131
|
+
│ ├── hooks/ # Custom React hooks`;
|
|
132
|
+
if (config.dataFetching.enabled) {
|
|
133
|
+
structure += `
|
|
134
|
+
│ ├── lib/ # Third-party library configs`;
|
|
135
|
+
}
|
|
136
|
+
if (config.stateManagement !== 'none') {
|
|
137
|
+
structure += `
|
|
138
|
+
│ ├── stores/ # State management stores`;
|
|
139
|
+
}
|
|
140
|
+
structure += `
|
|
141
|
+
│ ├── styles/ # Global styles
|
|
142
|
+
│ └── types/ # TypeScript type definitions`;
|
|
143
|
+
if (isNextjs) {
|
|
144
|
+
structure += `
|
|
145
|
+
│ └── app/ # Next.js App Router pages`;
|
|
146
|
+
}
|
|
147
|
+
if (config.testing.enabled && config.testing.e2e.enabled) {
|
|
148
|
+
structure += `
|
|
149
|
+
├── tests/ # E2E tests`;
|
|
150
|
+
}
|
|
151
|
+
structure += `
|
|
152
|
+
├── public/ # Static assets
|
|
153
|
+
└── [config files] # Configuration files
|
|
154
|
+
\`\`\``;
|
|
155
|
+
return structure;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Generate documentation links based on config
|
|
159
|
+
*/
|
|
160
|
+
function generateDocLinks(config) {
|
|
161
|
+
const links = [];
|
|
162
|
+
if (config.runtime === 'vite') {
|
|
163
|
+
links.push('- [Vite Documentation](https://vitejs.dev/)');
|
|
164
|
+
links.push('- [React Router](https://reactrouter.com/)');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
links.push('- [Next.js Documentation](https://nextjs.org/docs)');
|
|
168
|
+
}
|
|
169
|
+
links.push('- [React Documentation](https://react.dev/)');
|
|
170
|
+
if (config.language === 'typescript') {
|
|
171
|
+
links.push('- [TypeScript Documentation](https://www.typescriptlang.org/docs/)');
|
|
172
|
+
}
|
|
173
|
+
const stylingDocs = {
|
|
174
|
+
tailwind: '- [Tailwind CSS Documentation](https://tailwindcss.com/docs)',
|
|
175
|
+
'styled-components': '- [styled-components Documentation](https://styled-components.com/docs)',
|
|
176
|
+
'css-modules': '- [CSS Modules](https://github.com/css-modules/css-modules)',
|
|
177
|
+
};
|
|
178
|
+
if (stylingDocs[config.styling.solution]) {
|
|
179
|
+
links.push(stylingDocs[config.styling.solution]);
|
|
180
|
+
}
|
|
181
|
+
const stateDocs = {
|
|
182
|
+
redux: '- [Redux Toolkit Documentation](https://redux-toolkit.js.org/)',
|
|
183
|
+
zustand: '- [Zustand Documentation](https://zustand-demo.pmnd.rs/)',
|
|
184
|
+
jotai: '- [Jotai Documentation](https://jotai.org/)',
|
|
185
|
+
};
|
|
186
|
+
if (config.stateManagement !== 'none' && stateDocs[config.stateManagement]) {
|
|
187
|
+
links.push(stateDocs[config.stateManagement]);
|
|
188
|
+
}
|
|
189
|
+
if (config.dataFetching.enabled) {
|
|
190
|
+
links.push('- [TanStack Query Documentation](https://tanstack.com/query/latest)');
|
|
191
|
+
}
|
|
192
|
+
if (config.testing.enabled) {
|
|
193
|
+
const testDocs = {
|
|
194
|
+
vitest: '- [Vitest Documentation](https://vitest.dev/)',
|
|
195
|
+
jest: '- [Jest Documentation](https://jestjs.io/)',
|
|
196
|
+
};
|
|
197
|
+
if (testDocs[config.testing.unit.runner]) {
|
|
198
|
+
links.push(testDocs[config.testing.unit.runner]);
|
|
199
|
+
}
|
|
200
|
+
links.push('- [Testing Library](https://testing-library.com/docs/react-testing-library/intro/)');
|
|
201
|
+
if (config.testing.e2e.enabled) {
|
|
202
|
+
const e2eDocs = {
|
|
203
|
+
playwright: '- [Playwright Documentation](https://playwright.dev/)',
|
|
204
|
+
cypress: '- [Cypress Documentation](https://docs.cypress.io/)',
|
|
205
|
+
};
|
|
206
|
+
if (e2eDocs[config.testing.e2e.runner]) {
|
|
207
|
+
links.push(e2eDocs[config.testing.e2e.runner]);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return links.join('\n');
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Generate a dynamic README.md for the project
|
|
215
|
+
*/
|
|
216
|
+
export function generateReadme(config) {
|
|
217
|
+
const badges = generateBadges(config);
|
|
218
|
+
const commands = getPackageManagerCommands(config.packageManager);
|
|
219
|
+
const scriptsTable = generateScriptsTable(config);
|
|
220
|
+
const projectStructure = generateProjectStructure(config);
|
|
221
|
+
const docLinks = generateDocLinks(config);
|
|
222
|
+
const runtimeName = config.runtime === 'vite' ? 'Vite' : 'Next.js';
|
|
223
|
+
const description = `A production-ready React application built with ${runtimeName}, scaffolded by create-react-forge.`;
|
|
224
|
+
return `# ${config.name}
|
|
225
|
+
|
|
226
|
+
${badges}
|
|
227
|
+
|
|
228
|
+
${description}
|
|
229
|
+
|
|
230
|
+
## Prerequisites
|
|
231
|
+
|
|
232
|
+
- Node.js 18.x or higher
|
|
233
|
+
- ${config.packageManager}
|
|
234
|
+
|
|
235
|
+
## Getting Started
|
|
236
|
+
|
|
237
|
+
1. Install dependencies:
|
|
238
|
+
|
|
239
|
+
\`\`\`bash
|
|
240
|
+
${commands.install}
|
|
241
|
+
\`\`\`
|
|
242
|
+
|
|
243
|
+
2. Start the development server:
|
|
244
|
+
|
|
245
|
+
\`\`\`bash
|
|
246
|
+
${commands.dev}
|
|
247
|
+
\`\`\`
|
|
248
|
+
|
|
249
|
+
3. Open [http://localhost:${config.runtime === 'nextjs' ? '3000' : '5173'}](http://localhost:${config.runtime === 'nextjs' ? '3000' : '5173'}) in your browser.
|
|
250
|
+
|
|
251
|
+
## Available Scripts
|
|
252
|
+
|
|
253
|
+
${scriptsTable}
|
|
254
|
+
|
|
255
|
+
## Project Structure
|
|
256
|
+
|
|
257
|
+
${projectStructure}
|
|
258
|
+
|
|
259
|
+
## Tech Stack
|
|
260
|
+
|
|
261
|
+
- **Runtime**: ${runtimeName}
|
|
262
|
+
- **Language**: ${config.language === 'typescript' ? 'TypeScript' : 'JavaScript'}
|
|
263
|
+
- **Styling**: ${config.styling.solution}
|
|
264
|
+
${config.stateManagement !== 'none' ? `- **State Management**: ${config.stateManagement}\n` : ''}\
|
|
265
|
+
${config.dataFetching.enabled ? `- **Data Fetching**: TanStack Query\n` : ''}\
|
|
266
|
+
${config.testing.enabled ? `- **Testing**: ${config.testing.unit.runner}${config.testing.e2e.enabled ? ` + ${config.testing.e2e.runner}` : ''}\n` : ''}
|
|
267
|
+
## Documentation
|
|
268
|
+
|
|
269
|
+
${docLinks}
|
|
270
|
+
|
|
271
|
+
## License
|
|
272
|
+
|
|
273
|
+
MIT
|
|
274
|
+
`;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=readme-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme-generator.js","sourceRoot":"","sources":["../../src/docs/readme-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,SAAS,CAAmB;gBAExB,MAAM,EAAE,aAAa;IAMjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAuG3C;;OAEG;IACH,OAAO,CAAC,aAAa;IA+DrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAQtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGtF"}
|
package/dist/generator/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
1
2
|
import { execSync } from 'child_process';
|
|
2
3
|
import { existsSync } from 'fs';
|
|
3
4
|
import ora from 'ora';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
5
|
import { ProjectAssembler } from '../assembler/index.js';
|
|
6
|
+
import { generateArchitectureDoc, generateReadme } from '../docs/index.js';
|
|
6
7
|
import { TemplateRegistry } from '../templates/registry.js';
|
|
7
|
-
import { generateArchitectureDoc } from '../docs/architecture-generator.js';
|
|
8
8
|
/**
|
|
9
9
|
* Project generator - orchestrates the entire generation flow
|
|
10
10
|
*/
|
|
@@ -53,6 +53,9 @@ export class ProjectGenerator {
|
|
|
53
53
|
// Add Architecture Documentation
|
|
54
54
|
const archDoc = generateArchitectureDoc(this.config);
|
|
55
55
|
this.assembler.addFile('ARCHITECTURE.md', archDoc);
|
|
56
|
+
// Add README Documentation
|
|
57
|
+
const readmeDoc = generateReadme(this.config);
|
|
58
|
+
this.assembler.addFile('README.md', readmeDoc);
|
|
56
59
|
// Step 4: Merge dependencies
|
|
57
60
|
const { dependencies, devDependencies, scripts } = this.registry.getMergedDependencies();
|
|
58
61
|
this.assembler.mergeTemplateDeps({ dependencies, devDependencies, scripts });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "state-jotai",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Jotai state management with primitive and flexible atoms",
|
|
5
|
+
"compatibleWith": ["runtime-vite", "runtime-nextjs"],
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"jotai": "^2.10.0"
|
|
8
|
+
},
|
|
9
|
+
"devDependencies": {},
|
|
10
|
+
"scripts": {},
|
|
11
|
+
"filePatterns": {
|
|
12
|
+
"include": ["**/*"],
|
|
13
|
+
"exclude": ["manifest.json"]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { atom } from 'jotai';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Auth atoms for user authentication state
|
|
5
|
+
*/
|
|
6
|
+
export interface User {
|
|
7
|
+
id: string;
|
|
8
|
+
email: string;
|
|
9
|
+
name: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const userAtom = atom<User | null>(null);
|
|
13
|
+
export const isAuthenticatedAtom = atom((get) => get(userAtom) !== null);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Notification atoms for app-wide notifications
|
|
17
|
+
*/
|
|
18
|
+
export interface Notification {
|
|
19
|
+
id: string;
|
|
20
|
+
type: 'success' | 'error' | 'warning' | 'info';
|
|
21
|
+
message: string;
|
|
22
|
+
title?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const notificationsAtom = atom<Notification[]>([]);
|
|
26
|
+
|
|
27
|
+
// Derived atom to add a notification
|
|
28
|
+
export const addNotificationAtom = atom(
|
|
29
|
+
null,
|
|
30
|
+
(get, set, notification: Omit<Notification, 'id'>) => {
|
|
31
|
+
const id = crypto.randomUUID();
|
|
32
|
+
set(notificationsAtom, [...get(notificationsAtom), { ...notification, id }]);
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
// Derived atom to remove a notification
|
|
37
|
+
export const removeNotificationAtom = atom(
|
|
38
|
+
null,
|
|
39
|
+
(get, set, id: string) => {
|
|
40
|
+
set(
|
|
41
|
+
notificationsAtom,
|
|
42
|
+
get(notificationsAtom).filter((n) => n.id !== id)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Theme atom for dark/light mode
|
|
49
|
+
*/
|
|
50
|
+
export type Theme = 'light' | 'dark' | 'system';
|
|
51
|
+
export const themeAtom = atom<Theme>('system');
|
|
52
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jotai Store Exports
|
|
3
|
+
*
|
|
4
|
+
* This file exports all atoms for easy importing throughout the application.
|
|
5
|
+
* Import atoms from this file to use Jotai state management.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { userAtom, notificationsAtom } from '@/stores';
|
|
9
|
+
* import { useAtom, useAtomValue, useSetAtom } from 'jotai';
|
|
10
|
+
*
|
|
11
|
+
* // Read and write
|
|
12
|
+
* const [user, setUser] = useAtom(userAtom);
|
|
13
|
+
*
|
|
14
|
+
* // Read only
|
|
15
|
+
* const notifications = useAtomValue(notificationsAtom);
|
|
16
|
+
*
|
|
17
|
+
* // Write only
|
|
18
|
+
* const addNotification = useSetAtom(addNotificationAtom);
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
addNotificationAtom, isAuthenticatedAtom,
|
|
23
|
+
// Notification atoms
|
|
24
|
+
notificationsAtom, removeNotificationAtom,
|
|
25
|
+
// Theme atom
|
|
26
|
+
themeAtom,
|
|
27
|
+
// Auth atoms
|
|
28
|
+
userAtom, type Notification, type Theme, type User
|
|
29
|
+
} from './atoms.js';
|
|
30
|
+
|