# Node Express

> Express/Fastify 기반 Node.js 백엔드 컨벤션 Use when this capability is needed.

- Skill: `tomevault-io/node-express` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/node-express`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/node-express/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/node-express

---


# Node.js Express/Fastify 컨벤션

## 프로젝트 구조

```
src/
├── app.ts           # 앱 초기화, 미들웨어 등록
├── server.ts        # 서버 진입점 (app.ts와 분리)
├── routes/          # 라우터 모음
├── controllers/     # 요청/응답 처리
├── services/        # 비즈니스 로직
├── middleware/      # 커스텀 미들웨어
├── models/          # DB 모델 (Prisma schema 또는 ORM)
└── types/           # 공유 TypeScript 타입
```

## 네이밍 규칙

- 파일: `camelCase.ts` 또는 `kebab-case.ts` (프로젝트 일관성 유지)
- 클래스: `PascalCase`
- 함수/변수: `camelCase`
- 환경변수: `UPPER_SNAKE_CASE`
- 라우트 경로: `kebab-case` (예: `/user-profiles`)

## 에러 처리

- 중앙 집중식 에러 핸들러 미들웨어 (`middleware/errorHandler.ts`)
- `AppError` 커스텀 클래스로 상태 코드 + 메시지 캡슐화
- async 라우터는 `express-async-errors` 또는 `try-catch` wrapper 사용

## 테스트

- `Jest` + `supertest` 조합
- 서비스 레이어 단위 테스트 + 라우터 통합 테스트
- DB mock: `jest.mock` 또는 테스트 전용 DB 인스턴스

---
> Source: [ggombee/code-forge](https://github.com/ggombee/code-forge) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-14 -->

