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 CHANGED
@@ -1,10 +1,14 @@
1
+ [![CodeQL Security Analysis](https://github.com/chiragmak10/create-react-forge/actions/workflows/codeql.yml/badge.svg)](https://github.com/chiragmak10/create-react-forge/actions/workflows/codeql.yml)
2
+ [![Release](https://github.com/chiragmak10/create-react-forge/actions/workflows/release.yml/badge.svg)](https://github.com/chiragmak10/create-react-forge/actions/workflows/release.yml)
3
+ [![Dependency Review](https://github.com/chiragmak10/create-react-forge/actions/workflows/dependency-review.yml/badge.svg)](https://github.com/chiragmak10/create-react-forge/actions/workflows/dependency-review.yml)
4
+ [![CI](https://github.com/chiragmak10/create-react-forge/actions/workflows/ci.yml/badge.svg)](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 **>= 18**
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 repo (depending on your answers)
31
- - Print the next steps commands
34
+ - Optionally initialize a git repository
35
+ - Print the "next steps" commands
32
36
 
33
- Note: it **does not automatically install dependencies** — youll run your package manager install after generation.
37
+ Note: it **does not automatically install dependencies** — you'll run your package manager install after generation.
34
38
 
35
- ## Interactive prompts (current)
39
+ ## Interactive prompts
36
40
 
37
- The CLI is currently **prompt-driven**. Youll choose:
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, CSS, Styled Components, or CSS Modules
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 (summary)
80
+ ## Configuration options
73
81
 
74
82
  | Category | Choices |
75
83
  |---|---|
76
84
  | **Runtime** | `vite`, `nextjs` |
77
85
  | **Language** | `typescript`, `javascript` |
78
- | **Styling** | `tailwind`, `css`, `styled-components`, `css-modules` |
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: config schema & templates API
122
+ ## Advanced: API exports
100
123
 
101
- This package exposes a couple of **advanced** entrypoints intended for tooling:
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
- // registry.loadTemplatesForConfig(...) etc.
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
- - **“Directory already exists”**: pick a new project directory (or delete the existing folder).
123
- - **Node version issues**: ensure `node -v` is **18+**.
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](https://github.com/chiragmak10/react-setup/blob/master/ARCHITECTURE.md) for internal design details.
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
@@ -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,CAyHxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnF"}
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"}
@@ -33,18 +33,32 @@ export async function promptForProjectDetails(suggestedName) {
33
33
  { name: 'JavaScript', value: 'javascript' },
34
34
  ],
35
35
  }));
36
- const styling = (await select({
37
- message: 'Styling solution:',
38
- choices: [
39
- { name: STYLING_DESCRIPTIONS.tailwind, value: 'tailwind' },
40
- { name: 'None - Plain CSS', value: 'css' },
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
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"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"}
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,mDAAmD;IACnD,kEAAkE;IAClE,+DAA+D;IAC/D,IAAI,OAAe,CAAC;IACpB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC;YACtB,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC1D,EAAE,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC/E,EAAE,IAAI,EAAE,oBAAoB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;gBACnE,EAAE,IAAI,EAAE,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;aACjD;SACF,CAAC,CAAW,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,iCAAiC;QACjC,OAAO,GAAG,UAAU,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,MAAM,MAAM,CAAC;QACpC,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;YAChD,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;YACtD,EAAE,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;YAClD,EAAE,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;SACnD;KACF,CAAC,CAAW,CAAC;IAEd,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/D,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAC1D,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;SACxC;KACF,CAAC,CAAuC,CAAC;IAE1C,IAAI,UAAU,GAAsB,QAAQ,CAAC;IAC7C,IAAI,SAAS,GAAsC,YAAY,CAAC;IAEhE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC;YACzB,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC1D,EAAE,IAAI,EAAE,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;aACvD;SACF,CAAC,CAAsB,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,SAAS,GAAG,CAAC,MAAM,MAAM,CAAC;YACxB,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;gBACjE,EAAE,IAAI,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;aAC5D;SACF,CAAC,CAA6B,CAAC;IAClC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;QACjC,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,MAAM,MAAM,CAAC;QACnC,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SAChC;KACF,CAAC,CAA4B,CAAC;IAE/B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO;QACP,eAAe;QACf,OAAO;QACP,UAAU;QACV,SAAS;QACT,YAAY;QACZ,cAAc;QACd,GAAG;QACH,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB,UAAU;IAC/D,OAAO,MAAM,OAAO,CAAC;QACnB,OAAO;QACP,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC"}
@@ -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,CAIrD,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"}
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"}
@@ -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;CAClD,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"}
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"}
@@ -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,yCAAuC,CAAC;AAC1E,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"}
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"}
@@ -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":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './architecture-generator.js';
2
+ export * from './readme-generator.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,2 +1,3 @@
1
1
  export * from './architecture-generator.js';
2
+ export * from './readme-generator.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -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,6 @@
1
+ import type { ProjectConfig } from '../config/schema.js';
2
+ /**
3
+ * Generate a dynamic README.md for the project
4
+ */
5
+ export declare function generateReadme(config: ProjectConfig): string;
6
+ //# sourceMappingURL=readme-generator.d.ts.map
@@ -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('![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat&logo=vite&logoColor=white)');
9
+ }
10
+ else {
11
+ badges.push('![Next.js](https://img.shields.io/badge/Next.js-000000?style=flat&logo=nextdotjs&logoColor=white)');
12
+ }
13
+ // Language badge
14
+ if (config.language === 'typescript') {
15
+ badges.push('![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)');
16
+ }
17
+ else {
18
+ badges.push('![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)');
19
+ }
20
+ // Styling badge
21
+ const stylingBadges = {
22
+ tailwind: '![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-06B6D4?style=flat&logo=tailwindcss&logoColor=white)',
23
+ 'styled-components': '![styled-components](https://img.shields.io/badge/styled--components-DB7093?style=flat&logo=styled-components&logoColor=white)',
24
+ 'css-modules': '![CSS Modules](https://img.shields.io/badge/CSS_Modules-1572B6?style=flat&logo=css3&logoColor=white)',
25
+ css: '![CSS](https://img.shields.io/badge/CSS-1572B6?style=flat&logo=css3&logoColor=white)',
26
+ };
27
+ if (stylingBadges[config.styling.solution]) {
28
+ badges.push(stylingBadges[config.styling.solution]);
29
+ }
30
+ // State management badge
31
+ const stateBadges = {
32
+ redux: '![Redux](https://img.shields.io/badge/Redux-764ABC?style=flat&logo=redux&logoColor=white)',
33
+ zustand: '![Zustand](https://img.shields.io/badge/Zustand-443E38?style=flat&logo=react&logoColor=white)',
34
+ jotai: '![Jotai](https://img.shields.io/badge/Jotai-000000?style=flat&logo=react&logoColor=white)',
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('![TanStack Query](https://img.shields.io/badge/TanStack_Query-FF4154?style=flat&logo=reactquery&logoColor=white)');
42
+ }
43
+ // Testing badges
44
+ if (config.testing.enabled) {
45
+ const testBadges = {
46
+ vitest: '![Vitest](https://img.shields.io/badge/Vitest-6E9F18?style=flat&logo=vitest&logoColor=white)',
47
+ jest: '![Jest](https://img.shields.io/badge/Jest-C21325?style=flat&logo=jest&logoColor=white)',
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: '![Playwright](https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white)',
55
+ cypress: '![Cypress](https://img.shields.io/badge/Cypress-17202C?style=flat&logo=cypress&logoColor=white)',
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":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;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;IAmG3C;;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"}
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"}
@@ -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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-react-forge",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Production-ready React CLI scaffolder with Vite/Next.js, testing as first-class citizen",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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
+