클린 아키텍처, 도메인 주도 설계(DDD), 헥사고날 아키텍처 원칙을 따르는 현대적인 NestJS 애플리케이션입니다.
Life Hacking API는 개인의 생산성 향상과 일상 관리를 돕는 서비스를 위한 백엔드 API입니다.
- 클린 아키텍처: 계층 분리와 관심사의 분리
- 도메인 주도 설계: 비즈니스 로직 중심의 설계
- 헥사고날 아키텍처: 외부 시스템과의 느슨한 결합
- 포트-어댑터 패턴: 확장 가능한 인터페이스 설계
- 유스케이스 중심 설계: 비즈니스 로직 조율의 핵심으로 유스케이스 활용
- 의존성 역전: 외부 레이어에서 내부 레이어로의 단방향 의존성
- 심볼 기반 의존성 주입: 느슨한 결합을 위한 NestJS Symbol 토큰 활용
- 경계 컨텍스트 분리: 도메인별 명확한 책임과 경계 정의
- 계층별 검증 책임: Presentation(형식) → Application(비즈니스) → Domain(불변조건)
- Request DTO: 프로퍼티 기반 + class-validator 데코레이터
- Response DTO: @Expose 데코레이터 + 정적 팩토리 메서드
- ValidationPipe 전역 적용: 일관된 검증, ClassSerializerInterceptor 개별 적용으로 성능 최적화
Domain Entity → Use Case (DTO 변환) → Controller → JSON 직렬화
- Use Case: 도메인 엔티티를 DTO로 변환하여 아키텍처 경계 보호
- Controller: ClassSerializerInterceptor로 DTO를 JSON으로 직렬화
- 명확한 책임 분리: 각 단계별 고유한 변환 책임
- Unit Tests: 유스케이스와 도메인 로직에 집중
- Integration Tests: 어댑터와 외부 시스템 연동 검증
- E2E Tests: Presentation 레이어를 통한 전체 기능 워크플로우
- Contract Tests: 포트-어댑터 계약 검증
- 🔐 Google OAuth 인증: 간편한 소셜 로그인
- 👤 사용자 관리: 프로필 조회 및 수정
- 🔑 JWT 토큰 관리: 액세스 토큰 및 리프레시 토큰
- 📱 멀티 디바이스 로그아웃: 전체 디바이스에서 로그아웃
- 🛡️ 타입 안전성: TypeScript 기반 개발
- ✅ 데이터 검증: 요청/응답 데이터 유효성 검사
- NestJS 11: Node.js 프레임워크
- TypeScript 5.7: 정적 타입 언어
- Prisma 6.15: ORM 및 데이터베이스 툴킷
- PostgreSQL: 관계형 데이터베이스
- Passport.js: 인증 미들웨어
- JWT: JSON Web Token 기반 인증
- Google OAuth 2.0: 소셜 로그인
- ESLint & Prettier: 코드 품질 관리
- Jest: 테스트 프레임워크
- class-validator: DTO 검증
- Node.js 18 이상
- PostgreSQL 데이터베이스
- Google OAuth 클라이언트 설정
# 의존성 설치
npm install
# 환경 변수 설정
cp src/config/env/.env.example src/config/env/.env.development
# 데이터베이스 설정
npm run prisma:generate
npm run prisma:push
# 개발 서버 실행
npm run start:dev서버가 http://localhost:3000에서 실행됩니다.
# 개발 서버
npm run start:dev # 핫 리로드와 함께 개발 서버 시작
# 코드 품질
npm run lint # ESLint 실행 및 자동 수정
npm run format # Prettier로 코드 포맷팅
# 테스트
npm run test # 단위 테스트
npm run test:e2e # E2E 테스트
npm run test:cov # 테스트 커버리지
# 데이터베이스
npm run prisma:generate # Prisma 클라이언트 생성src/
├── domains/ # 도메인 모듈 (DDD 경계)
│ ├── auth/ # 인증 도메인
│ └── user/ # 사용자 도메인
├── config/ # 환경 설정
├── database/ # 데이터베이스 모듈
└── shared/ # 공유 유틸리티
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET |
/auth/google |
Google OAuth 로그인 시작 |
POST |
/auth/google/callback |
OAuth 콜백 처리 |
POST |
/auth/refresh |
토큰 갱신 |
POST |
/auth/logout |
로그아웃 |
POST |
/auth/logout/all |
전체 디바이스 로그아웃 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET |
/users/profile |
사용자 프로필 조회 |
PATCH |
/users/profile |
사용자 프로필 수정 |
자세한 API 문서는 CLAUDE.md 파일을 참조하세요.
이 프로젝트는 UNLICENSED 라이선스를 따릅니다.
❤️ NestJS, 클린 아키텍처, 도메인 주도 설계로 구축되었습니다.