55 modules · 4 package managers
scroll to enter
DevStack: production-ready stacks, wired and verified
production-ready stacks · wired and verified
// works with
YOUR STACK.
ALREADY WIRED.
- Express
- Fastify
- NestJS
- Next.js
- Vite
- PostgreSQL
- MySQL
- SQLite
- MongoDB
- Prisma
- Drizzle
- Mongoose
- Redis
- JSON Web Tokens
- Better Auth
- Node.js
- Turborepo
- Tailwind CSS
- CSS Modules
- Vitest
- Jest
- ESLint
- Prettier
- Docker
- GitHub Actions
- npm
- pnpm
- Yarn
- Bun
Wired end to end
Modules know each other: auth uses your ORM, your API docs list its routes.
Checked before you see it
lint · format · typecheck · test · build · boot
Yours to change
Add or remove modules later; DevStack rewires the code it wrote.
// what you get
WIRED. CHECKED.
YOURS.
wired, not just installed
Every module lands in the right place.
Helmet, CORS, rate limiting and logging, in the order they belong. This is the generated apps/api/src/app.ts, unedited:
export function createApp(deps: AppDeps): Express {
const app = express()
// Do not advertise the framework, even when no security middleware is selected.
app.disable('x-powered-by')
// Order (B17.2): request id, logging, security, body parsing, routes, not found, errors.
app.use(requestId(deps.logger))
app.use(requestLoggerMiddleware)
if (docsEnabled) app.use(createDocsRouter())
app.use(helmetMiddleware)
app.use(corsMiddleware)
app.use(apiRateLimiter)
app.use(express.json())
app.use(createHealthRouter(deps.readinessChecks))esm or commonjs
Your module system.
ES modules by default; CommonJS for the API with one flag. Web apps stay ESM.
--module-system cjsgrows with you
Add or remove modules later.
$ npx create-devstack-app add auth-jwt
+23 new · ~16 rewired
verified
Checked before you see it.
- ✓ lint
- ✓ format
- ✓ typecheck
- ✓ test
- ✓ build
- ✓ boot
safe by default
It never clobbers your work.
- — Nothing is written until the whole plan has rendered.
- — --yes never overwrites; anything replaced is backed up first.
- — remove deletes only files it made that you have not changed.
doctor
Knows when things drift.
Checks Node.js, package managers, git and Docker; inside a project, the dependencies that differ from DevStack's catalog.
npx create-devstack-app doctor// by the numberscounted from the repo
THE NUMBERS.
modules
55across 20 categories
package managers
4npm · pnpm · yarn · bun
checks per project
6lint · format · typecheck · test · build · boot
files, one command
11951–119 per preset
Files each preset plans
One command each; the film builds my-app from the highlighted one.
- backend51 files
- fullstack-next-express94 files
- backend-fastify54 files
- backend-nest73 files
- api-mongo51 files
- fullstack-vite-express119 files
Modules by category
The largest of 20 categories.
- architecture7 modules
- framework5 modules
- misc4 modules
- database4 modules
- security4 modules
- middleware4 modules
- testing3 modules
- orm3 modules
milestones
Phase 0
Foundation
Stabilised CLI, strict TypeScript, tests
Phase 1
Resolution engine
Module contract v2, dependency resolver
Phase 2
Layouts & package managers
Monorepo, npm · pnpm · yarn · bun
Phase 3
Node breadth
Fastify, NestJS, Drizzle, Mongoose, Vite
Phase 4
Auth & observability
JWT, Better Auth, logs, API docs
Phase 5
Evolve & AI
add, remove, doctor, MCP server
Phase 6
1.0 hardening
Frozen contract, release gate
Phase 7 · now
This website
The builder, the film, the docs
// use it from your ai assistant
ASK FOR A STACK.
create-devstack-app mcp is a local MCP server over stdio: your assistant starts it, nothing is hosted.
claude mcp add devstack -- npx create-devstack-app mcptools
- list_modules
- list_presets
- validate
- plan
- init
- add_modules
- remove_modules
- Create a NestJS API with Postgres and JWT auth in ~/code/api
- ⚙ list_presets → 6 presets
- ⚙ plan { name: "api", preset: "backend-nest" } → 73 files, 14 modules, no conflicts
- ⚙ init { name: "api", preset: "backend-nest", directory: "/Users/you/code/api" } → generated, installed
- Done: TypeScript + NestJS + Prisma + PostgreSQL with JWT auth, Jest, Docker and quality tooling.
// loading the builder…