-
Notifications
You must be signed in to change notification settings - Fork 0
Folder Structure
White_DeepDive edited this page Jul 24, 2026
·
2 revisions
도메인별 모듈 구조를 따릅니다. 각 도메인은 src/ 바로 아래에 독립된 폴더로 배치합니다.
src/
├── main.ts # 애플리케이션 진입점
├── app.module.ts # 루트 모듈
│
├── common/ # 공통 모듈 (2개 이상 도메인에서 사용)
│ ├── filters/ # 예외 필터
│ ├── interceptors/ # 인터셉터
│ ├── guards/ # 가드
│ ├── decorators/ # 커스텀 데코레이터
│ └── pipes/ # 파이프
│
├── config/ # 환경 설정
│
└── user/ # 도메인 모듈 (예시)
├── user.module.ts # 도메인 모듈 정의
├── user.controller.ts # HTTP 요청 처리
├── user.service.ts # 비즈니스 로직
├── user.service.spec.ts # 테스트 (소스 파일 옆에 위치)
├── dto/ # Data Transfer Object
│ ├── create-user.dto.ts
│ └── update-user.dto.ts
└── entities/ # 엔티티
└── user.entity.ts
| 디렉토리 | 책임 |
|---|---|
common/ |
여러 도메인에서 공통으로 사용하는 코드. 2개 이상의 도메인에서 사용될 때만 여기에 배치 |
config/ |
환경 변수, 데이터베이스, 외부 서비스 등 설정 관련 코드 |
{domain}/ |
하나의 도메인에 관련된 모든 코드 (controller, service, dto, entity 등) |
{domain}/dto/ |
요청/응답 데이터 형식 정의 |
{domain}/entities/ |
데이터베이스 엔티티 정의 |
# NestJS CLI로 도메인 리소스 생성 (권장)
nest g resource user- 도메인 관련 코드는 해당 도메인 폴더 안에 배치
- 테스트 파일(
*.spec.ts)은 테스트 대상 소스 파일 옆에 위치 -
common/에는 최소 2개 도메인에서 사용하는 코드만 배치 (1개 도메인만 사용하면 해당 도메인 폴다에)
- 같은 도메인 내: 상대 경로 사용
- 다른 도메인 / common 참조: 절대 경로 (
src/기준) 사용 권장
// 같은 도메인 내
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
// common 모듈
import { HttpExceptionFilter } from 'src/common/filters/http-exception.filter';{도메인}.{역할}.ts # user.controller.ts, user.service.ts
{동작}-{도메인}.dto.ts # create-user.dto.ts
{도메인}.entity.ts # user.entity.ts
{도메인}.{역할}.spec.ts # user.service.spec.ts