# 프로젝트 컨텍스트 (PROJECT_CONTEXT.md)

> 이 문서는 프로젝트 전반에 걸친 "불변의 지식"을 유지하기 위한 핵심 문서입니다.
> AI 에이전트 및 팀원들이 프로젝트 아키텍처와 전역 규칙을 잃지 않도록 보조합니다.

## 기술 스택 (Tech Stack)
- **Frontend**: Next.js 14 (App Router), React 18
- **Backend**: NestJS, Node.js 20+
- **Database**: PostgreSQL, Prisma ORM
- **Package Manager**: pnpm (모노레포 - Turborepo)
- **Styling**: TailwindCSS, Radix UI

## 디렉토리 구조 (Directory Structure)
- `apps/web`: 사용자향 웹 애플리케이션 프론트엔드
- `apps/admin`: 사내 관리자용 대시보드
- `apps/api`: 공통 백엔드 API (NestJS)
- `packages/shared-ui`: 공통 UI 컴포넌트 라이브러리 (React)
- `packages/shared-types`: 프론트/백엔드 공유 타입 레포지토리

## 명명 규칙 (Naming Conventions)
- **파일/폴더명 (컴포넌트)**: `PascalCase` (예: `UserProfile.tsx`)
- **파일/폴더명 (유틸/훅 등 일반)**: `kebab-case` (예: `format-date.ts`, `use-auth.ts`)
- **인터페이스/타입**: 접두사 없이 `PascalCase` 사용 (예: `User`, `ISomething` 방식 금지)
- **상수 (Constants)**: `UPPER_SNAKE_CASE` (예: `MAX_ITEMS_PER_PAGE`)

## 코딩 컨벤션 및 린팅 규칙 (Coding Conventions)
- 린트는 **Biome**을 기본으로 사용합니다. (Prettier, ESLint 혼용 주의)
- 모든 컴포넌트는 `export default` 대신 Named Export를 권장합니다.
- 상태 관리는 복잡도에 따라 서버 상태는 React Query, 클라이언트 상태는 Zustand를 사용합니다.

## Git 워크플로우
- `main` 브랜치: 프로덕션 배포
- `develop` 브랜치: 스테이징/통합 테스트
- 기능 브랜치: `feat/` 또는 `fix/` 하위 브랜치 생성 후 작업, PR을 통해 `develop`에 병합

---
*참조: 상세한 기능 명세는 `PRODUCT_REQUIREMENTS.md`를 참고하고, 현재 진행 중인 태스크 상태는 `TASK_BREAKDOWN.md`를 확인하세요.*
