Minimal TypeScript API
Express and TypeScript with validated config and one error shape. No database.
atarashi new my-app --preset backend-minimal
What you get
Files
17 files, 10.0 KB before node_modules.
my-app/
├── src/
│ ├── config/
│ │ └── env.ts
│ ├── lib/
│ │ ├── async-handler.ts
│ │ ├── http-error.ts
│ │ └── http.ts
│ ├── middlewares/
│ │ └── error-handler.ts
│ ├── routes/
│ │ └── index.ts
│ ├── app.ts
│ └── index.ts
├── .editorconfig
├── .env.example
├── .gitignore
├── README.md
├── atarashi.json
├── biome.json
├── package.json
├── pnpm-workspace.yaml
└── tsconfig.json
Dependencies
dotenv@^17.4.2express@^4.21.2zod@^3.25.76
Development only:
@biomejs/biome@^2.3.14@types/express@^4.17.23@types/node@^22.19.0tsx@^4.20.6typescript@^5.9.3
After generating
- Start the dev server: pnpm run dev
- Copy
.env.exampleto.envand fill in the blanks - Check the API: curl http://localhost:3000/health
- Lint the project: pnpm run lint
Change it
A preset is a starting point, not a cage. Add to it, drop from it, or eject:
atarashi new my-app --preset backend-minimal --add obs/pino
atarashi new my-app --preset backend-minimal --remove lint/biome --add lint/eslint-prettier
atarashi add auth/jwt # later, inside the generated project
Part of the atarashi documentation, written and maintained by Gautam Suthar.