Scaffold a production-ready Express + TypeScript backend in seconds.
Choose your database, your validator, and optionally add JWT auth — all from one interactive CLI.
If you find this tool helpful, consider leaving a ⭐ star on GitHub to support the project!
Install the CLI globally to access the cem executable across your workspace:
# Using npm (recommended)
npm install -g create-express-modularScaffold a new project using the cem CLI (recommended):
# Using globally installed CLI (recommended)
cem my-api
# Or using npx / bunx without global installation
npx create-express-modular my-api
# or
bunx create-express-modular my-apiThen start developing:
cd my-api
cem devYour server is live at http://localhost:5000. ✅
Answer 5 prompts — get a complete, wired-up backend:
| Prompt | Options |
|---|---|
| Database / ORM | Mongoose · Prisma · Drizzle |
| Validator | Zod · Joi |
| JWT Auth | Yes / No (bcrypt + refresh tokens + rate limiting) |
| Token delivery | HTTP-only cookies · Authorization header |
| Docker | Yes / No (Dockerfile + docker-compose + DB sidecar) |
To support seamless development with AI assistants (Cursor, Claude Code, GitHub Copilot, etc.), the CLI automatically scaffolds custom configuration context files during project initialization:
AGENTS.md— Universal rules detailing code style, technology choices, strictly-enforced directory structure guidelines, and available CLI tools.CLAUDE.md— Full project context for Claude with real boilerplates (Controllers, Services, Routes, schemas, and Models) specifically tailored to the scaffolded stack.
| Command | Description |
|---|---|
cem dev |
Start the dev server with live reload |
cem build |
Run guards + compile TypeScript to dist/ |
cem start |
Start the production server with preflight checks |
cem check |
Run type-check, lint, and format checks in one command |
cem list |
Show a snapshot of modules, middlewares, and env vars |
| Command | Description |
|---|---|
cem add module <Name...> |
Scaffold one or more complete feature modules |
cem add middleware <name...> |
Create one or more middleware files under src/app/middlewares/ |
cem add env <KEY...> |
Add one or more env vars to .env, .env.example, and config |
| Command | Description |
|---|---|
cem remove module <Name...> |
Delete module directory(ies) and unwire routes |
cem remove middleware <name...> |
Delete one or more custom middleware files |
cem remove env <KEY...> |
Remove env var(s) from all configurations |
💡 Command Shortcuts / Aliases:
cem rmis an alias forcem removecem lsis an alias forcem list
- Node.js:
>= 18 - Package Manager: npm
>= 9· yarn>= 1.22· pnpm>= 8
| Link | Description |
|---|---|
| 📖 Full Docs | Complete CLI reference, guides, and examples |
| DOCS.md | Offline version of the full documentation |
| ARCHITECTURE.md | Internal project architecture overview |
| npm | Package page |
We welcome community contributions, bug reports, and suggestions!
- Contributing Guide: CONTRIBUTING.md
- Code of Conduct: CODE_OF_CONDUCT.md
- Security Policy: SECURITY.md
- Report Issues: GitHub Issues
- Discussions: GitHub Discussions
Distributed under the MIT License. See LICENSE for more information.