# 적자 탈출 가계부 - 2단계 계획 ## 1. 2단계 목표 2단계의 주요 목표는 적자 탈출 가계부 앱의 백엔드 인프라를 구축하고, 데이터베이스를 설계하며, 기본적인 API 엔드포인트를 개발하는 것입니다. 이를 통해 3단계에서 진행될 프론트엔드 개발을 위한 기반을 마련합니다. ### 핵심 목표 1. [x] Supabase 기반 백엔드 인프라 구축 2. [x] 데이터베이스 스키마 구현 3. [x] 기본 API 엔드포인트 개발 4. [x] 사용자 인증 시스템 구현 5. [ ] 초기 테스트 환경 구성 ## 2. 작업 목록 및 일정 ### 1일차: Supabase 프로젝트 설정 #### 오전 - [x] [사용자] Supabase 계정 생성 및 프로젝트 생성 - [x] [AI] Supabase 프로젝트 설정 가이드 작성 - [x] [공동] 프로젝트 환경 변수 및 보안 설정 #### 오후 - [x] [AI] 데이터베이스 연결 테스트 코드 작성 - [x] [사용자] 데이터베이스 연결 테스트 - [x] [AI] 기본 백엔드 구조 설계 문서 작성 ### 2일차: 데이터베이스 스키마 구현 #### 오전 - [x] [AI] SQL 스키마 스크립트 작성 - [x] Users 테이블 생성 - [x] Cards 테이블 생성 - [x] Categories 테이블 생성 - [x] Expenses 테이블 생성 - [x] Limits 테이블 생성 - [x] Notifications 테이블 생성 - [x] Templates 테이블 생성 #### 오후 - [x] [사용자] SQL 스키마 스크립트 실행 및 검증 - [x] [AI] 기본 카테고리 데이터 삽입 스크립트 작성 - [x] [사용자] 기본 데이터 삽입 및 확인 - [x] [공동] 데이터베이스 인덱스 및 제약 조건 검토 - [x] [공동] 코드 및 문서 관리 원칙 수립 (Gitea와 옵시디언 통합) ### 3-4일차: API 엔드포인트 개발 #### 3일차 오전 - [x] [AI] 사용자 관리 API 개발 - [x] 회원가입 API - [x] 로그인 API - [x] 프로필 조회/수정 API - [x] 비밀번호 변경/재설정 API #### 3일차 오후 - [x] [AI] 카드 관리 API 개발 - [x] 카드 등록 API - [x] 카드 조회 API - [x] 카드 수정/삭제 API - [x] 카드 한도 설정 API #### 4일차 오전 - [x] [AI] 지출 관리 API 개발 - [x] 지출 등록 API - [x] 지출 조회 API - [x] 지출 수정/삭제 API - [x] 지출 필터링/검색 API #### 4일차 오후 - [x] [AI] 분석 및 대시보드 API 개발 - [x] 카테고리별 지출 분석 API - [x] 기간별 지출 추이 API - [x] 한도 사용 현황 API - [x] 대시보드 요약 정보 API ### 5일차: 인증 및 보안 구현 #### 오전 - [x] [AI] 사용자 인증 시스템 구현 - [x] JWT 토큰 기반 인증 설정 - [x] 소셜 로그인 연동 (Google, Kakao, Naver, Apple) - [x] 권한 관리 시스템 구현 #### 오후 - [x] [AI] 데이터 보안 구현 - [x] 민감 정보 암호화 설정 - [x] API 요청 검증 미들웨어 구현 - [x] CORS 및 보안 헤더 설정 ### 6일차: 테스트 및 문서화 #### 오전 - [x] [AI] API 테스트 스크립트 작성 - [x] 단위 테스트 작성 - [x] 통합 테스트 작성 - [x] 성능 테스트 작성 #### 오후 - [x] [공동] API 문서 작성 - [x] Swagger/OpenAPI 문서 생성 - [x] API 엔드포인트 사용 예제 작성 - [x] 에러 코드 및 응답 형식 문서화 ### 7일차: 2단계 검토 및 3단계 준비 #### 오전 - [x] [공동] 2단계 산출물 검토 - [x] 백엔드 기능 테스트 - [x] API 응답 검증 - [x] 성능 및 보안 검토 #### 오후 - [ ] [공동] 3단계 계획 수립 - [ ] 3단계 작업 목록 초안 작성 - [ ] 3단계 일정 및 우선순위 결정 - [ ] 3단계 목표 및 성공 기준 정의 - [ ] [AI] 2단계 결과물 최종 정리 및 문서화 ## 3. 기술적 고려사항 ### 3.1 Supabase 설정 - Supabase 프로젝트 리전: 서울 (ap-northeast-2) - 데이터베이스 성능 티어: 스타터 플랜 - 스토리지 설정: 영수증 이미지 저장용 버킷 구성 - 백업 설정: 일일 자동 백업 활성화 ### 3.2 API 설계 원칙 - RESTful API 설계 원칙 준수 - JSON 응답 형식 표준화 - HTTP 상태 코드 적절히 활용 - 페이지네이션 및 필터링 지원 - 일관된 에러 처리 및 응답 형식 ### 3.3 보안 고려사항 - 모든 API 요청에 인증 필요 (공개 API 제외) - 비밀번호 해싱에 bcrypt 사용 - API 요청 속도 제한 설정 - 민감한 정보는 서버 측에서만 처리 - HTTPS 강제 적용 ### 3.4 성능 최적화 - 데이터베이스 쿼리 최적화 - 적절한 인덱스 설정 - 캐싱 전략 구현 (Redis 고려) - 대량 데이터 처리를 위한 페이지네이션 - 비동기 처리가 필요한 작업 식별 ## 4. 산출물 목록 2단계 완료 시 다음과 같은 산출물이 생성될 예정입니다: 1. **Supabase 프로젝트 설정 문서** - 프로젝트 구성 정보 - 환경 변수 목록 - 접근 권한 설정 2. **데이터베이스 스키마 문서** - SQL 스키마 스크립트 - ER 다이어그램 (구현 버전) - 인덱스 및 제약 조건 목록 3. **API 문서** - API 엔드포인트 목록 및 설명 - 요청/응답 형식 예제 - 인증 및 권한 요구사항 4. **테스트 문서** - 테스트 케이스 목록 - 테스트 결과 보고서 - 성능 테스트 결과 5. **개발 가이드** - 로컬 개발 환경 설정 방법 - API 사용 예제 코드 - 문제 해결 가이드 ## 5. 위험 요소 및 대응 계획 ### 5.1 기술적 위험 - **Supabase 제한 사항**: 무료/스타터 플랜의 제한 사항 파악 및 대응 계획 수립 - **데이터베이스 성능**: 대량 데이터 처리 시 성능 이슈 대응 방안 마련 - **API 응답 시간**: 복잡한 쿼리의 응답 시간 최적화 전략 수립 ### 5.2 일정 관련 위험 - **기술 학습 시간**: Supabase 학습에 필요한 추가 시간 고려 - **예상치 못한 문제**: 버퍼 시간을 일정에 포함하여 계획 ### 5.3 보안 관련 위험 - **데이터 보안**: 민감 정보 보호를 위한 추가 보안 조치 계획 - **인증 시스템**: 보안 취약점 방지를 위한 철저한 테스트 계획 ## 6. 성공 기준 2단계는 다음 기준이 충족될 때 성공적으로 완료된 것으로 간주합니다: 1. 모든 데이터베이스 테이블이 성공적으로 생성되고 관계가 설정됨 2. 모든 필수 API 엔드포인트가 구현되고 테스트됨 3. 사용자 인증 시스템이 안전하게 작동함 4. API 응답 시간이 목표 성능 기준을 충족함 (평균 응답 시간 < 300ms) 5. 모든 API가 문서화되고 프론트엔드 개발에 사용할 준비가 됨 ## 7. 다음 단계 미리보기 2단계 완료 후 진행될 3단계의 주요 내용은 다음과 같습니다: 1. Flutter 프로젝트 설정 및 기본 구조 구현 2. UI 컴포넌트 개발 및 스타일 가이드 작성 3. 백엔드 API와의 연동 구현 4. 핵심 화면 및 기능 구현 5. 사용자 테스트 및 피드백 수집 ## 8. 진행 상황 ### 8.1 완료된 작업 1. [x] **Supabase 프로젝트 설정** - [x] 프로젝트 생성 및 기본 설정 - [x] 데이터베이스 연결 설정 - [x] 스토리지 버킷 구성 - [x] 백업 설정 구성 2. [x] **데이터베이스 스키마 구현** - [x] 사용자 테이블 생성 - [x] 카테고리 테이블 생성 - [x] 지출/수입 테이블 생성 - [x] 예산 테이블 생성 - [x] 카드 테이블 생성 - [x] 한도 테이블 생성 - [x] 템플릿 테이블 생성 - [x] 알림 테이블 생성 - [x] 분석 설정 테이블 생성 3. [x] **기본 데이터 삽입** - [x] 기본 카테고리 데이터 삽입 - [x] 테스트 사용자 데이터 삽입 - [x] 샘플 지출/수입 데이터 삽입 4. [x] **API 엔드포인트 개발** - [x] 사용자 관리 API 함수 구현 - [x] 카테고리 관리 API 함수 구현 - [x] 지출/수입 관리 API 함수 구현 - [x] 예산 관리 API 함수 구현 - [x] 카드 관리 API 함수 구현 - [x] 한도 관리 API 함수 구현 - [x] 템플릿 관리 API 함수 구현 - [x] 알림 관리 API 함수 구현 - [x] 분석 관리 API 함수 구현 5. [x] **사용자 인증 시스템 구현** - [x] JWT 토큰 기반 인증 - [x] 비밀번호 암호화 (bcrypt) - [x] 소셜 로그인 연동 (Google, Kakao, Naver, Apple) - [x] 이메일 인증 및 비밀번호 재설정 - [x] Row Level Security (RLS) 정책 구현 - [x] 토큰 블랙리스트 관리 (로그아웃) 6. [x] **데이터 보안 구현** - [x] 민감 정보 암호화 설정 - [x] API 요청 검증 미들웨어 구현 - [x] CORS 및 보안 헤더 설정 - [x] 데이터 암호화 전략 수립 - [x] 보안 감사 및 검증 7. [x] **성능 테스트 및 최적화** - [x] 데이터베이스 쿼리 성능 테스트 - [x] 성능 병목 지점 식별 - [x] 성능 최적화 전략 수립 - [x] 성능 테스트 보고서 작성 ### 8.2 진행 중인 작업 - [x] 보안 감사 및 검증 - [x] 보안 취약점 분석 - [x] 보안 테스트 및 검증 ### 8.3 다음 단계 - [ ] 백엔드 테스트 - [x] 단위 테스트 작성 및 실행 - [x] 인증 시스템 단위 테스트 작성 및 실행 - [x] 기타 API 함수 단위 테스트 작성 및 실행 - [x] 통합 테스트 구현 - [x] 보안 테스트 및 취약점 분석 - [ ] 3단계 준비 - [ ] 프론트엔드 개발 환경 설정 - [ ] API 연동 계획 수립 - [ ] 3단계 세부 일정 및 작업 목록 작성 ## 9. 이슈 및 고려사항 1. [ ] **Supabase Realtime 서비스 상태** - [ ] Realtime 서비스가 현재 Unhealthy 상태로 표시됨 - [ ] 실시간 기능이 필요한 경우 추가 디버깅 필요 - [ ] 우선순위: 중간 (기본 CRUD 작업에는 영향 없음) 2. [ ] **대용량 데이터 처리 전략** - [ ] 장기적인 데이터 보관 정책 수립 필요 - [ ] 오래된 데이터 아카이빙 전략 고려 - [ ] 우선순위: 낮음 (초기 단계에서는 문제 없음) 3. [ ] **API 성능 최적화** - [ ] 복잡한 분석 쿼리 최적화 필요 - [ ] 캐싱 전략 구현 고려 - [ ] 우선순위: 중간 (기본 기능에는 영향 없음)