ljlm0402/typescript-express-starter
ljlm0402/typescript-express-starter has 2,870 GitHub stars and 437 forks. GitHot measured -1 stars in 24 hours and -2 in 7 days. Last checked 2026-11-11 13:43 UTC. Last push 2026-11-01.
ìŽ ìì¹ë¥Œ ìž¡ì íë ë°©ë²
ð Quick and Easy TypeScript Express Starter
What you can do
- ð¯ Interactive Setup â Smart CLI with guided project configuration
- ð Quick or Custom Mode â Start fast with presets or choose tools category by category
- ðïž PostgreSQL Integration â Drizzle ORM template with database scripts
- ð ïž Development Tools â Choose from ESLint, Biome, Oxlint, SWC, tsup, Jest, Vitest, Docker
ìž¡ì ë ì€í ìŠê°
- in 24h
- -1
- in 7 days
- -2
- in 15 days
- êž°ë¡ ìì§ ì€
- in 1 month
- êž°ë¡ ìì§ ì€
ìë¡ ê²¹ì¹ë êž°ê°ì ììŠê°ëìŽë©° ìŒë³ í©ê³ê° ìëëë€. ìž¡ì ê°ìŽ ììŒë©Ž ë¹ì ë¡ëë€. ì€íë êŽì¬ë륌 ëíëŽë©° íì§ì 볎ì¥íì§ ììµëë€.
README.kr.md
Original
TypeScript Express Starter
ð TypeScript êž°ë° Express RESTful API 볎ìŒë¬íë ìŽíž
ð ìê°
TypeScript Express Starterë ìíë ì€í 구ì±ìŒë¡ TypeScript Express íë¡ì ížë¥Œ ìì±íë ëíí CLI ë구ì ëë€.
Ʞ볞 Express, Drizzle + PostgreSQL, express-cargo êž°ë° ë°ìœë ìŽí° ê²ìŠ í í늿 ì€ìì ì íí ì ììµëë€. ì¬ì©í ê°ë° ë구륌 ì íí멎 ìí¬íë¡ì°ì íìí ì졎ì±, ì€í¬ëŠœíž, ì€ì íìŒì ìì±í©ëë€.
- ëíí ì€ì : ë°ìŽí°ë² ìŽì€, ORM, 늰í°, í ì€íž íë ììí¬ ë±ì ì í
- Docker ì§ì: Docker ì í ì ê°ë°Â·ìŽìì© Dockerfile ì ê³µ
- ê°ë°ì 겜í: í« ëŠ¬ë¡ë ë° ì íí í ì€ížÂ·ëаí ë구 ì€ì ì ê³µ
- í í늿 ì í: Ʞ볞 Express, Drizzle + PostgreSQL, express-cargo
ð CLI 죌ì êž°ë¥
ð¯ ëíí ì€ì â ì€ë§íž CLIë¡ íë¡ì íž êµ¬ì±ì ìëŽ
ð ë¹ ë¥ž ìì/컀ì€í 몚ë â í늬ì ìŒë¡ ë¹ ë¥Žê² ììíê±°ë 칎í ê³ ëŠ¬ë³ë¡ ì§ì ì í
ðïž PostgreSQL ì°ë â Drizzle ORM í í늿곌 ë°ìŽí°ë² ìŽì€ êŽëЬ ì€í¬ëŠœíž ì ê³µ
ð ïž ê°ë° ë구 â ESLint, Biome, Oxlint, SWC, tsup, Jest, Vitest, Docker ì€ ì í
ð± í í늿 ì í â ìžìŠÂ·ì¬ì©ì êŽëЬ ìì 륌 í¬íší íì± í í늿 3ì¢
â¡ ìë êµ¬ì± â ì졎ì±, ì€í¬ëŠœíž, ì€ì ìŽ ìëìŒë¡ ì€ì ëš
ð§ ìì¡Žì± êµ¬ì± â ì íí ë구ì ì졎ì±ì 몚ì í ë²ì ì€ì¹
ðŠ íší€ì§ ë§€ëì ì§ì â npm, pnpm, yarn 몚ë ì§ì
ð í겜 ì€ì â
.env.exampleì êž°ë°ìŒë¡ ëì ìžìŠ ë¹ë°í€ê° í¬íšë.envìì±ðš 컀ì€í°ë§ìŽì§ ê°ë¥ â ìì ë§ì í í늿곌 ê°ë° ë구 ì¶ê°
â¡ïž ë¹ ë¥ž ìì
ì€í ì구ì¬í: Node.js 22.12.0 ìŽì, npm 9.11.0 ìŽììŽ íìí©ëë€. CLIìì pnpm ëë Yarnì ì ííë €ë©Ž íŽë¹ íší€ì§ êŽëЬì륌 ë³ëë¡ ì€ì¹íìžì. Docker 구ì±ì ì€ííë €ë©Ž Dockerì Composeê° íìí©ëë€.
ì ì ì€ì¹ ììŽ CLI륌 ì€íí ìë ììµëë€:
npx typescript-express-starter
# ì ì ì€ì¹
npm install -g typescript-express-starter
# ëíí CLI ì€í
typescript-express-starter
â ð TypeScript Express Starter
â
â Choose setup mode:
â â ð Quick start (recommended preset) (Automatically selects a sensible toolset)
â â ð Custom (step-by-step) (Pick tools category by category)
â
â Which package manager do you want to use?
â â npm
â â pnpm
â â yarn
â
â Choose a template:
â â Express TypeScript (Basic Express + TypeScript starter · beginner · stable)
â â Drizzle PostgreSQL (Modern SQL toolkit with type safety + full devtools · intermediate · stable)
â â Express + express-cargo (Declarative validation & binding with decorators · intermediate · stable)
â
â Enter your project name:
â your-project-name
â
â Choose quick profile:
â â Minimal (Template only (no additional devtools))
â â Recommended (Balanced default toolchain)
â â Full (One tool from each category)
â
â Preset ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®
â â
â Quick profile selected: recommended (eslint, tsup, vitest, docker) â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯
â
â Configuration summary âââââââââââââââââââââââââââââââââââââââââââââââââ®
â â
â Setup mode : quick â
â Package manager: npm â
â Template : Express TypeScript â
â Project name : your-project-name â
â Devtools : ESLint + Prettier, tsup, Vitest, Docker â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯
â
â Proceed with project generation?
â â Yes / â No
â
â Dependencies installed!
â
â ð Project setup complete!
# íë¡ì ížë¡ ìŽë
cd your-project-name
# ê°ë° ìë² ìì
npm run dev
ìì±ë íë¡ì íž êž°ë¥:
- ð Express ìë²:
http://localhost:3000/ - ð nodemonì íµí í« ëŠ¬ë¡ë
í겜 ì€ì ë° ì€í
CLIë .env.exampleì êž°ë°ìŒë¡ .env륌 ìì±íê³ , SECRET_KEYì JWT_SECRET íëª©ìŽ ììŒë©Ž ëì ê°ì ì€ì í©ëë€. Ʞ졎 .envë ì ì§í©ëë€. ë¹ë°í€ë ìµì 32ìì¬ìŒ íë©° ìë €ì§ ìì ê°ì í¬íší ì ììµëë€. ë°°í¬ ì ìì±ë ì€ì ì í겜ì ë§ê² íìžíìžì.
Drizzleì DATABASE_URL ì€ì , PostgreSQL ì€ë¹ ë° npm run db:migrate ì€í í API륌 ì¬ì©íìžì. defaultì express-cargoë ë³ë ë°ìŽí°ë² ìŽì€ê° íìíì§ ììµëë€. pnpm ëë Yarnì ì ííë€ë©Ž pnpm dev ëë yarn devë¡ ì€íí ì ììµëë€.
ìžìŠÂ·ì¬ì©ì API 겜ë¡ë /api/v1/auth, /api/v1/usersìŽë©° ë£šíž URLì ëë© íìŽì§ê° ìëëë€.
ð íë¡ì íž êµ¬ì¡°
your-project/
âââ src/
â âââ config/ # í겜 ë³ì, ì€ì íìŒ
â âââ controllers/ # ìì² ì²ëЬ ë° ìëµ ë°í
â âââ dtos/ # ìì²/ìëµ ë°ìŽí° 구조 ì ì
â âââ entities/ # ëë©ìž ìí°í° ì ì
â âââ exceptions/ # 컀ì€í
ììž íŽëì€
â âââ interfaces/ # íì
/ìží°íìŽì€ ì ì
â âââ middlewares/ # 믞ë€ìšìŽ (ë¡ê·ž, ìžìŠ, ìë¬ ì²ëЬ ë±)
â âââ repositories/ # ë°ìŽí° ì ê·Œ ë¡ì§ (ìžë©ëªšëЬ ëë DB)
â âââ routes/ # ëŒì°í
ì ì
â âââ services/ # ë¹ìŠëì€ ë¡ì§
â âââ utils/ # ì ížëŠ¬í° íšì
â âââ app.ts # Express ì± ìŽêž°í
â âââ server.ts # ìë² ì€í ìížëЬ í¬ìžíž
âââ .env # ìë ìì±ë ë¡ì»¬ í겜 ì€ì
âââ .env.example # í겜 ë³ì ìì
âââ .gitignore # ë¹ë°í€Â·ìì± íìŒ Git ì ìž ì€ì
âââ .project-meta.json # ì íí í
í늿·ë구·íší€ì§ êŽëЬì ì 볎
âââ nodemon.json # Nodemon í겜 ë³ì
âââ package.json # íë¡ì íž ìì¡Žì± ë° ì€í¬ëŠœíž
âââ tsconfig.json # TypeScript í겜 ë³ì
컎íìŒë¬Â·í
ì€ížÂ·Docker ì€ì íìŒì ì íí ë구ì ë°ëŒ ì¶ê°ë©ëë€. íê²œë³ .env.{NODE_ENV}.local íìŒì ì í ì¬íìŽë©° ìë ìì±ëì§ ììµëë€. CLI ì
ë°ìŽížë ìë¡ ìì±íë íë¡ì ížì ì ì©ëë©° Ʞ졎 íë¡ì ížë ë³ëë¡ êŽëЬíŽìŒ í©ëë€.
ð ì¬ì© ê°ë¥í ê°ë° ë구
íë¡ì íž ì€ì ì€ ë€ì 칎í ê³ ëŠ¬ìì ì íí ì ììµëë€:
| 칎í ê³ ëŠ¬ | ì¬ì© ê°ë¥í ë구 | ì€ëª |
|---|---|---|
| ëŠ°í° | biome, eslint, oxlint |
ìœë í¬ë§·í ë° ëŠ°í (Biomeì ì¬ìžì) |
| ë²ë€ë¬ | swc, tsup |
ë¹ ë¥ž TypeScript 컎íìŒ ë° ë²ë€ë§ |
| í ì€íž | jest, vitest |
ëšì ë° íµí© í ì€íž íë ììí¬ |
| 컚í ìŽë | docker |
Dockerfile ë° Docker Compose êµ¬ì± |
ëì€ì ì¶ê°ë ìì (íì¬ ê°ë° ì€):
| 칎í ê³ ëŠ¬ | ì¬ì© ê°ë¥í ë구 | ì€ëª |
|---|---|---|
| íë¡ìžì€ | pm2 |
íë¡ëì íë¡ìžì€ êŽëЬ |
| CI/CD | github |
GitHub Actions ìí¬íë¡ì° |
| Git í | husky |
íì§ êŽëŠ¬ë¥Œ ìí Pre-commit í |
| API 묞ì | swagger |
OpenAPI/Swagger 묞ì |
ì€ë§íž ì í: ì¶ì² íë¡íì í íëŠ¿ë³ ë구 구ì±ì ì¬ì©í©ëë€. CLIë íŽë¹ 컎íìŒë¬Â·í ì€íž ì€ì ì ë³µì¬íê³ íì íìŒìŽ ëëœë멎 ì€ë¥ë¥Œ íìí©ëë€.
ð§© ì¬ì© ê°ë¥í í í늿
CLIìì ì íí ì ììŒë©° npm íší€ì§ì í¬íšëë í í늿ì ëë€:
â ì¬ì© ê°ë¥í í í늿
| í í늿 | ì€ëª | ì ì¥ì |
|---|---|---|
default |
Express + TypeScript ë° Zod ìì² ê²ìŠ | ìžë©ëªšëЬ |
drizzle-postgresql |
Drizzle ORM곌 PostgreSQL ì°ë | PostgreSQL |
express-cargo |
ë°ìœë ìŽí° êž°ë° DTO ê²ìŠ ë° ìì² ë°ìžë© | ìžë©ëªšëЬ |
ìžë©ëªšëЬ í í늿ì ì¬ì©ì ë°ìŽí°ë íë¡ìžì€ë¥Œ ì¬ììí멎 ìŽêž°íë©ëë€. DTOì ë°ìžë© ìì ë express-cargo ê°ìŽë륌 ì°žê³ íìžì.
ð§ í¥ìë ê°ë° ë구 ì§ì
íì± í í늿ì ë€ì ë구ì ì€ì ì ì ê³µí©ëë€:
늰í°
- â Biome - íëì íµí© ë구 (ëŠ°í° + í¬ë§·í°)
- â ESLint + Prettier - ì íµì ìŽê³ ìì ì ìž ì¡°í©
- â Oxlint - Rust êž°ë° ê³ ì±ë¥ 늰í°
컎íìŒë¬
- â tsup - esbuild êž°ë° ë²ë€ë¬
- â SWC - Rust êž°ë° ë€ìŽí°ëž ì±ë¥ 컎íìŒë¬
í ì€íž ë¬ë
- â Jest - ìì í E2E ì§ìì ê°ì§ ì±ìí í ì€íž íë ììí¬
- â Vitest - íëì Vite êž°ë° í ì€íž ë¬ë
ð¯ ìì± í ì€ížë íì± í í늿·늰í°Â·ì»ŽíìŒë¬Â·í ì€íž ë¬ë·Dockerì 36ê° ì¡°í©ì ëììŒë¡ í©ëë€. ì€ì ì€í ížíì±ì ë³ëì
npm run test:matrixëª ë ¹ìŒë¡ íìží ì ììµëë€.
ð§ ê°ë° ìì
ìë í목ì CLIìì ì íí ì ììµëë€. Prismaì Mongoose 구íì ì ì¥ìì ìì§ë§ ê²ìŠ ëêž° ìíìŽë©° npm íší€ì§ììë ì ìžë©ëë€.
ORM/ë°ìŽí°ë² ìŽì€ ì°ë
| í í늿 | ì€ëª | ì°ì ìì |
|---|---|---|
prisma-postgresql |
íì ìì ë°ìŽí°ë² ìŽì€ íŽëŒìŽìžíž, ìë íì ìì± | ð¥ ë€ì |
mongoose-mongodb |
Node.jsì© ì°ìí MongoDB ODM | ð¥ ë€ì |
typeorm |
ë°ìœë ìŽí° êž°ë° Active Record ORM | ð§ ìì |
sequelize |
ì±ìí Promise êž°ë° SQL ORM | ð§ ìì |
mikro-orm |
TypeScriptì© Data Mapper ORM íšíŽ | ð§ ìì |
typegoose |
TypeScript ì¹íì Mongoose ëì | ð§ ìì |
node-postgres |
ê³ ì±ë¥ PostgreSQL ìì ëëŒìŽë² | ð§ ìì |
knex |
ì ì°í SQL 쿌늬 ë¹ë ë° ë§ìŽê·žë ìŽì | ð§ ìì |
ìí€í ì²/컚ížë¡€ë¬ ì€íìŒ
| í í늿 | ì€ëª | ì°ì ìì |
|---|---|---|
graphql |
Apollo Server êž°ë° GraphQL API ì€í€ë§ | ð§ ê²í ì€ |
ð€ ìŽ CLI륌 ì¬ì©íë ìŽì ?
vs. ìë ì€ì
| 잡멎 | ìë ì€ì | TypeScript Express Starter CLI |
|---|---|---|
| ìê° | ðŽ ì ìê°ì êµ¬ì± ìì | â ëíí ì€ì ìëŽ |
| êµ¬ì± | ðŽ ìë ìì¡Žì± êŽëЬ | â ìë íŽê²°, íží ë²ì |
| ëªšë² ì¬ë¡ | ðŽ ì°êµ¬ íì | â ì¬ì 구ì±ë ì ê³ íì€ |
| ìŒêŽì± | ðŽ ê°ë°ìë§ë€ ë€ëŠ | â íì€íë íë¡ì íž êµ¬ì¡° |
| ì ë°ìŽíž | ðŽ ìë ì ì§ë³Žì | â ì íë¡ì ížì ìµì í í늿 ì ì© |
vs. ë€ë¥ž ìì±êž°
| êž°ë¥ | TypeScript Express Starter | ë€ë¥ž ìì±êž° |
|---|---|---|
| ë°ìŽí°ë² ìŽì€ ì í | â PostgreSQL ë° ì¶ê° ì°ë ê³í | ì íë ìµì |
| ë구 ì í | â ë¯¹ì€ ì€ ë§€ì¹ ê°ë° ë구 | ê³ ì ë ì€í |
| TypeScript ì°ì | â TypeScript륌 ìíŽ ì ì | ì£Œë¡ JS ì°ì |
| íë¡ëì ì€ë¹ | â Docker êµ¬ì± ì í ê°ë¥ | Ʞ볞 ì€ì |
âïž ììíŽì£Œì ë¶ë€
ðŽ ì°žê³ íìë ë¶ë€
ð€ ëì죌ì ë¶ë€
ð³ ëŒìŽì ì€
Made with â€ïž by AGUMON ðŠ
êŽë š íë¡ì íž ìŽíŽë³Žêž°
codecrafters-io/build-your-own-x
ì¢ìíë êž°ì ì ì²ìë¶í° ë€ì 구ííë©° íë¡ê·žëë°ì ë§ì€í°íìžì.
561,882 ì€ípublic-apis/public-apis
ë¬Žë£ API륌 몚ì ë 목ë¡
498,251 ì€ímorluto/rea
ììŽì ížë¥Œ ì¬ì©íŽ ì± ëìë¶í° ë€ìŽí°ëž ë°ìŽë늬ê¹ì§ 묎ììŽë 늬ë²ì€ ìì§ëìŽë§í©ëë€.
452,763 ì€íopenclaw/openclaw
ì ë§ë¡ ìŒì íŽëŽë AI. ìŽë€ ìŽì첎ì ì íë«íŒììë ì¬ì©í ì ììµëë€. ëì€í° ë°©ì. ðŠ
394,365 ì€í