Features
Foundation, functional blocks, agent-first APIs.
Complete capabilities you bolt on with init or add— so agents and humans build product features, not plumbing. See Philosophy.
Interactive Wizard
Run npx ds-start init and the wizard guides you through three build paths. No flags required.
Recommended production starterThe full stack
Prisma + Postgres, Better Auth, transactional email, and GitHub Actions CI. The same preset applied by -y.
App with authChoose your auth provider
Pick Better Auth or Clerk, then select additional modules interactively. Good when you know you need auth but want to customize the rest.
Base appFoundation only
The foundation stack with no modules. Same as --base. Add modules later with ds-start add.
Foundation
The foundation is the baseline every generated app starts with: framework, type safety, quality gates, environment validation, and conventions agents can follow.
Next.js 16
App Router, Turbopack, React Server Components
TypeScript
Strict mode, type-checked with tsgo (native compiler)
Tailwind CSS 4
Utility-first CSS with shadcn/ui components
shadcn/ui
Button, Card, Input, Label, Separator pre-installed
nuqs
Type-safe URL state management for search params
React Query
Server/async state management with caching and devtools
next-ts-api
End-to-end type-safe API routes and client
varlock
Schema-driven env validation and type-safe access
Vitest
Fast unit testing with jsdom environment
oxlint + oxfmt
Blazing-fast linting and formatting powered by Oxc
Husky + lint-staged
Pre-commit hooks run lint, format, typecheck, and test
commitlint + cz-git
Conventional commits enforced with interactive prompts
Geist Sans + Mono
Clean typography by Vercel
next-themes
Light/dark toggle with system preference support
Modules
Pre-integrated app features that compose on top of the foundation. Select them through the interactive wizard, include them with flags, or add them to an existing project later.
Add to an existing project
Run npx ds-start add email from inside a supported Next.js project. Auto-merges package.json and config files, prompts only for real conflicts.
--prismaPrisma 6 ORM with PostgreSQL, PrismaPg adapter, typed JSONB via prisma-json-types-generator, and a singleton client.
--authFull authentication system with email/password, Google OAuth, forgot/reset password, route protection, and shadcn/ui forms. Requires --prisma.
--clerkManaged authentication with pre-built sign-in/sign-up components, route protection, and organization support. No database required.
--github-workflowsCI pipeline for GitHub Actions: lint, typecheck, build on every PR. Runs on Blacksmith for faster builds. Includes varlock scan for secret leak detection.
--stripeBilling and subscription management with Stripe. Includes webhook handling, customer portal, and plan management. Works with both Better Auth and Clerk. Requires --auth or --clerk.
--emailTransactional email with Resend for delivery and React Email for type-safe, previewable templates. Welcome emails, password resets, and invitations out of the box.
--file-uploadsS3-compatible file uploads with presigned URLs, upload helpers, and a ready-made FileUpload component. Works with AWS S3, Cloudflare R2, MinIO, and Backblaze B2.
--zustandLightweight client state management. Provider-free, TypeScript-first stores with Redux DevTools support via devtools middleware.
--formsJSON-driven form renderer with classic, conversational, and multistep view modes. Define fields as a typed config, get validation and layout for free. Built on shadcn Form components (react-hook-form + zod). Overridable component map for custom field types.
--vercel-deployCD pipeline via Vercel CLI. Preview deploys on push to main, manual dispatch for production. Implies --github-workflows.
Composability
Modules compose because they share the same project conventions and declare the few dependencies that matter. Start with --base for the minimal foundation and add modules as you need them.
--auth requires --prisma
Better Auth uses Prisma as its database adapter.
--clerk works independently
Clerk manages users externally — no database required.
--clerk and --auth are mutually exclusive
One auth provider per project.
--stripe requires --auth or --clerk
Billing needs an auth provider to associate subscriptions with users.
--vercel-deploy implies --github-workflows
CD builds on the CI pipeline.
--forms + --file-uploads enables file field
The file field type uses the FileUpload component from the file-uploads module.
Everything else is independent
--email, --file-uploads, --zustand, --forms, --prisma, and --github-workflows mix and match freely.
Ready to start?
Scaffold a new app, then use the workflow page to see how agents work inside it.