38 lines
1.5 KiB
Plaintext
38 lines
1.5 KiB
Plaintext
---
|
|
description: Project guidance for chzzk-server (NestJS REST + Chzzk API proxy)
|
|
globs:
|
|
- "**/*.ts"
|
|
- "**/*.md"
|
|
---
|
|
|
|
## 목표(Goal)
|
|
- 이 프로젝트는 Chzzk API로부터 데이터를 받아 가공(processing)하여 내부 서비스(internal services)가 쉽게 사용하도록 제공하는 NestJS REST API 서버.
|
|
|
|
## 핵심 설계 원칙(Principles)
|
|
- 외부 API 호출(Chzzk API call)은 서버에서만 수행(server-side only).
|
|
- 내부용 API(internal API)는 안정성(reliability) 우선: timeout, retry, rate limit, cache를 고려.
|
|
- 의존성 경계(boundary)를 분리:
|
|
- controller: HTTP 계약(contract)
|
|
- service/usecase: 도메인 로직(domain logic)
|
|
- adapter/client: Chzzk API 통신(HTTP client)
|
|
- infra: config, logging, postgres(pg) 연결
|
|
|
|
## REST API 스타일(Style)
|
|
- `/v1/...` 형태의 버저닝(versioning) 기본.
|
|
- DTO + validation(pipe) 사용.
|
|
- 공통 응답 포맷(response envelope)은 필요 시 도입하되, 과도한 래핑(wrapping)은 피함.
|
|
|
|
## 보안/인증(Security/Auth)
|
|
- 인증은 미정이므로, 최소한 다음을 쉽게 추가 가능하게 구조화:
|
|
- API key 헤더 기반(`x-api-key`)
|
|
- 또는 내부망(internal network)에서만 접근 가능한 방화벽/프록시(proxy) 구성
|
|
|
|
## PostgreSQL (No ORM)
|
|
- `pg` Pool 기반.
|
|
- 마이그레이션(migration)은 SQL 파일 방식 또는 간단한 migration runner(추가 가능).
|
|
|
|
## 운영(Ops)
|
|
- 환경변수(env): `.env`/`.env.example`로 관리.
|
|
- 로깅(logging): request id, latency 포함.
|
|
- 헬스체크(healthcheck): `/health`.
|