이 프로젝트는 구독 공유 통합 관리 서비스 엔빵의 프론트엔드 저장소입니다.
- Framework: Next.js (App Router)
- Language: TypeScript (Strict Mode)
- Backend: Supabase
- State Management: Zustand
- Styling: Tailwind CSS
AI는 아래 원칙을 항상 우선적으로 따릅니다.
- 기존 기능이 정상 동작하는 것을 최우선으로 합니다.
- 필요한 범위만 최소한으로 수정합니다.
- 큰 변경보다 작은 변경을 선호합니다.
- 추측하여 구현하지 않습니다.
- 기존 코드 스타일과 프로젝트 구조를 최대한 유지합니다.
모든 개발 작업은 아래 순서를 따릅니다.
구현 설계서
↓
GitHub Issue
↓
구현
↓
Pull Request
↓
Code Review
- 구현 전에 작업 목적과 범위를 먼저 이해합니다.
- 하나의 Issue는 가능한 하나의 PR로 구현합니다.
- PR이 너무 커질 경우 Task 단위로 작업을 다시 분리합니다.
- 구현보다 작업 분해와 영향 범위를 먼저 검토합니다.
- TypeScript Strict Mode를 유지합니다.
any사용은 지양합니다.- 기존 프로젝트의 코드 스타일을 따릅니다.
- 새로운 구조를 만들기보다 기존 패턴을 우선 재사용합니다.
- UI 컴포넌트에서 비즈니스 로직을 직접 구현하지 않습니다.
- 기존 Helper 또는 Lib가 있다면 우선 활용합니다.
작업 완료 후 아래 내용을 확인합니다.
npm run lintnpm run build
Playwright 테스트가 존재하는 경우 영향을 받은 기능을 함께 검증합니다.
리뷰의 목적은 코드 스타일을 지적하는 것이 아니라, 변경 사항의 위험 요소와 의사결정을 검증하는 것입니다.
리뷰 시 아래 순서를 우선합니다.
-
Why
- 이 작업을 왜 해야 하는가?
- 지금 해결해야 하는 이유가 충분한가?
-
Decision
- 구현 방식이 문제를 해결하는 데 적절한가?
- 더 단순하거나 안전한 대안은 없는가?
-
Impact
- 기존 기능에 영향을 주지 않는가?
- 회귀(Regression), 데이터 정합성, 성능 저하 가능성은 없는가?
-
Review Points
- 작성자가 지정한 위험 영역을 우선 검토한다.
코드 스타일보다 기능 안정성과 사용자 영향도를 우선하며, P0/P1 수준의 문제에 집중합니다.
- Secret 또는
.env파일은 절대 커밋하지 않습니다. - Supabase Schema 변경 시 Type을 최신 상태로 유지합니다.
- RLS 관련 변경은 특히 신중하게 검토합니다.
- 운영 환경에서만 사용하는 설정은 유지합니다.
작업 시 다음 내용을 항상 명확히 설명합니다.
- 왜 이 작업이 필요한가
- 어떤 방식을 선택했는가
- 어떤 대안을 검토했는가
- 어떤 영향 범위를 가지는가
- 어떤 리스크가 존재하는가
불필요한 리팩토링이나 구조 변경은 제안하지 않습니다.