Open Source · MIT License

Scaffold production-ready APIs
in seconds.

One command. Zero prompts. Zero config.
A fully configured Node.js + TypeScript + Express API — ready to build on.

Terminal
$ npx create-api-starterkit my-api

Everything you need.
Nothing you don't.

A production-ready API with industry best practices baked in — so you can focus on building features.

Express 5

Latest stable framework with async error handling and modern routing built in.

🔒

TypeScript Strict

Full type safety with strict mode enabled. Catch bugs at compile time, not runtime.

Zod Validation

Runtime request validation with Zod schemas. Type-safe from API boundary to response.

📚

Swagger Docs

Interactive API documentation at /api-docs — auto-generated from JSDoc annotations.

🧪

Vitest + Supertest

Fast testing out of the box. Example integration tests show you the pattern.

🛡️

Security First

Helmet for HTTP headers, CORS configured, environment validation with Zod.

📝

Pino Logging

Structured, high-performance logging. Pretty output in dev, JSON in production.

🐳

Docker Ready

Multi-stage Dockerfile + docker-compose. Deploy anywhere with a single build.

🎨

Lint + Format

ESLint flat config + Prettier + Husky git hooks. Clean code enforced automatically.

Up and running in 30 seconds.

1

Create your project

npx create-api-starterkit my-api
2

Start developing

cd my-api && npm run dev
3

You're live!

Server http://localhost:3000
Swagger http://localhost:3000/api-docs
Health http://localhost:3000/api/health

CLI Options

--skip-install Skip dependency installation
--no-git Skip git initialization
--package-manager pnpm Use pnpm instead of npm

Module-based. Scalable by design.

Each feature is self-contained. No more hunting across scattered folders.

Project Structure
src/
├── config/
│   ├── env.ts           # Zod-validated env vars
│   └── swagger.ts       # OpenAPI configuration
├── middlewares/
│   ├── error-handler.ts # Global error handling
│   ├── not-found.ts     # 404 handler
│   ├── request-logger.ts# HTTP logging
│   └── validate.ts      # Zod validation
├── modules/          # ← Add features here
│   └── health/
│       ├── health.controller.ts
│       ├── health.routes.ts
│       └── health.schema.ts
├── utils/
│   ├── api-error.ts     # Custom error class
│   ├── api-response.ts  # Standardized responses
│   └── logger.ts        # Pino logger
├── app.ts              # Express app factory
└── server.ts           # Entry point

🧩 Add a new module in 3 steps

  1. Create src/modules/users/
  2. Add schema, controller, and routes
  3. Register in app.ts

📐 Consistent API responses

{ "success": true, "data": { ... }, "message": "OK", "timestamp": "2026-..." }

Ready to build?

Stop configuring. Start shipping.

npx create-api-starterkit my-api