create-rudder-app 1.0.2 → 1.1.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,15 +1,15 @@
1
1
  # create-rudder-app
2
2
 
3
- **Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** — with auth that works, a database wired, SSR views rendering, and your pick from 25 opt-in packages, all bootstrapped through Vite + Vike.
3
+ **Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** — pick a recipe, the installer handles deps, database, auth views, and git init for you.
4
4
 
5
5
  ```bash
6
6
  pnpm create rudder-app my-app
7
- cd my-app
8
- pnpm exec prisma generate && pnpm exec prisma db push
9
- pnpm dev
7
+ cd my-app && pnpm dev
10
8
  # → http://localhost:3000 — welcome page + register/login working end-to-end
11
9
  ```
12
10
 
11
+ The installer asks four to six questions, then runs `pnpm install`, generates the Prisma client, pushes the schema (for SQLite) or asks first (for Postgres/MySQL), publishes auth views, generates Passport keys (when selected), and initializes git — all in one shot. No copy-pasting commands from the "Next Steps" panel.
12
+
13
13
  ---
14
14
 
15
15
  ## Install
@@ -29,47 +29,56 @@ Skip `[name]` to be prompted for one.
29
29
 
30
30
  ## What you get out of the box
31
31
 
32
- With the **default choices** (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui + Contact demo), you get a working fullstack app you can register into, log into, and sign out of — without writing any code:
32
+ With the **Web app recipe** (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui), you get a working fullstack app you can register into, log into, and sign out of — without writing any code:
33
33
 
34
34
  - **Welcome page at `/`** — controller-returned view, Tailwind + shadcn styled, with Log in / Register links or a signed-in user + Sign out button.
35
35
  - **Auth flow that works** — `/login`, `/register`, `/forgot-password`, `/reset-password` pages vendored into `app/Views/Auth/` (so you can customize them freely) and wired to `POST /auth/sign-in/email` / `sign-up/email` / `sign-out` / `request-password-reset` / `reset-password` endpoints.
