Tastebox Backend는 NestJS 기반의 백엔드 서버로, 인증, 사용자 관리, 영화/TV 정보 제공 등의 API를 제공합니다.
- 사용자 인증 및 소셜 로그인(Google, Kakao)
- 영화/TV 정보 제공 API
- JWT/Refresh Token 기반 인증
- Redis를 활용한 세션/토큰 관리
- Swagger(OpenAPI) 기반 API 문서 제공
- 코드 포맷팅/린팅 자동화 및 커밋 컨벤션 강제
- Node.js, NestJS, TypeScript
- MySQL, Redis
- JWT, OAuth2 (Google, Kakao)
- Biome, Prettier, Husky, lint-staged, commitlint
.env 파일은 절대 깃허브에 올리지 마세요.
아래 예시를 참고해 .env.example 파일을 복사하여 .env로 사용하고,
각 항목에 실제 값을 입력하세요.
# MySQL 환경변수
MYSQL_DATABASE=
MYSQL_HOST=
MYSQL_PORT=
MYSQL_USERNAME=
MYSQL_PASSWORD=
MYSQL_SYNCHRONIZE=
# Redis 환경변수
REDIS_HOST=
REDIS_PORT=
REDIS_PASSWORD=
REDIS_REFRESH_EXPIRE_SECONDS=
# Google API
GOOGLE_API_KEY=
# JWT
JWT_SECRET=
JWT_EXPIRES_IN=
# Refresh JWT
REFRESH_JWT_SECRET=
REFRESH_JWT_EXPIRES_IN=
# Google OAuth
GOOGLE_CLIENT_ID=
GOOGLE_SECRET=
GOOGLE_CALLBACK_URL=
# Kakao OAuth
KAKAO_CLIENT_ID=
KAKAO_CALLBACK_URL=
| 변수명 | 설명 | 예시값/비고 |
|---|---|---|
| MYSQL_DATABASE | MySQL 데이터베이스 이름 | tastebox |
| MYSQL_HOST | MySQL 호스트 주소 | 127.0.0.1 |
| MYSQL_PORT | MySQL 포트 번호 | 3306 |
| MYSQL_USERNAME | MySQL 사용자명 | root |
| MYSQL_PASSWORD | MySQL 비밀번호 | |
| MYSQL_SYNCHRONIZE | TypeORM 동기화 여부 (true/false) | true |
| REDIS_HOST | Redis 호스트 주소 | 127.0.0.1 |
| REDIS_PORT | Redis 포트 번호 | 6379 |
| REDIS_PASSWORD | Redis 비밀번호 | |
| REDIS_REFRESH_EXPIRE_SECONDS | Redis 리프레시 토큰 만료(초) | 86400 (1일) |
| GOOGLE_API_KEY | Google API 키 | |
| JWT_SECRET | JWT 서명용 시크릿 | |
| JWT_EXPIRES_IN | JWT 만료 기간 | 1d |
| REFRESH_JWT_SECRET | 리프레시 토큰용 시크릿 | |
| REFRESH_JWT_EXPIRES_IN | 리프레시 토큰 만료 기간 | 7d |
| GOOGLE_CLIENT_ID | 구글 OAuth Client ID | |
| GOOGLE_SECRET | 구글 OAuth Secret | |
| GOOGLE_CALLBACK_URL | 구글 OAuth 콜백 URL | http://localhost:3000/auth/google/callback |
| KAKAO_CLIENT_ID | 카카오 OAuth Client ID | |
| KAKAO_CALLBACK_URL | 카카오 OAuth 콜백 URL | http://localhost:3000/auth/kakao/callback |
-
레포지토리 클론
git clone https://github.com/StepUp2025/TasteBox-Backend.git cd tastebox-backend -
의존성 설치
npm install
-
환경변수 파일 생성
.env.example을 복사해.env로 만들고, 실제 값을 입력하세요.
-
DB/Redis 등 외부 서비스 준비
-
개발 서버 실행
npm run start:dev
src/
├── auth/ # 인증/인가 관련 모듈
├── user/ # 사용자 관련 모듈
├── movie/ # 영화 정보 API
├── tv/ # TV 정보 API
├── common/ # 공통 유틸리티, 데코레이터 등
├── main.ts # 엔트리포인트
└── ...
- 코드 포맷팅/린팅
npm run format으로 전체 코드 자동 정렬(기존 작업 중인 파일도 포함)- 마크다운 파일은 Prettier로, 나머지는 Biome으로 포맷팅
- 커밋 컨벤션
- 커밋 메시지는 팀 규칙을 따라 작성 (commitlint 자동 체크)
- 브랜치 네이밍
feat/,fix/,chore/등 prefix 사용
- VSCode 확장
- Biome 확장 설치
.vscode/settings.json참고
- 윈도우 사용자
- 줄바꿈 정책:
git config --global core.autocrlf false
- 줄바꿈 정책:
- 초기 설정 단계에서는 자동화 체크(CI/CD, git hook 등)로 에러/경고가 있어도 커밋/PR/머지가 가능
- 코드 품질 경고가 모두 수정되면, 이후에는 CI/CD에서 에러/경고 발생 시 PR/머지가 차단될 예정