TypeScript Express Starter
Express RESTful API Boilerplate Using TypeScript
- [ Korean](https://github.com/ljlm0402/typescript-express-starter/blob/master/README.kr.md)
- [ English](https://github.com/ljlm0402/typescript-express-starter/blob/master/README.md)
---
## Introduction
**TypeScript Express Starter** is an interactive CLI tool that generates production-ready TypeScript Express projects with your preferred stack configuration.
Instead of starting from scratch, this CLI provides a comprehensive project generator with multiple database integrations, development tools, and deployment configurations. Choose from 10+ templates and customize your development workflow in minutes.
- **Interactive Setup**: Choose database, ORM, linter, testing framework, and more
- **Production Ready**: Docker, PM2, NGINX configurations included
- **Developer Experience**: Hot reload, testing, linting, and formatting pre-configured
- **Multiple Stacks**: Support for 10+ database/ORM combinations
## CLI Features
- **Interactive Setup** — Smart CLI with guided project configuration
- **Quick or Custom Mode** — Start fast with presets or choose tools category by category
- ️ **Multiple Database Options** — Prisma, Sequelize, TypeORM, Mongoose, Knex, and more
- ️ **Development Tools** — Choose from ESLint, Biome, Jest, Vitest, Docker, PM2
- **Template Selection** — 10+ pre-configured project templates
- ⚡ **Auto Configuration** — Dependencies, scripts, and configs automatically setup
- **Smart Dependencies** — Tool compatibility and requirement resolution
- **Package Manager Agnostic** — Works with npm, pnpm, or yarn
- **Zero Config Start** — Generated projects work immediately
- **Customizable** — Add your own templates and development tools
## ⚡️ Quick Start
```
…
```
**Generated Project Features:**
- Express server: `http://localhost:3000/`
- Hot reload with nodemon
## Generated Project Structure
When you create a new project, the CLI generates this structure:
```
…
```
## Development Tools Available
Choose from these categories during project setup:
| Category | Available Tools | Description |
| ------------- | --------------------------- | ----------------------------------------------- |
| **Linter** | `biome`, `eslint`, `oxlint` | Code formatting & linting (Biome is all-in-one) |
| **Bundler** | `swc`, `tsup` | Fast TypeScript compilation and bundling |
| **Testing** | `jest`, `vitest` | Unit & integration testing frameworks |
| **Container** | `docker` | Docker & docker-compose configuration |
### To be added later (currently in progress):
| Category | Available Tools | Description |
| ------------- | --------------- | ------------------------------------ |
| **Process** | `pm2` | Production process management |
| **CI/CD** | `github` | GitHub Actions workflows |
| **Git Hooks** | `husky` | Pre-commit hooks for quality control |
| **API Docs** | `swagger` | OpenAPI/Swagger documentation |
**Smart Selection**: The CLI automatically resolves tool dependencies and compatibility.
## Available Templates
Current template status with comprehensive compatibility tested:
### ✅ **Production Ready & Fully Tested**
| Template | Description | Status | Compatibility |
| -------------------- | --------------------------------------------------- | --------- | ------------- |
| `default` | Express + TypeScript starter | ✅ Active | Baseline |
| `drizzle-postgresql` | Drizzle ORM + PostgreSQL (Type-safe, Zero overhead) | ✅ Active | 100% (8/8) |
### **Enhanced Development Tools Support**
**drizzle-postgresql** template is fully compatible with:
#### Linters
- ✅ **Biome** - Modern unified tool (linter + formatter)
- ✅ **ESLint + Prettier** - Traditional reliable combination
- ✅ **Oxlint** - Rust-based high-performance linter (18ms!)
#### Compilers
- ✅ **tsup** - esbuild-based bundler (193ms build!)
- ✅ **SWC** - Rust-based native performance compiler
#### Test Runners
- ✅ **Jest** - Mature test framework with full E2E support
- ✅ **Vitest** - Modern Vite-based test runner
> **All 8 combinations tested and verified** - Choose your preferred development experience!
### **Coming Soon**
#### **ORM/Database Integration**
| Template | Description | Priority |
| --------------- | --------------------------------------------------- | ---------- |
| `prisma` | Type-safe database client with auto-generated types | Next |
| `mongoose` | Elegant MongoDB ODM for Node.js | Next |
| `typeorm` | Decorator-based Active Record ORM | Planned |
| `sequelize` | Mature Promise-based SQL ORM | Planned |
| `mikro-orm` | Data Mapper ORM pattern for TypeScript | Planned |
| `typegoose` | TypeScript-friendly Mongoose alternative | Planned |
| `node-postgres` | High-performance PostgreSQL native driver | Planned |
| `knex` | Flexible SQL query builder & migrations | Planned |
#### **Architecture/Controller Style**
| Template | Description | Priority |
| --------- | ------------------------------------- | ------------ |
| `graphql` | GraphQL API schema with Apollo Server | Knowledge |
## Why Use This CLI?
### vs. Manual Setup
| Aspect | Manual Setup | TypeScript Express Starter CLI |
| ------------------ | ------------------------------- | ------------------------------------- |
| **Time** | Hours of configuration | ✅ 2-3 minutes interactive setup |
| **Configuration** | Manual dependency management | ✅ Auto-resolved, compatible versions |
| **Best Practices** | Research required | ✅ Pre-configured industry standards |
| **Consistency** | Varies by developer | ✅ Standardized project structure |
| **Updates** | Manual maintenance | ✅ CLI updates bring new features |
### vs. Other Generators
| Feature | TypeScript Express Starter | Other Generators |
| -------------------- | -------------------------- | ---------------- |
| **Database Choice** | ✅ 10+ options planned | Limited options |
| **Tool Selection** | ✅ Mix & match dev tools | Fixed stack |
| **TypeScript First** | ✅ Built for TypeScript | Often JS-first |
| **Production Ready** | ✅ Docker, PM2 included | Basic setup |
## ⭐️ Stargazers
## Forkers
## Contributors
## License
[MIT](LICENSE)
---
Made with ❤️ by AGUMON