Express + TypeScript λ°±μ—”λ“œ API 개발 μ—¬μ •


πŸ“Š ν”„λ‘œμ νŠΈ κ°œμš”

νŒ€ ꡬ성 및 μ—­ν• 

이름 λ‹΄λ‹Ή 도메인 μ£Όμš” κΈ°μ—¬
κΉ€λ™ν˜„ Cart, Order ν…œν”Œλ¦Ώ 제곡, 초기 μ„ΈνŒ…, ν”„λ‘ νŠΈ μˆ˜μ •
κΉ€ν˜œμ—° User, Auth Auth μ‹œμŠ€ν…œ λΉ λ₯Έ κ΅¬ν˜„
λ°•λ‹€μŠ¬ Inquiry, Notification ν…ŒμŠ€νŠΈ ꡬ쑰 섀계 (AAA νŒ¨ν„΄, jest-mock-extended)
μ΄ν•˜μ˜ S3, Dashboard, Metadata λ¬Έμ„œν™” 및 회의둝 관리
μ΅œν™κΈ° Store Git 좩돌 ν•΄κ²° (cherry-pick)
홍쀀기 Product, Review 기술 λ…ΌμŸ μ‹œ λͺ…μΎŒν•œ μ†”λ£¨μ…˜ 제곡

ν”„λ‘œμ νŠΈ 수치


0️⃣ ν”„λ‘œμ νŠΈ μ‹œμž‘ κ³Όμ •

0.1 κ²€μ¦λœ ν…œν”Œλ¦ΏμœΌλ‘œ 좜발 (λ™ν˜„λ‹˜)

πŸ’‘ 핡심: μ²˜μŒλΆ€ν„° λ§Œλ“€μ§€ μ•Šκ³  κ²€μ¦λœ κ΅¬μ‘°μ—μ„œ μ‹œμž‘

λ™ν˜„λ‹˜μ΄ μ œκ³΅ν•œ ν…œν”Œλ¦Ώ ꡬ쑰

src/
β”œβ”€β”€ app.ts              # Express μ•± μ„€μ •
β”œβ”€β”€ server.ts           # HTTP μ„œλ²„ μ—”νŠΈλ¦¬ν¬μΈνŠΈ
β”œβ”€β”€ jest.config.cjs     # μ„ΈνŒ… νŒŒμΌλ“€μ˜ 베이슀 μ½”λ“œ
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ eslint.config.mjs
β”œβ”€β”€ babel.config.cjs
β”œβ”€β”€ .prettierrc
β”œβ”€β”€ .gitignore
β”œβ”€β”€ package.json
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ constants.ts    # ν™˜κ²½λ³€μˆ˜ (Zod 검증)
β”‚   └── prisma.ts       # Prisma ν΄λΌμ΄μ–ΈνŠΈ
β”œβ”€β”€ domains/
β”‚   └── {domain}/
β”‚       β”œβ”€β”€ {domain}.container.ts   # DI μ»¨ν…Œμ΄λ„ˆ
β”‚       β”œβ”€β”€ {domain}.router.ts      # 라우트
β”‚       β”œβ”€β”€ {domain}.controller.ts  # 컨트둀러
β”‚       β”œβ”€β”€ {domain}.service.ts     # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚       └── {domain}.repository.ts  # DB μž‘μ—…
└── common/
    β”œβ”€β”€ middlewares/    # 곡톡 미듀웨어
    └── utils/          # μœ ν‹Έλ¦¬ν‹°

효과