@baxsm/kickstart-cli
v0.1.1
Published
Scaffold a full-stack project. Next, Express, or Expo with your choice of database, auth, and payments.
Readme
kickstart-cli
Scaffold a full-stack project in seconds, in your own conventions. Like create-next-app, but for a whole stack matrix.
Pick a framework, database, auth, and payments. kickstart generates a project wired up the way you'd wire it yourself, installs dependencies, and inits git. One command, nothing to hand-wire. Interactive by default, fully scriptable, and extensible with your own stacks.
The stack matrix
Every option is first-class: built, and every valid combination generates a project that installs and builds. A test suite enumerates all 78 valid combinations and builds a covering subset for real.
| Category | Options | | --- | --- | | Framework | Next.js · React Native + Expo · Express-only API | | Output shape | single app · monorepo (Express backend + Next frontend) | | Database | Postgres + Drizzle · MongoDB + Prisma · none | | Auth | Better Auth · Clerk · none | | Payments | Stripe · Stripe Connect · Polar · none |
Expo is mobile-only (no local database, no monorepo). kickstart only offers valid options in the prompts and rejects impossible combinations with a clear message.
Quick start
Run it with npx, no install needed:
npx @baxsm/kickstart-cli # interactive prompts
npx @baxsm/kickstart-cli my-app --preset saas --yes # from a preset
npx @baxsm/kickstart-cli my-app --preset full --dry-run # preview, write nothingOr install it globally to get the kickstart command:
npm install -g @baxsm/kickstart-cli
kickstart my-app --preset saas --yesPresets
| Preset | Stack |
| --- | --- |
| full | Next.js monorepo · Drizzle · Better Auth · Stripe |
| saas | Next.js single app · Drizzle · Better Auth · Stripe |
| api | Express API · Drizzle · Better Auth |
| minimal | Next.js single app, nothing else |
Run modes
Every prompt has a matching flag, so anything you do interactively you can script.
kickstart # interactive prompts
kickstart my-app --framework next --db drizzle --auth better-auth --yes
kickstart --config kickstart.json # read answers from a file
kickstart my-app --preset full --dry-run # preview the file treeConsistent output
Whatever you pick, the generated project follows one set of conventions: kebab-case file names, a @/* path alias, strict TypeScript with noUncheckedIndexedAccess, type-safe env with t3-env, Zod at boundaries, a small project logger, and Biome for lint and format. Backends use a 3-layer structure (routes, controllers, services). The monorepo frontend talks to the backend through a type-safe fetcher.
Extend it with your own stacks
Stacks are fragments: a folder of template files plus a fragment.json manifest declaring dependencies, env keys, compatibility, and a set of declarative patch operations. Drop a fragment in your config dir and kickstart discovers it. User fragments can override the bundled ones, so you can customize an existing stack to your taste.
The manifest is sandboxed. Third-party fragments use only a fixed set of declarative operations (merge package.json, append env, insert at an anchor, merge a schema, replace a token). No arbitrary code runs; path traversal and malformed manifests are rejected at load time.
See TEMPLATES.md for the authoring guide.
How it's tested
- Unit tests for the composition engine, config funnel, and every patch operation.
- Snapshot tests for generated file trees.
- A matrix test that generates all 78 valid configurations in memory with no errors.
- An integration suite that scaffolds 24 representative projects, installs them, and builds them for real (Next.js
next build, Express and Expo typecheck, monorepo builds both sub-apps). - CLI end-to-end tests that spawn the real binary and check every error path.
bun test # unit + snapshot + matrix (fast)
KS_BUILD=1 bun test # + real install-and-build across the matrix (slow)Built with
TypeScript · Bun · @clack/prompts · Zod · Biome
Contributing
Clone the repo and run it from source:
bun install
bun run start # interactive prompts
bun test # unit + snapshot + matrix (fast)Status
Published on npm as @baxsm/kickstart-cli. Runs on Node 18+ (also works under Bun).