36
- - **Database ready** — Prisma schema with a `User` + `PasswordResetToken` model, SQLite by default, a `User` ORM model.
36
+ - **Database ready** — Prisma schema with a `User` + `PasswordResetToken` model, SQLite by default, a `User` ORM model. Schema pushed automatically on install.
37
37
  - **Session-based auth** — cookie sessions via `@rudderjs/session`, `AuthMiddleware` applied to the `web` group, ghost-user-safe (see the [Request Lifecycle guide](https://github.com/rudderjs/rudder/blob/main/docs/guide/lifecycle.md)).
38
38
  - **Rate limiting** — 60 req/min globally, 10 req/min on auth endpoints out of the box.
39
39
  - **Bootstrap you can read** — `bootstrap/app.ts` in 25 lines, `bootstrap/providers.ts` shows auto-discovery, `config/` has one file per concern.
40
40
  - **Rudder CLI** — `pnpm rudder --help` lists framework commands; `routes/console.ts` shows you how to add your own.
41
- - **`/demos` index** — every demo you ticked appears as a card linking to its page; new demos picked up automatically from the shared registry.
41
+ - **Git initialized** — initial commit made for you (use `--git=false` to skip).
42
42
 
43
- If you tick **AI** you get a `/ai-chat` demo. If you tick **MCP**, `POST /mcp/echo`. If you tick **Passport**, a full OAuth 2 server at `/oauth/authorize` / `/oauth/token`. Everything is opt-in and pay-as-you-go.
43
+ Pick the **SaaS recipe** and you also get queue + mail + notifications. **Realtime** adds broadcast + sync. **API service** drops the frontend entirely. **Custom** lets you check exactly the packages you want from the full 25-package menu.
44
44
 
45
45
  ---
46
46
 
47
47
  ## Prompts
48
48
 
49
- The installer walks you through up to 10 prompts (several are conditional):
49
+ The installer asks at most six questions on the happy path:
50
50
 
51
51
  | # | Prompt | Options | Default | Condition |
52
52
  |---|--------|---------|---------|-----------|
53
53
  | 1 | Project name | any string | — | always (skipped if passed as argv) |
54
- | 2 | Database ORM | Prisma · Drizzle · None | Prisma | always |
55
- | 3 | Database driver | SQLite · PostgreSQL · MySQL | SQLite | only if ORM selected |
56
- | 4 | Packages | categorized multiselect (see below) | Authentication | always |
57
- | 5 | Frontend frameworks | React · Vue · Solid (multiselect) | React | always |
58
- | 6 | Primary framework | single select from chosen frameworks | | only if >1 framework selected |
59
- | 7 | Add Tailwind CSS? | yes / no | yes | always |
60
- | 8 | Add shadcn/ui? | yes / no | yes | only if React + Tailwind |
61
- | 9 | Demos | multiselect filtered by previous picks | Contact form | only when at least one available |
62
- | 10 | Install dependencies? | yes / no | yes | always |
63
-
64
- > **Not sure what to pick?** Accept every default — it produces the most-used stack (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui + Contact demo) and is the best-tested path. You can always add packages later.
54
+ | 2 | What are you building? *(recipe)* | Web app · SaaS · API service · Realtime · Minimal · Custom | Web app | always |
55
+ | 3 | Database | Prisma · Drizzle *(+ None for Minimal/Custom)* | Prisma | unless recipe is `minimal` |
56
+ | 4 | Database driver | SQLite · PostgreSQL · MySQL | SQLite | only when an ORM is selected |
57
+ | 5 | Frontend framework | React · Vue · Solid · None | React | unless recipe is `api-service`/`minimal` |
58
+ | 6 | Styling | Tailwind+shadcn · Tailwind · Plain CSS | Tailwind+shadcn (React) / Tailwind (Vue/Solid) | only when a framework is selected |
59
+ | 7 | Is your DB running now? | yes / no | yes | only for PostgreSQL/MySQL |
60
+ | 8 | Install and run setup? | yes / no | yes | always |
61
+
62
+ > **Not sure what to pick?** Accept every default — Web app with Prisma + SQLite + React + Tailwind + shadcn/ui is the best-tested path. You can [add packages later](#adding-packages-later).
63
+
64
+ ### Recipes (prompt 2)
65
+
66
+ | Recipe | Adds on top of the framework core | Needs ORM | Needs frontend |
67
+ |---|---|---|---|
68
+ | **Web app** *(default)* | `auth` | yes | yes |
69
+ | **SaaS** | `auth` + `queue` + `mail` + `notifications` | yes | yes |
70
+ | **API service** | `auth` + `http` | yes | no |
71
+ | **Realtime** | `auth` + `broadcast` + `sync` | yes | yes |
72
+ | **Minimal** | nothing beyond the framework core | no | no |
73
+ | **Custom** | *(prompts you with the full 25-package multiselect)* | optional | optional |
74
+
75
+ Each recipe is a curated bundle. **Custom** is the escape hatch — if you want a specific mix, pick Custom and select exactly the packages you want from the legacy multiselect (8 categories, 25 packages).
65
76
 
66
77
  ### Tier A — silent install
67
78
 
68
79
  `@rudderjs/session`, `@rudderjs/hash`, and `@rudderjs/cache` are installed unconditionally. They're required by the default bootstrap (rate-limit middleware needs cache; auth needs hash + session) so making them explicit-but-silent prevents broken projects when you don't tick Authentication.
69
80
 
70
- ### Package checklist (prompt 4)
71
-
72
- Eight categories, 24 visible rows, one pre-checked. Picking ORM=none filters out the three DB-gated rows (Authentication, Sanctum, Passport). Category labels mirror the framework README.
81
+ ### Custom recipe full package list
73
82
 
74
83
  ```
75
84
  ─── Auth & Security ───
@@ -117,33 +126,16 @@ Package-specific behavior:
117
126
 
118
127
  - **AI** — generates `config/ai.ts`, AI chat demo at `/ai-chat`, `POST /api/ai/chat`.
119
128
  - **MCP** — generates `app/Mcp/EchoServer.ts` + `EchoTool.ts` and wires `POST /mcp/echo`.
120
- - **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models. Filtered out when ORM=none.
121
-
122
- ### Demos (prompt 9)
123
-
124
- Each demo is a small view + one API endpoint, gated on the relevant package. The list is sourced from a single registry at `src/templates/demos/registry.ts` (also exported as `create-rudder-app/demos-registry` so the framework's own playground consumes it).
125
-
126
- | Demo | Gate | What it shows |
127
- |------|------|---------------|
128
- | Contact form | always | CSRF + Zod validation, FormRequest-style errors |
129
- | Cache counter | always | `Cache.get` + `Cache.set` round-trip |
130
- | Todos | ORM | CRUD wired through ORM model + interactive UI |
131
- | Queue dispatch | Queue | `ExampleJob.dispatch().send()` → handler logs |
132
- | Mail send | Mail | `Mail.to(addr).send(new DemoMail(...))` via log driver |
133
- | Notifications | Notifications + Mail | `notify(Notification.route('mail', addr), ...)` |
134
- | Localization | Localization | locale switcher + `runWithLocale` + `trans()` |
135
- | HTTP client | HTTP | `Http.retry(3, 200).timeout(5000).get(url)` against a public API |
136
- | Avatar resize | Storage + Image | upload → 256×256 WebP via `@rudderjs/image` |
137
- | Worker threads | Concurrency | sequential vs parallel `fib(n)` via `Concurrency.run()` |
138
- | System info | Process | three shell commands via `Process.run()` and `Process.pool()` |
139
- | Feature flags | Pennant + Auth | boolean / value / scoped / Lottery features + `FeatureMiddleware` |
140
- | WebSocket chat | Broadcast | real-time chat + presence over a single WS |
141
- | Yjs collaboration | Sync | CRDT live document with awareness cursors |
142
-
143
- Demos are silently skipped when the primary framework isn't React (the templates ship React only for now).
129
+ - **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models. Filtered out when ORM=none. The installer runs `pnpm rudder passport:keys` automatically to generate the RSA keypair.
144
130
 
145
131
  Always-included base packages: `core`, `router`, `server-hono`, `middleware`, `vite`, `console`, `cli`, `log`, plus the Tier A trio above.
146
132
 
133
+ ### What about demos?
134
+
135
+ Demos are no longer scaffolded into your project — they live in the [framework playground](https://github.com/rudderjs/rudder/tree/main/playground) and at [rudderjs.com/examples](https://rudderjs.com/examples). The previous "demos multiselect" added 1–15 demo pages under `app/Views/Demos/`; new users found that confusing ("is this my code?") and easy to forget to delete before deploying. The trade-off in favor of a clean scaffold won out.
136
+
137
+ If you want a guided tour, the playground runs every demo at once and is meant to be cloned + explored.
138
+
147
139
  ---
148
140
 
149
141
  ## Generated structure
@@ -239,19 +231,40 @@ Demos use the same semantic class vocabulary across all three variants — `.pag
239
231
 
240
232
  ## After scaffolding
241
233
 
242
- The installer prints the exact commands for your package manager. For reference:
234
+ When **Install and run setup** is `yes` (the default), the installer runs the whole cascade for you `pnpm install`, `rudder providers:discover`, `rudder db:generate`, `rudder db:push` (for SQLite, or after confirming for Postgres/MySQL), `rudder vendor:publish --tag=auth-views-*` (if needed), `rudder passport:keys` (when Passport is selected), and `git init` + an initial commit. On the happy path the final panel says exactly one thing:
235
+
236
+ ```
237
+ cd my-app && pnpm dev
238
+ ```
239
+
240
+ If you said **no** to install, or a cascade step failed (e.g. your Postgres wasn't reachable), the panel prints only the steps you still need to run manually. Common ones:
243
241
 
244
242
  | Step | pnpm | npm | yarn | bun |
245
243
  |------|------|-----|------|-----|
246
- | Install (if skipped) | `pnpm install` | `npm install` | `yarn install` | `bun install` |
247
- | Discover providers (if install skipped) | `pnpm rudder providers:discover` | `npm run rudder providers:discover` | `yarn rudder providers:discover` | `bun rudder providers:discover` |
248
- | Prisma generate (if Prisma) | `pnpm exec prisma generate` | `npx prisma generate` | `yarn dlx prisma generate` | `bunx prisma generate` |
249
- | Prisma db push (if Prisma) | `pnpm exec prisma db push` | `npx prisma db push` | `yarn dlx prisma db push` | `bunx prisma db push` |
250
- | Drizzle push (if Drizzle) | `pnpm exec drizzle-kit push` | `npx drizzle-kit push` | `yarn dlx drizzle-kit push` | `bunx drizzle-kit push` |
251
- | Passport keys (if Passport) | `pnpm rudder passport:keys` | `npm run rudder passport:keys` | `yarn rudder passport:keys` | `bun rudder passport:keys` |
244
+ | Install | `pnpm install` | `npm install` | `yarn install` | `bun install` |
245
+ | Discover providers | `pnpm rudder providers:discover` | `npm run rudder providers:discover` | `yarn rudder providers:discover` | `bun rudder providers:discover` |
246
+ | DB schema | `pnpm rudder db:push` | `npm run rudder db:push` | `yarn rudder db:push` | `bun rudder db:push` |
247
+ | Generate client (Prisma) | `pnpm rudder db:generate` | `npm run rudder db:generate` | `yarn rudder db:generate` | `bun rudder db:generate` |
248
+ | Publish auth views | `pnpm rudder vendor:publish --tag=auth-views-react` | `npm run rudder vendor:publish --tag=auth-views-react` | `yarn rudder vendor:publish --tag=auth-views-react` | `bun rudder vendor:publish --tag=auth-views-react` |
249
+ | Passport keys | `pnpm rudder passport:keys` | `npm run rudder passport:keys` | `yarn rudder passport:keys` | `bun rudder passport:keys` |
252
250
  | Start dev server | `pnpm dev` | `npm run dev` | `yarn dev` | `bun dev` |
253
251
 
254
- When you let the installer run **Install dependencies**, it also runs `rudder providers:discover` automatically so the app boots on first `dev`. If you skipped install, run both manually before `dev`.
252
+ ## Adding packages later
253
+
254
+ Scaffolding gives you a minimal default. When you want to grow:
255
+
256
+ ```bash
257
+ pnpm rudder add queue # installs @rudderjs/queue, generates config/queue.ts,
258
+ # wires it into config/index.ts, refreshes the manifest
259
+
260
+ pnpm rudder add ai # ANTHROPIC_API_KEY etc. — see the printed hint
261
+ pnpm rudder add telescope # debug dashboard at /telescope
262
+ pnpm rudder add passport # validates: passport requires auth + Prisma
263
+
264
+ pnpm rudder remove queue # uninstall + delete config/queue.ts + unregister
265
+ ```
266
+
267
+ Both commands are **idempotent** — re-running is safe. `add` refuses to overwrite an existing config file. `remove` refuses to break the dep graph (e.g. removing `auth` while `sanctum`/`passport` are installed prints a friendly error). See the [CLI guide](https://github.com/rudderjs/rudder/blob/main/docs/guide/rudder.md) for the full list of aliases.
255
268
 
256
269
  ---
257
270
 
@@ -270,11 +283,11 @@ pnpm rudder providers:discover
270
283
  <details>
271
284
  <summary><strong>Register or login returns 500 with a Prisma error</strong></summary>
272
285
 
273
- Usually means the schema wasn't pushed. Run:
286
+ Usually means the schema wasn't pushed. The installer normally does this for you on SQLite, and after you confirm "Is your DB running?" for Postgres/MySQL. To run it yourself:
274
287
 
275
288
  ```bash
276
- pnpm exec prisma generate
277
- pnpm exec prisma db push
289
+ pnpm rudder db:generate
290
+ pnpm rudder db:push
278
291
  ```
279
292
  </details>
280
293
 
@@ -336,13 +349,13 @@ cd rudder/create-rudder-app
336
349
  pnpm install
337
350
  pnpm build
338
351
  node dist/index.js # launches the interactive CLI from source
339
- pnpm test # 169 template tests + snapshot baseline
352
+ pnpm test # template tests + snapshot baseline
340
353
  pnpm smoke # default end-to-end smoke
354
+ pnpm smoke --profile=minimal # ORM=none + nothing else
341
355
  pnpm smoke --profile=no-db # ORM=none + observability survivability
342
- pnpm smoke --profile=demos-all # every demo at once
343
356
  ```
344
357
 
345
- Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem) plus modular `src/templates/{configs,demos,prisma,…}/`. The entrypoint `src/index.ts` handles prompts + writes + installs. Adding a new package option touches `templates/configs/`, `templates/package-json.ts`, and `src/index.ts`. Adding a new demo means one entry in `src/templates/demos/registry.ts` plus a per-demo template module the playground's `/demos` index picks it up automatically via the `create-rudder-app/demos-registry` subpath export.
358
+ Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem) plus modular `src/templates/{configs,prisma,…}/`. The entrypoint `src/index.ts` handles prompts + writes + the post-install cascade. Adding a new package option touches `templates/configs/`, `templates/package-json.ts`, and the `PACKAGE_GROUPS` map in `src/index.ts`. Adding a new recipe touches the `RECIPES` map in `src/cli-flags.ts` and (if a new prompt arm is needed) `src/index.ts`.
346
359
 
347
360
  ---
348
361
 
@@ -2,18 +2,44 @@ import type { TemplateContext } from './templates.js';
2
2
  export type Frameworks = ('react' | 'vue' | 'solid')[];
3
3
  export type Orm = 'prisma' | 'drizzle' | false;
4
4
  export type Db = 'sqlite' | 'postgresql' | 'mysql';
5
+ export type Recipe = 'web-app' | 'saas' | 'api-service' | 'realtime' | 'minimal' | 'custom';
6
+ export type Styling = 'tailwind+shadcn' | 'tailwind' | 'plain';
5
7
  export interface Answers {
6
8
  name: string;
9
+ recipe: Recipe;
7
10
  orm: Orm;
8
11
  db: Db;
9
12
  packages: TemplateContext['packages'];
13
+ /** Single framework picked in the new flow; multi-framework only via legacy --frameworks flag. */
10
14
  frameworks: Frameworks;
11
15
  primary: 'react' | 'vue' | 'solid';
12
16
  tailwind: boolean;
13
17
  shadcn: boolean;
18
+ /**
19
+ * Demos selected for scaffolding.
20
+ *
21
+ * Deprecated as a user-facing concept: the recipe-driven flow always sets
22
+ * this to `[]`. Kept on the Answers shape so the templates pipeline and
23
+ * pre-recipe tests don't need to branch — `getTemplates` still iterates
24
+ * it, finds nothing, and skips every demo block.
25
+ */
14
26
  demos: string[];
27
+ /** Whether to run `git init` + initial commit after scaffolding. */
28
+ git: boolean;
29
+ /** Whether the user's DB is currently reachable — set to false to skip `db:push`. */
30
+ dbReady: boolean;
15
31
  install: boolean;
16
32
  }
33
+ /**
34
+ * Recipe → packages preset. Each recipe is a curated bundle that covers
35
+ * what the named scenario actually needs. "Custom" carries no preset —
36
+ * the user picks packages via the (legacy) multiselect.
37
+ */
38
+ export declare const RECIPES: Record<Exclude<Recipe, 'custom'>, {
39
+ packages: ReadonlyArray<keyof TemplateContext['packages']>;
40
+ needsOrm: boolean;
41
+ needsFrontend: boolean;
42
+ }>;
17
43
  export type PartialAnswers = Partial<Answers>;
18
44
  export interface ParsedFlags {
19
45
  name: string | undefined;
@@ -28,6 +54,16 @@ export declare const DB_GATED: Set<string>;
28
54
  export declare function emptyPackages(): TemplateContext['packages'];
29
55
  export declare function packagesFromList(list: string[], orm: Orm): TemplateContext['packages'];
30
56
  export declare function parseFlags(argv: string[]): ParsedFlags;
57
+ /**
58
+ * JSON-mode required-flags validation.
59
+ *
60
+ * Two valid call shapes:
61
+ * 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
62
+ * when the recipe has `needsFrontend: true`). Everything else inferred.
63
+ * 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
64
+ * --install` (the pre-recipe contract; still supported for older
65
+ * scripts/CI).
66
+ */
31
67
  export declare function validateJsonMode(name: string | undefined, p: PartialAnswers): string[];
32
68
  export declare function resolveJsonAnswers(name: string, p: PartialAnswers): Answers;
33
69
  //# sourceMappingURL=cli-flags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-flags.d.ts","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;AACtD,MAAM,MAAM,GAAG,GAAU,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;AACrD,MAAM,MAAM,EAAE,GAAW,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAQ,MAAM,CAAA;IAClB,GAAG,EAAS,GAAG,CAAA;IACf,EAAE,EAAU,EAAE,CAAA;IACd,QAAQ,EAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,KAAK,EAAO,MAAM,EAAE,CAAA;IACpB,OAAO,EAAK,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAc,MAAM,GAAG,SAAS,CAAA;IACpC,OAAO,EAAW,cAAc,CAAA;IAChC,aAAa,EAAK,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,qBAAa,SAAU,SAAQ,KAAK;CAAG;AAEvC,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAQhE,CAAA;AAEV,eAAO,MAAM,QAAQ,aAA2C,CAAA;AAEhE,wBAAgB,aAAa,IAAI,eAAe,CAAC,UAAU,CAAC,CAI3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAWtF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CA2EtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAetF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAmB3E"}
1
+ {"version":3,"file":"cli-flags.d.ts","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;AACtD,MAAM,MAAM,GAAG,GAAU,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;AACrD,MAAM,MAAM,EAAE,GAAW,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;AAC1D,MAAM,MAAM,MAAM,GAAO,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC/F,MAAM,MAAM,OAAO,GAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;AAEjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAQ,MAAM,CAAA;IAClB,MAAM,EAAM,MAAM,CAAA;IAClB,GAAG,EAAS,GAAG,CAAA;IACf,EAAE,EAAU,EAAE,CAAA;IACd,QAAQ,EAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,kGAAkG;IAClG,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB;;;;;;;OAOG;IACH,KAAK,EAAO,MAAM,EAAE,CAAA;IACpB,oEAAoE;IACpE,GAAG,EAAS,OAAO,CAAA;IACnB,qFAAqF;IACrF,OAAO,EAAK,OAAO,CAAA;IACnB,OAAO,EAAK,OAAO,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IACtD,QAAQ,EAAK,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;IAC7D,QAAQ,EAAK,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB,CAMS,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAc,MAAM,GAAG,SAAS,CAAA;IACpC,OAAO,EAAW,cAAc,CAAA;IAChC,aAAa,EAAK,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,qBAAa,SAAU,SAAQ,KAAK;CAAG;AAEvC,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAQhE,CAAA;AAEV,eAAO,MAAM,QAAQ,aAA2C,CAAA;AAEhE,wBAAgB,aAAa,IAAI,eAAe,CAAC,UAAU,CAAC,CAI3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAWtF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAwGtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CA4BtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAqD3E"}
package/dist/cli-flags.js CHANGED
@@ -1,4 +1,15 @@
1
- import { availableDemos, DEMOS } from './templates/demos/registry.js';
1
+ /**
2
+ * Recipe → packages preset. Each recipe is a curated bundle that covers
3
+ * what the named scenario actually needs. "Custom" carries no preset —
4
+ * the user picks packages via the (legacy) multiselect.
5
+ */
6
+ export const RECIPES = {
7
+ 'web-app': { packages: ['auth'], needsOrm: true, needsFrontend: true },
8
+ 'saas': { packages: ['auth', 'queue', 'mail', 'notifications'], needsOrm: true, needsFrontend: true },
9
+ 'api-service': { packages: ['auth', 'http'], needsOrm: true, needsFrontend: false },
10
+ 'realtime': { packages: ['auth', 'broadcast', 'sync'], needsOrm: true, needsFrontend: true },
11
+ 'minimal': { packages: [], needsOrm: false, needsFrontend: false },
12
+ };
2
13
  export class FlagError extends Error {
3
14
  }
4
15
  export const PACKAGE_KEYS = [
@@ -96,20 +107,50 @@ export function parseFlags(argv) {
96
107
  partial.shadcn = flags['shadcn'] === 'true';
97
108
  if ('install' in flags)
98
109
  partial.install = flags['install'] === 'true';
99
- if (flags['demos'] !== undefined) {
100
- const list = flags['demos'].split(',').map(s => s.trim()).filter(Boolean);
101
- if (list.includes('*')) {
102
- partial.demos = ['*'];
110
+ if ('git' in flags)
111
+ partial.git = flags['git'] === 'true';
112
+ if ('db-ready' in flags)
113
+ partial.dbReady = flags['db-ready'] === 'true';
114
+ // --recipe — preset that derives orm/packages/needsFrontend.
115
+ if (flags['recipe']) {
116
+ const v = flags['recipe'];
117
+ const valid = new Set(['web-app', 'saas', 'api-service', 'realtime', 'minimal', 'custom']);
118
+ if (!valid.has(v)) {
119
+ throw new FlagError(`--recipe must be one of: ${[...valid].join(', ')} (got "${v}")`);
120
+ }
121
+ partial.recipe = v;
122
+ }
123
+ // --framework — singular shortcut. Maps to --frameworks=react + --primary-framework=react.
124
+ if (flags['framework']) {
125
+ const v = flags['framework'];
126
+ if (v !== 'react' && v !== 'vue' && v !== 'solid' && v !== 'none') {
127
+ throw new FlagError(`--framework must be one of: react, vue, solid, none (got "${v}")`);
128
+ }
129
+ if (v === 'none') {
130
+ partial.frameworks = [];
103
131
  }
104
132
  else {
105
- const valid = new Set(DEMOS.map(d => d.value));
106
- for (const d of list) {
107
- if (!valid.has(d))
108
- throw new FlagError(`--demos: unknown demo "${d}". Valid: ${[...valid].join(', ')}`);
109
- }
110
- partial.demos = list;
133
+ partial.frameworks = [v];
134
+ partial.primary = v;
111
135
  }
112
136
  }
137
+ // --styling — collapses --tailwind + --shadcn into one. Explicit --tailwind/--shadcn override.
138
+ if (flags['styling']) {
139
+ const v = flags['styling'];
140
+ if (v !== 'tailwind+shadcn' && v !== 'tailwind' && v !== 'plain') {
141
+ throw new FlagError(`--styling must be one of: tailwind+shadcn, tailwind, plain (got "${v}")`);
142
+ }
143
+ if (partial.tailwind === undefined)
144
+ partial.tailwind = v !== 'plain';
145
+ if (partial.shadcn === undefined)
146
+ partial.shadcn = v === 'tailwind+shadcn';
147
+ }
148
+ // --demos kept as a silent no-op for backwards compatibility — demos were dropped
149
+ // from the scaffolder default. Old scripts/CI passing `--demos=...` continue to
150
+ // work without error; nothing is scaffolded under /demos.
151
+ if (flags['demos'] !== undefined) {
152
+ partial.demos = [];
153
+ }
113
154
  return {
114
155
  name,
115
156
  partial,
@@ -117,10 +158,35 @@ export function parseFlags(argv) {
117
158
  forceInteractive: bools['interactive'] ?? false,
118
159
  };
119
160
  }
161
+ /**
162
+ * JSON-mode required-flags validation.
163
+ *
164
+ * Two valid call shapes:
165
+ * 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
166
+ * when the recipe has `needsFrontend: true`). Everything else inferred.
167
+ * 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
168
+ * --install` (the pre-recipe contract; still supported for older
169
+ * scripts/CI).
170
+ */
120
171
  export function validateJsonMode(name, p) {
121
172
  const missing = [];
122
173
  if (!name)
123
174
  missing.push('<project-name>');
175
+ if (p.recipe) {
176
+ // Recipe path — most fields inferred from the preset.
177
+ if (p.recipe !== 'custom' && p.recipe !== 'minimal' && !p.db)
178
+ missing.push('--db');
179
+ const preset = p.recipe === 'custom' ? null : RECIPES[p.recipe];
180
+ if (preset?.needsFrontend && !p.frameworks?.length && !p.primary) {
181
+ missing.push('--framework');
182
+ }
183
+ if (p.recipe === 'custom' && p.packages === undefined)
184
+ missing.push('--packages');
185
+ if (p.install === undefined)
186
+ missing.push('--install');
187
+ return missing;
188
+ }
189
+ // Legacy explicit path
124
190
  if (p.orm === undefined)
125
191
  missing.push('--orm');
126
192
  if (p.orm !== false && !p.db)
@@ -136,13 +202,45 @@ export function validateJsonMode(name, p) {
136
202
  if (p.frameworks?.includes('react') && p.tailwind === true && p.shadcn === undefined) {
137
203
  missing.push('--shadcn');
138
204
  }
139
- if (p.demos === undefined)
140
- missing.push('--demos');
141
205
  if (p.install === undefined)
142
206
  missing.push('--install');
143
207
  return missing;
144
208
  }
145
209
  export function resolveJsonAnswers(name, p) {
210
+ // Recipe path — derive everything from the preset, with explicit flags as overrides.
211
+ if (p.recipe) {
212
+ const recipe = p.recipe;
213
+ const preset = recipe === 'custom' ? null : RECIPES[recipe];
214
+ const orm = p.orm !== undefined
215
+ ? p.orm
216
+ : (preset?.needsOrm ? 'prisma' : false);
217
+ const db = (orm === false ? 'sqlite' : (p.db ?? 'sqlite'));
218
+ const packages = recipe === 'custom'
219
+ ? p.packages
220
+ : packagesFromList([...(preset?.packages ?? [])], orm);
221
+ // Allow explicit overrides on top of the recipe
222
+ if (recipe !== 'custom' && p.packages) {
223
+ for (const k of Object.keys(p.packages)) {
224
+ if (p.packages[k])
225
+ packages[k] = true;
226
+ }
227
+ }
228
+ const wantsFrontend = preset ? preset.needsFrontend : (p.frameworks?.length ?? 0) > 0;
229
+ const frameworks = wantsFrontend
230
+ ? (p.frameworks?.length ? p.frameworks : ['react'])
231
+ : [];
232
+ const primary = (frameworks[0] ?? p.primary ?? 'react');
233
+ const tailwind = p.tailwind ?? wantsFrontend;
234
+ const shadcn = p.shadcn ?? (wantsFrontend && primary === 'react' && tailwind);
235
+ return {
236
+ name, recipe, orm, db, packages, frameworks, primary, tailwind, shadcn,
237
+ demos: [],
238
+ git: p.git ?? true,
239
+ dbReady: p.dbReady ?? (db === 'sqlite'),
240
+ install: p.install,
241
+ };
242
+ }
243
+ // Legacy explicit path (pre-recipe)
146
244
  const orm = p.orm;
147
245
  const db = (orm === false ? 'sqlite' : p.db);
148
246
  const packages = p.packages;
@@ -150,15 +248,12 @@ export function resolveJsonAnswers(name, p) {
150
248
  const primary = p.primary ?? frameworks[0];
151
249
  const tailwind = p.tailwind;
152
250
  const shadcn = p.shadcn ?? false;
153
- let demos = [];
154
- if (p.demos) {
155
- if (p.demos.includes('*')) {
156
- demos = primary === 'react' ? availableDemos(orm, packages).map(d => d.value) : [];
157
- }
158
- else {
159
- demos = p.demos;
160
- }
161
- }
162
- return { name, orm, db, packages, frameworks, primary, tailwind, shadcn, demos, install: p.install };
251
+ return {
252
+ name, recipe: 'custom', orm, db, packages, frameworks, primary, tailwind, shadcn,
253
+ demos: [],
254
+ git: p.git ?? true,
255
+ dbReady: p.dbReady ?? (db === 'sqlite'),
256
+ install: p.install,
257
+ };
163
258
  }
164
259
  //# sourceMappingURL=cli-flags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import { intro, outro, text, select, multiselect, groupMultiselect, confirm, spinner, log, isCancel, cancel, } from '@clack/prompts';
2
+ import { intro, outro, text, select, groupMultiselect, confirm, spinner, log, isCancel, cancel, } from '@clack/prompts';
3
3
  import fs from 'node:fs/promises';
4
4
  import os from 'node:os';
5
5
  import path from 'node:path';
6
6
  import { spawn } from 'node:child_process';
7
7
  import { randomBytes } from 'node:crypto';
8
8
  import { createRequire } from 'node:module';
9
- import { getTemplates, detectPackageManager, pmExec, pmRun, pmInstall } from './templates.js';
10
- import { availableDemos } from './templates/demos/registry.js';
9
+ import { getTemplates, detectPackageManager, pmRun, pmInstall } from './templates.js';
11
10
  import { detectAgent } from './agent-detect.js';
12
- import { parseFlags, validateJsonMode, resolveJsonAnswers, packagesFromList, FlagError, DB_GATED, } from './cli-flags.js';
11
+ import { parseFlags, validateJsonMode, resolveJsonAnswers, packagesFromList, FlagError, DB_GATED, RECIPES, } from './cli-flags.js';
13
12
  // ──────────────────────────────────────────────────────────────
14
13
  // Interactive prompt flow — only prompts for what's missing
15
14
  // ──────────────────────────────────────────────────────────────
@@ -33,17 +32,49 @@ async function gatherInteractive(name, p) {
33
32
  }
34
33
  resolvedName = answer.trim();
35
34
  }
35
+ // ── Recipe (the one-question replacement for the 25-option multiselect) ──
36
+ let recipe;
37
+ if (p.recipe)
38
+ recipe = p.recipe;
39
+ else {
40
+ const recipeAnswer = await select({
41
+ message: 'What are you building?',
42
+ options: [
43
+ { value: 'web-app', label: 'Web app', hint: 'auth + ORM + frontend' },
44
+ { value: 'saas', label: 'SaaS', hint: '+ queue + mail + notifications' },
45
+ { value: 'api-service', label: 'API service', hint: 'ORM + auth + http, no frontend' },
46
+ { value: 'realtime', label: 'Realtime', hint: '+ broadcast + sync (WebSocket)' },
47
+ { value: 'minimal', label: 'Minimal', hint: 'just the framework — no extras' },
48
+ { value: 'custom', label: 'Custom', hint: 'pick packages yourself' },
49
+ ],
50
+ initialValue: 'web-app',
51
+ });
52
+ if (isCancel(recipeAnswer)) {
53
+ cancel('Cancelled.');
54
+ process.exit(0);
55
+ }
56
+ recipe = recipeAnswer;
57
+ }
58
+ const preset = recipe === 'custom' ? null : RECIPES[recipe];
59
+ // ── Database ORM + driver ──
36
60
  let orm;
37
61
  if (p.orm !== undefined)
38
62
  orm = p.orm;
63
+ else if (preset && !preset.needsOrm)
64
+ orm = false;
39
65
  else {
40
66
  const ormAnswer = await select({
41
- message: 'Database ORM',
42
- options: [
43
- { value: 'prisma', label: 'Prisma' },
44
- { value: 'drizzle', label: 'Drizzle' },
45
- { value: 'none', label: 'None', hint: 'no database' },
46
- ],
67
+ message: 'Database',
68
+ options: recipe === 'minimal' || recipe === 'custom'
69
+ ? [
70
+ { value: 'prisma', label: 'Prisma' },
71
+ { value: 'drizzle', label: 'Drizzle' },
72
+ { value: 'none', label: 'None', hint: 'no database' },
73
+ ]
74
+ : [
75
+ { value: 'prisma', label: 'Prisma' },
76
+ { value: 'drizzle', label: 'Drizzle' },
77
+ ],
47
78
  });
48
79
  if (isCancel(ormAnswer)) {
49
80
  cancel('Cancelled.');
@@ -56,10 +87,11 @@ async function gatherInteractive(name, p) {
56
87
  const dbAnswer = await select({
57
88
  message: 'Database driver',
58
89
  options: [
59
- { value: 'sqlite', label: 'SQLite' },
90
+ { value: 'sqlite', label: 'SQLite', hint: 'recommended — no setup' },
60
91
  { value: 'postgresql', label: 'PostgreSQL' },
61
92
  { value: 'mysql', label: 'MySQL / MariaDB' },
62
93
  ],
94
+ initialValue: 'sqlite',
63
95
  });
64
96
  if (isCancel(dbAnswer)) {
65
97
  cancel('Cancelled.');
@@ -67,171 +99,192 @@ async function gatherInteractive(name, p) {
67
99
  }
68
100
  db = dbAnswer;
69
101
  }
102
+ // ── Packages: recipe preset OR explicit Custom multiselect ──
70
103
  let packages;
71
104
  if (p.packages !== undefined)
72
105
  packages = p.packages;
106
+ else if (recipe !== 'custom') {
107
+ packages = packagesFromList([...(preset?.packages ?? [])], orm);
108
+ }
73
109
  else {
74
- const PACKAGE_GROUPS = {
75
- 'Auth & Security': [
76
- { value: 'auth', label: 'Authentication', hint: 'login, register, sessions' },
77
- { value: 'sanctum', label: 'Sanctum', hint: 'API tokens (SHA-256 + abilities)' },
78
- { value: 'passport', label: 'Passport', hint: 'OAuth2 server — requires Auth + Prisma' },
79
- { value: 'socialite', label: 'Socialite', hint: 'social login: GitHub, Google, Facebook, Apple' },
80
- { value: 'crypt', label: 'Crypt', hint: 'AES-256-CBC + HMAC encryption' },
81
- ],
82
- 'Infrastructure': [
83
- { value: 'queue', label: 'Queue', hint: 'background jobs' },
84
- { value: 'storage', label: 'Storage', hint: 'file uploads (local + S3)' },
85
- { value: 'scheduler', label: 'Scheduler', hint: 'cron-like task scheduling' },
86
- ],
87
- 'Communication': [
88
- { value: 'mail', label: 'Mail', hint: 'SMTP + log driver' },
89
- { value: 'notifications', label: 'Notifications', hint: 'multi-channel notifications' },
90
- { value: 'broadcast', label: 'WebSocket / Broadcast', hint: 'real-time channels' },
91
- { value: 'sync', label: 'Sync (Yjs CRDT)', hint: 'collaborative documents' },
92
- ],
93
- 'Internationalization': [
94
- { value: 'localization', label: 'Localization', hint: 'i18n — trans(), setLocale()' },
95
- ],
96
- 'Developer Experience': [
97
- { value: 'pennant', label: 'Pennant', hint: 'feature flags' },
98
- { value: 'http', label: 'HTTP', hint: 'fluent fetch client — retries, timeouts, pools' },
99
- { value: 'process', label: 'Process', hint: 'shell execution — run, pool, pipe' },
100
- { value: 'concurrency', label: 'Concurrency', hint: 'parallel execution via worker threads' },
101
- { value: 'terminal', label: 'Terminal', hint: 'rich terminal UIs from CLI commands (Ink)' },
102
- ],
103
- 'Media': [
104
- { value: 'image', label: 'Image', hint: 'resize, crop, convert (sharp wrapper)' },
105
- ],
106
- 'Observability': [
107
- { value: 'telescope', label: 'Telescope', hint: 'debug dashboard — requests, queries, jobs, exceptions' },
108
- { value: 'pulse', label: 'Pulse', hint: 'metrics dashboard — throughput, latency, hit rates' },
109
- { value: 'horizon', label: 'Horizon', hint: 'queue monitoring — lifecycle, workers, retry/delete' },
110
- ],
111
- 'AI & Tooling': [
112
- { value: 'ai', label: 'AI', hint: 'LLM providers (Anthropic, OpenAI, Google, Ollama)' },
113
- { value: 'mcp', label: 'MCP', hint: 'Model Context Protocol — expose tools/resources to LLMs' },
114
- { value: 'boost', label: 'Boost', hint: 'AI coding DX (Claude Code/Cursor/Copilot)' },
115
- ],
116
- };
117
- if (orm === false)
118
- log.info('Database not selected — auth, sanctum, and passport options are hidden.');
119
- const groupedOptions = {};
120
- for (const [group, pkgs] of Object.entries(PACKAGE_GROUPS)) {
121
- const visible = orm === false ? pkgs.filter(p => !DB_GATED.has(p.value)) : pkgs;
122
- if (visible.length > 0)
123
- groupedOptions[group] = visible;
124
- }
125
- const packageAnswer = await groupMultiselect({
126
- message: 'Select packages',
127
- options: groupedOptions,
128
- initialValues: orm === false ? [] : ['auth'],
129
- required: false,
130
- selectableGroups: false,
131
- });
132
- if (isCancel(packageAnswer)) {
133
- cancel('Cancelled.');
134
- process.exit(0);
135
- }
136
- packages = packagesFromList(packageAnswer, orm);
110
+ packages = await promptCustomPackages(orm);
137
111
  }
138
112
  if (packages.passport && (!packages.auth || orm !== 'prisma')) {
139
113
  cancel('Passport requires Auth + Prisma. Re-run and select both, or drop Passport.');
140
114
  process.exit(1);
141
115
  }
116
+ // ── Frontend framework + styling (skipped for API-service / Minimal) ──
117
+ const wantsFrontend = preset
118
+ ? preset.needsFrontend
119
+ : (recipe === 'minimal' ? false : true);
142
120
  let frameworks;
143
- if (p.frameworks)
121
+ let primary = 'react';
122
+ let tailwind;
123
+ let shadcn;
124
+ if (!wantsFrontend && p.frameworks === undefined) {
125
+ frameworks = [];
126
+ tailwind = false;
127
+ shadcn = false;
128
+ }
129
+ else if (p.frameworks?.length) {
130
+ // legacy multi-framework flag path
144
131
  frameworks = p.frameworks;
132
+ primary = p.primary ?? frameworks[0];
133
+ tailwind = p.tailwind ?? true;
134
+ shadcn = p.shadcn ?? (frameworks.includes('react') && tailwind);
135
+ }
145
136
  else {
146
- const frameworksAnswer = await multiselect({
147
- message: 'Frontend frameworks',
137
+ const frameworkAnswer = await select({
138
+ message: 'Frontend framework',
148
139
  options: [
149
- { value: 'react', label: 'React' },
140
+ { value: 'react', label: 'React', hint: 'recommended' },
150
141
  { value: 'vue', label: 'Vue' },
151
142
  { value: 'solid', label: 'Solid' },
143
+ { value: 'none', label: 'None', hint: 'server-rendered HTML only' },
152
144
  ],
153
- initialValues: ['react'],
154
- required: true,
145
+ initialValue: 'react',
155
146
  });
156
- if (isCancel(frameworksAnswer)) {
147
+ if (isCancel(frameworkAnswer)) {
157
148
  cancel('Cancelled.');
158
149
  process.exit(0);
159
150
  }
160
- frameworks = frameworksAnswer;
161
- }
162
- let primary;
163
- if (p.primary)
164
- primary = p.primary;
165
- else if (frameworks.length > 1) {
166
- const primaryAnswer = await select({
167
- message: 'Primary framework (drives main pages)',
168
- options: frameworks.map(f => ({ value: f, label: f.charAt(0).toUpperCase() + f.slice(1) })),
169
- });
170
- if (isCancel(primaryAnswer)) {
171
- cancel('Cancelled.');
172
- process.exit(0);
151
+ const fw = frameworkAnswer;
152
+ frameworks = fw === 'none' ? [] : [fw];
153
+ primary = fw === 'none' ? 'react' : fw;
154
+ if (frameworks.length === 0) {
155
+ tailwind = p.tailwind ?? false;
156
+ shadcn = false;
173
157
  }
174
- primary = primaryAnswer;
175
- }
176
- else {
177
- primary = frameworks[0];
178
- }
179
- let tailwind;
180
- if (p.tailwind !== undefined)
181
- tailwind = p.tailwind;
182
- else {
183
- const tailwindAnswer = await confirm({ message: 'Add Tailwind CSS?', initialValue: true });
184
- if (isCancel(tailwindAnswer)) {
185
- cancel('Cancelled.');
186
- process.exit(0);
158
+ else if (p.tailwind !== undefined) {
159
+ tailwind = p.tailwind;
160
+ shadcn = p.shadcn ?? (fw === 'react' && tailwind);
187
161
  }
188
- tailwind = tailwindAnswer;
189
- }
190
- let shadcn = p.shadcn ?? false;
191
- if (frameworks.includes('react') && tailwind && p.shadcn === undefined) {
192
- const shadcnAnswer = await confirm({ message: 'Add shadcn/ui?', initialValue: true });
193
- if (isCancel(shadcnAnswer)) {
194
- cancel('Cancelled.');
195
- process.exit(0);
196
- }
197
- shadcn = shadcnAnswer;
198
- }
199
- let demos = p.demos ?? [];
200
- if (primary === 'react' && p.demos === undefined) {
201
- const demoOptions = availableDemos(orm, packages);
202
- if (demoOptions.length > 0) {
203
- const demoAnswer = await multiselect({
204
- message: 'Select demos to scaffold (under /demos)',
205
- options: demoOptions.map(d => ({
206
- value: d.value,
207
- label: d.label,
208
- ...(d.hint !== undefined ? { hint: d.hint } : {}),
209
- })),
210
- initialValues: ['contact'],
211
- required: false,
162
+ else {
163
+ const stylingAnswer = await select({
164
+ message: 'Styling',
165
+ options: fw === 'react'
166
+ ? [
167
+ { value: 'tailwind+shadcn', label: 'Tailwind + shadcn/ui', hint: 'recommended' },
168
+ { value: 'tailwind', label: 'Tailwind only' },
169
+ { value: 'plain', label: 'Plain CSS', hint: 'no framework' },
170
+ ]
171
+ : [
172
+ { value: 'tailwind', label: 'Tailwind', hint: 'recommended' },
173
+ { value: 'plain', label: 'Plain CSS', hint: 'no framework' },
174
+ ],
175
+ initialValue: fw === 'react' ? 'tailwind+shadcn' : 'tailwind',
212
176
  });
213
- if (isCancel(demoAnswer)) {
177
+ if (isCancel(stylingAnswer)) {
214
178
  cancel('Cancelled.');
215
179
  process.exit(0);
216
180
  }
217
- demos = demoAnswer;
181
+ tailwind = stylingAnswer !== 'plain';
182
+ shadcn = stylingAnswer === 'tailwind+shadcn';
218
183
  }
219
184
  }
220
- else if (demos.includes('*')) {
221
- demos = primary === 'react' ? availableDemos(orm, packages).map(d => d.value) : [];
185
+ // ── Smart DB-push: for non-SQLite ask once whether the DB is reachable ──
186
+ let dbReady;
187
+ if (p.dbReady !== undefined)
188
+ dbReady = p.dbReady;
189
+ else if (orm === false)
190
+ dbReady = false;
191
+ else if (db === 'sqlite')
192
+ dbReady = true;
193
+ else {
194
+ const dbReadyAnswer = await confirm({
195
+ message: `Is your ${db === 'postgresql' ? 'Postgres' : 'MySQL'} running now? (we'll push the schema for you)`,
196
+ initialValue: true,
197
+ });
198
+ if (isCancel(dbReadyAnswer)) {
199
+ cancel('Cancelled.');
200
+ process.exit(0);
201
+ }
202
+ dbReady = dbReadyAnswer;
222
203
  }
223
204
  let install;
224
205
  if (p.install !== undefined)
225
206
  install = p.install;
226
207
  else {
227
- const installAnswer = await confirm({ message: 'Install dependencies?', initialValue: true });
208
+ const installAnswer = await confirm({ message: 'Install and run setup?', initialValue: true });
228
209
  if (isCancel(installAnswer)) {
229
210
  cancel('Cancelled.');
230
211
  process.exit(0);
231
212
  }
232
213
  install = installAnswer;
233
214
  }
234
- return { name: resolvedName, orm, db, packages, frameworks, primary, tailwind, shadcn, demos, install };
215
+ const git = p.git ?? install;
216
+ return {
217
+ name: resolvedName, recipe, orm, db, packages, frameworks, primary, tailwind, shadcn,
218
+ demos: [], git, dbReady, install,
219
+ };
220
+ }
221
+ // ──────────────────────────────────────────────────────────────
222
+ // Custom-recipe package picker — only shown for `recipe = 'custom'`
223
+ // ──────────────────────────────────────────────────────────────
224
+ async function promptCustomPackages(orm) {
225
+ const PACKAGE_GROUPS = {
226
+ 'Auth & Security': [
227
+ { value: 'auth', label: 'Authentication', hint: 'login, register, sessions' },
228
+ { value: 'sanctum', label: 'Sanctum', hint: 'API tokens (SHA-256 + abilities)' },
229
+ { value: 'passport', label: 'Passport', hint: 'OAuth2 server — requires Auth + Prisma' },
230
+ { value: 'socialite', label: 'Socialite', hint: 'social login: GitHub, Google, Facebook, Apple' },
231
+ { value: 'crypt', label: 'Crypt', hint: 'AES-256-CBC + HMAC encryption' },
232
+ ],
233
+ 'Infrastructure': [
234
+ { value: 'queue', label: 'Queue', hint: 'background jobs' },
235
+ { value: 'storage', label: 'Storage', hint: 'file uploads (local + S3)' },
236
+ { value: 'scheduler', label: 'Scheduler', hint: 'cron-like task scheduling' },
237
+ ],
238
+ 'Communication': [
239
+ { value: 'mail', label: 'Mail', hint: 'SMTP + log driver' },
240
+ { value: 'notifications', label: 'Notifications', hint: 'multi-channel notifications' },
241
+ { value: 'broadcast', label: 'WebSocket / Broadcast', hint: 'real-time channels' },
242
+ { value: 'sync', label: 'Sync (Yjs CRDT)', hint: 'collaborative documents' },
243
+ ],
244
+ 'Internationalization': [
245
+ { value: 'localization', label: 'Localization', hint: 'i18n — trans(), setLocale()' },
246
+ ],
247
+ 'Developer Experience': [
248
+ { value: 'pennant', label: 'Pennant', hint: 'feature flags' },
249
+ { value: 'http', label: 'HTTP', hint: 'fluent fetch client — retries, timeouts, pools' },
250
+ { value: 'process', label: 'Process', hint: 'shell execution — run, pool, pipe' },
251
+ { value: 'concurrency', label: 'Concurrency', hint: 'parallel execution via worker threads' },
252
+ { value: 'terminal', label: 'Terminal', hint: 'rich terminal UIs from CLI commands (Ink)' },
253
+ ],
254
+ 'Media': [
255
+ { value: 'image', label: 'Image', hint: 'resize, crop, convert (sharp wrapper)' },
256
+ ],
257
+ 'Observability': [
258
+ { value: 'telescope', label: 'Telescope', hint: 'debug dashboard — requests, queries, jobs, exceptions' },
259
+ { value: 'pulse', label: 'Pulse', hint: 'metrics dashboard — throughput, latency, hit rates' },
260
+ { value: 'horizon', label: 'Horizon', hint: 'queue monitoring — lifecycle, workers, retry/delete' },
261
+ ],
262
+ 'AI & Tooling': [
263
+ { value: 'ai', label: 'AI', hint: 'LLM providers (Anthropic, OpenAI, Google, Ollama)' },
264
+ { value: 'mcp', label: 'MCP', hint: 'Model Context Protocol — expose tools/resources to LLMs' },
265
+ { value: 'boost', label: 'Boost', hint: 'AI coding DX (Claude Code/Cursor/Copilot)' },
266
+ ],
267
+ };
268
+ if (orm === false)
269
+ log.info('Database not selected — auth, sanctum, and passport options are hidden.');
270
+ const groupedOptions = {};
271
+ for (const [group, pkgs] of Object.entries(PACKAGE_GROUPS)) {
272
+ const visible = orm === false ? pkgs.filter(p => !DB_GATED.has(p.value)) : pkgs;
273
+ if (visible.length > 0)
274
+ groupedOptions[group] = visible;
275
+ }
276
+ const packageAnswer = await groupMultiselect({
277
+ message: 'Select packages',
278
+ options: groupedOptions,
279
+ initialValues: orm === false ? [] : ['auth'],
280
+ required: false,
281
+ selectableGroups: false,
282
+ });
283
+ if (isCancel(packageAnswer)) {
284
+ cancel('Cancelled.');
285
+ process.exit(0);
286
+ }
287
+ return packagesFromList(packageAnswer, orm);
235
288
  }
236
289
  async function scaffold(answers, opts) {
237
290
  const { pm, quiet, logFile } = opts;
@@ -276,6 +329,11 @@ async function scaffold(answers, opts) {
276
329
  }
277
330
  s?.stop(`${Object.keys(templates).length} files written`);
278
331
  let installAttempted = false, installOk = false, discoverOk = false;
332
+ let dbGenerateOk = null;
333
+ let dbPushOk = null;
334
+ let vendorPublishOk = null;
335
+ let passportKeysOk = null;
336
+ let gitInitOk = null;
279
337
  if (answers.install) {
280
338
  installAttempted = true;
281
339
  const s2 = quiet ? null : spinner();
@@ -286,20 +344,89 @@ async function scaffold(answers, opts) {
286
344
  if (installOk) {
287
345
  const s3 = quiet ? null : spinner();
288
346
  s3?.start('Discovering framework providers...');
289
- const [rcmd, ...rargs] = `${pmRun(pm, 'rudder')} providers:discover`.split(' ');
290
- discoverOk = await runChild(rcmd, rargs, target, logFile);
347
+ discoverOk = await runRudder(pm, 'providers:discover', target, logFile);
291
348
  s3?.stop(discoverOk
292
349
  ? 'Provider manifest generated'
293
350
  : `providers:discover failed — run \`${pmRun(pm, 'rudder')} providers:discover\` manually`);
351
+ // ── Auto-cascade — only when install + providers:discover both succeed ──
352
+ if (discoverOk && answers.orm) {
353
+ const s4 = quiet ? null : spinner();
354
+ s4?.start('Generating database client...');
355
+ dbGenerateOk = await runRudder(pm, 'db:generate', target, logFile);
356
+ s4?.stop(dbGenerateOk
357
+ ? (answers.orm === 'prisma' ? 'Prisma client generated' : 'Client step skipped (Drizzle)')
358
+ : `db:generate failed — run \`${pmRun(pm, 'rudder')} db:generate\` manually`);
359
+ }
360
+ if (discoverOk && answers.orm && answers.dbReady) {
361
+ const s5 = quiet ? null : spinner();
362
+ s5?.start('Pushing schema to database...');
363
+ dbPushOk = await runRudder(pm, 'db:push', target, logFile);
364
+ const niceDb = answers.db === 'sqlite' ? 'dev.db ready' : 'schema pushed';
365
+ s5?.stop(dbPushOk
366
+ ? niceDb
367
+ : `db:push failed — start your database and run \`${pmRun(pm, 'rudder')} db:push\``);
368
+ }
369
+ if (discoverOk && answers.packages.auth && !authViewsCopied) {
370
+ const s6 = quiet ? null : spinner();
371
+ s6?.start('Publishing auth views...');
372
+ vendorPublishOk = await runRudder(pm, `vendor:publish --tag=auth-views-${answers.primary}`, target, logFile);
373
+ s6?.stop(vendorPublishOk
374
+ ? 'Auth views published'
375
+ : `vendor:publish failed — run \`${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}\``);
376
+ }
377
+ if (discoverOk && answers.packages.passport) {
378
+ const s7 = quiet ? null : spinner();
379
+ s7?.start('Generating Passport keys...');
380
+ passportKeysOk = await runRudder(pm, 'passport:keys', target, logFile);
381
+ s7?.stop(passportKeysOk
382
+ ? 'Passport keys generated'
383
+ : `passport:keys failed — run \`${pmRun(pm, 'rudder')} passport:keys\` manually`);
384
+ }
294
385
  }
295
386
  }
387
+ // ── git init — independent of install; runs whenever user opted in ──
388
+ if (answers.git) {
389
+ const s8 = quiet ? null : spinner();
390
+ s8?.start('Initializing git repository...');
391
+ gitInitOk = await runGitInit(target, logFile);
392
+ s8?.stop(gitInitOk
393
+ ? 'Git initialized'
394
+ : 'git init skipped — git not available or already a repo');
395
+ }
296
396
  return {
297
397
  target,
298
398
  filesWritten: Object.keys(templates).length,
299
399
  authViewsCopied,
300
400
  installAttempted, installOk, discoverOk,
401
+ dbGenerateOk, dbPushOk, vendorPublishOk, passportKeysOk, gitInitOk,
301
402
  };
302
403
  }
404
+ /** Run a `rudder <subcommand>` in the target dir. Subcommand may include flags. */
405
+ async function runRudder(pm, subcommand, cwd, logFile) {
406
+ const [cmd, ...args] = `${pmRun(pm, 'rudder')} ${subcommand}`.split(' ').filter(Boolean);
407
+ return runChild(cmd, args, cwd, logFile);
408
+ }
409
+ /** `git init` + first commit. Returns false if git isn't on $PATH or the dir is already a repo. */
410
+ async function runGitInit(cwd, logFile) {
411
+ // Probe `git --version` first so we don't write a half-init repo on systems without git.
412
+ const hasGit = await runChild('git', ['--version'], cwd, logFile);
413
+ if (!hasGit)
414
+ return false;
415
+ // If `.git/` exists (rare in scaffolded apps but possible) bail rather than commit blindly.
416
+ try {
417
+ await fs.access(path.join(cwd, '.git'));
418
+ return false;
419
+ }
420
+ catch { /* good — no existing repo */ }
421
+ if (!await runChild('git', ['init', '-q'], cwd, logFile))
422
+ return false;
423
+ if (!await runChild('git', ['add', '.'], cwd, logFile))
424
+ return false;
425
+ // -q silences the commit summary; --no-gpg-sign avoids pgp prompts on fresh machines.
426
+ if (!await runChild('git', ['commit', '-q', '-m', 'Initial commit (create-rudder-app)', '--no-gpg-sign'], cwd, logFile))
427
+ return false;
428
+ return true;
429
+ }
303
430
  class ScaffoldError extends Error {
304
431
  }
305
432
  function runChild(cmd, args, cwd, logFile) {
@@ -387,8 +514,18 @@ async function main() {
387
514
  if (result.installAttempted) {
388
515
  payload['installed'] = result.installOk;
389
516
  payload['providersDiscovered'] = result.discoverOk;
517
+ if (result.dbGenerateOk !== null)
518
+ payload['dbGenerated'] = result.dbGenerateOk;
519
+ if (result.dbPushOk !== null)
520
+ payload['dbPushed'] = result.dbPushOk;
521
+ if (result.vendorPublishOk !== null)
522
+ payload['authViewsPublished'] = result.vendorPublishOk;
523
+ if (result.passportKeysOk !== null)
524
+ payload['passportKeysGenerated'] = result.passportKeysOk;
390
525
  }
391
- if (answers.packages.auth && !result.authViewsCopied) {
526
+ if (result.gitInitOk !== null)
527
+ payload['gitInitialized'] = result.gitInitOk;
528
+ if (answers.packages.auth && !result.authViewsCopied && result.vendorPublishOk !== true) {
392
529
  payload['warning'] = `Auth views could not be vendored. Run: ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`;
393
530
  }
394
531
  process.stdout.write(JSON.stringify(payload) + '\n');
@@ -426,23 +563,35 @@ async function main() {
426
563
  }
427
564
  throw err;
428
565
  }
429
- if (answers.packages.auth && !result.authViewsCopied) {
430
- console.warn(` ⚠ Auth views could not be vendored from @rudderjs/auth.\n` +
431
- ` After install, run: ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`);
432
- }
433
- const nextSteps = [
434
- ` cd ${answers.name}`,
435
- ...(!answers.install ? [` ${pmInstall(pm)}`, ` ${pmRun(pm, 'rudder')} providers:discover`] : []),
436
- ...(answers.orm === 'prisma' ? [
437
- ` ${pmExec(pm, 'prisma generate')}`,
438
- ` ${pmExec(pm, 'prisma db push')}`,
439
- ] : []),
440
- ...(!answers.install && answers.packages.auth
441
- ? [` ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`]
442
- : []),
443
- ...(answers.packages.passport ? [` ${pmRun(pm, 'rudder')} passport:keys`] : []),
444
- ` ${pmRun(pm, 'dev')}`,
445
- ];
566
+ // ── Build the "manual steps" list ─ only includes things the auto-cascade
567
+ // either didn't run or couldn't finish. The goal: when everything succeeded,
568
+ // the panel has exactly one line (`cd app && pnpm dev`).
569
+ const manual = [];
570
+ if (!answers.install) {
571
+ manual.push(` ${pmInstall(pm)}`);
572
+ manual.push(` ${pmRun(pm, 'rudder')} providers:discover`);
573
+ }
574
+ if (answers.orm && (result.dbGenerateOk === false || (result.dbGenerateOk === null && !answers.install))) {
575
+ manual.push(` ${pmRun(pm, 'rudder')} db:generate`);
576
+ }
577
+ if (answers.orm && result.dbPushOk !== true) {
578
+ // dbPushOk is null when we deliberately skipped (e.g. user said DB not running)
579
+ if (result.dbPushOk === null && !answers.dbReady) {
580
+ manual.push(` ${pmRun(pm, 'rudder')} db:push ${result.installOk ? '# once your database is running' : ''}`);
581
+ }
582
+ else if (result.dbPushOk === false) {
583
+ manual.push(` ${pmRun(pm, 'rudder')} db:push # retry after starting your database`);
584
+ }
585
+ else if (result.dbPushOk === null && !answers.install) {
586
+ manual.push(` ${pmRun(pm, 'rudder')} db:push`);
587
+ }
588
+ }
589
+ if (answers.packages.auth && result.vendorPublishOk !== true && !result.authViewsCopied) {
590
+ manual.push(` ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`);
591
+ }
592
+ if (answers.packages.passport && result.passportKeysOk !== true) {
593
+ manual.push(` ${pmRun(pm, 'rudder')} passport:keys`);
594
+ }
446
595
  const hints = [];
447
596
  if (answers.packages.ai)
448
597
  hints.push(' AI chat: /ai-chat (set ANTHROPIC_API_KEY in .env)');
@@ -457,10 +606,22 @@ async function main() {
457
606
  if (answers.packages.terminal)
458
607
  hints.push(` Terminal: ${pmRun(pm, 'rudder')} make:terminal <Name> (scaffold a terminal view)`);
459
608
  const hintsStr = hints.length > 0 ? '\n\n' + hints.join('\n') : '';
460
- outro(`Done! Get started:\n\n` +
461
- nextSteps.join('\n') +
609
+ const exampleLink = '\n\n Examples: https://rudderjs.com/examples';
610
+ // The happy-path output — auto-cascade succeeded, no manual remediation.
611
+ if (manual.length === 0) {
612
+ outro(`Done!\n\n` +
613
+ ` cd ${answers.name} && ${pmRun(pm, 'dev')}` +
614
+ hintsStr +
615
+ exampleLink);
616
+ return;
617
+ }
618
+ // Something needs the user's attention — print remediation steps explicitly.
619
+ outro(`Done! A few things still need your attention:\n\n` +
620
+ ` cd ${answers.name}\n` +
621
+ manual.join('\n') + '\n' +
622
+ ` ${pmRun(pm, 'dev')}` +
462
623
  hintsStr +
463
- `\n\n Docs: https://github.com/rudderjs/rudder`);
624
+ exampleLink);
464
625
  }
465
626
  main().catch((err) => {
466
627
  console.error(err);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-rudder-app",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@clack/prompts": "^1.0.0",
33
- "@rudderjs/auth": "6.0.1"
33
+ "@rudderjs/auth": "6.0.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^20.0.0",