# Drinky Product Requirements Document (PRD)
**문서 버전:** 1.0
**작성일:** 2026-01-23
**작성자:** PM John
**상태:** 검토 완료 - 아키텍처 단계 준비됨
---
## 1. Goals and Background Context
### 1.1 Goals (목표)
- **사용 편의성 극대화:** 원터치(O/X) 체크로 1초 만에 음주 여부 기록 가능
- **습관 형성 지원:** 연속 금주 스트릭과 시각적 차트로 절주 동기부여 강화
- **긍정적 사용자 경험:** 격려 푸시 알림으로 좌절감 최소화, 자신감 부여
- **지속 가능한 리텐션:** 7일 리텐션 30% 이상, 30일 스트릭 사용자 100명 이상 확보
- **시장 검증:** MVP 출시 후 3개월 내 MAU 1,000명 달성
### 1.2 MVP Validation Approach (MVP 검증 방법)
#### 검증 단계
| 단계 | 기간 | 목표 | 성공 기준 |
|------|------|------|-----------|
| **Alpha** | 1주 | 내부 테스트 | 치명적 버그 0건 |
| **Beta** | 2주 | 100명 초대 테스터 | 7일 리텐션 25% 이상 |
| **Launch** | 지속 | 공개 출시 | MAU 1,000 / 3개월 |
#### 피드백 수집 방법
- **정량적:** Mixpanel 이벤트 분석 (체크인율, 리텐션, 스트릭 분포)
- **정성적:** 앱 내 피드백 버튼, 베타 테스터 인터뷰 (5명)
- **NPS:** 출시 2주 후 인앱 설문 (목표: NPS 30+)
#### MVP 이후 전환 기준
- 7일 리텐션 30% 달성 → Phase 2 (소셜 기능) 착수
- 7일 리텐션 20% 미만 → 피봇 또는 핵심 기능 재검토
### 1.3 Background Context (배경)
기존 금주/절주 앱들은 매일 일기를 작성해야 하는 부담, 복잡한 UI, 무거운 톤앤매너로 인해 사용자가 지속 사용하기 어렵습니다. 특히 건강검진에서 간 수치 경고를 받은 40대, 회식이 잦은 20-30대 직장인들은 "술을 줄여야 한다"는 것을 알면서도 바쁜 일상 속에서 앱을 열고 기록하는 것 자체가 장벽이 됩니다.
Drinky는 이 문제를 **원터치 체크**와 **긍정적 피드백 설계**로 해결합니다. 술을 마셨는지 O/X로만 기록하면 되고, 스트릭(연속 금주일)과 차트로 성취감을 시각화하며, 격려 메시지로 이탈을 방지합니다. 핵심 가치는 "더 오래, 더 함께" - 사랑하는 사람들과 건강하게 오래 함께하는 삶을 지원하는 것입니다.
### 1.4 Change Log (변경 이력)
| Date | Version | Description | Author |
|------|---------|-------------|--------|
| 2026-01-23 | 0.1 | PRD 초안 작성 | PM John |
| 2026-01-23 | 1.0 | PM 체크리스트 완료, 운영/데이터 요구사항 추가 | PM John |
---
## 2. Requirements
### 2.1 Functional Requirements (기능 요구사항)
| 우선순위 | ID | 요구사항 |
|---------|-----|---------|
| **P0 (필수)** | FR1 | 사용자는 이메일 또는 소셜 로그인(Google/Kakao)으로 계정을 생성하고 로그인할 수 있다 |
| **P0 (필수)** | FR2 | 사용자는 오늘 음주 여부를 O(마심)/X(안마심) 원터치로 기록할 수 있다 |
| **P0 (필수)** | FR3 | 시스템은 연속으로 술을 마시지 않은 날을 자동으로 카운트하여 스트릭으로 표시한다 |
| **P1 (중요)** | FR4 | 사용자는 주간/월간 음주 기록을 차트(캘린더 뷰 또는 그래프)로 확인할 수 있다 |
| **P1 (중요)** | FR5 | 시스템은 설정된 시간에 격려 푸시 알림을 발송한다 |
| **P1 (중요)** | FR6 | 사용자는 푸시 알림 수신 여부와 시간을 설정할 수 있다 |
| **P2 (권장)** | FR7 | 사용자는 자신의 스트릭 기록과 총 금주 일수를 대시보드에서 확인할 수 있다 |
| **P2 (권장)** | FR8 | 사용자는 과거 날짜의 음주 기록을 수정할 수 있다 (최대 7일 이내) |
### 2.2 Non-Functional Requirements (비기능 요구사항)
- **NFR1:** 앱 첫 로딩 시간은 3초 이내여야 한다
- **NFR2:** 음주 체크 인터랙션은 100ms 이내에 반응해야 한다
- **NFR3:** PWA로 구현하여 모바일 웹에서 앱처럼 사용 가능해야 한다
- **NFR4:** Chrome, Safari, Samsung Internet 최신 2개 버전을 지원해야 한다
- **NFR5:** 음주 기록은 민감 정보로 취급하여 암호화하여 저장해야 한다
- **NFR6:** 개인정보는 최소한으로 수집한다 (이메일, 닉네임 정도)
- **NFR7:** 한국어 UI를 기본으로 제공한다 (다국어는 MVP 이후)
---
## 3. User Interface Design Goals
### 3.1 Overall UX Vision (전체 UX 비전)
**"1초 만에 기록하고, 따뜻한 응원을 받는 경험"**
Drinky의 UX는 **최소한의 마찰**과 **긍정적 감정 설계**에 집중합니다. 기존 금주 앱들이 무겁고 진지한 톤으로 사용자에게 부담을 주었다면, Drinky는 가볍고 친근한 톤으로 매일 들어오고 싶은 앱을 지향합니다. 스트릭이 깨져도 좌절감보다는 "괜찮아요, 다시 시작해봐요!"라는 격려를 전달합니다.
### 3.2 Key Interaction Paradigms (핵심 인터랙션 패러다임)
- **원터치 체크:** 앱 진입 시 가장 먼저 보이는 큰 O/X 버튼, 한 번의 탭으로 기록 완료
- **즉각적 피드백:** 체크 시 애니메이션과 격려 메시지로 성취감 제공
- **점진적 공개:** 대시보드는 핵심 정보(스트릭, 오늘 상태)만 먼저 표시, 상세 차트는 스크롤/탭으로 접근
- **부드러운 전환:** 화면 간 자연스러운 트랜지션으로 앱 사용의 즐거움 강화
### 3.3 Core Screens and Views (핵심 화면)
| # | 화면 | 설명 |
|---|------|------|
| 1 | **온보딩 화면** | 앱 소개, 로그인/회원가입 |
| 2 | **메인 대시보드** | 오늘의 O/X 체크 버튼, 현재 스트릭, 간단한 주간 미리보기 |
| 3 | **기록 차트 화면** | 주간/월간 캘린더 뷰, 음주 패턴 그래프 |
| 4 | **설정 화면** | 알림 설정, 계정 관리, 앱 정보 |
### 3.4 Accessibility (접근성)
**WCAG AA 준수 권장**
- 충분한 색상 대비 (4.5:1 이상)
- 터치 타겟 최소 44x44px
- 스크린 리더 지원 (ARIA 레이블)
### 3.5 Branding (브랜딩)
- **톤앤매너:** 밝고 따뜻한, 친구처럼 격려하는 느낌
- **컬러 방향:**
- Primary: 따뜻한 그린 또는 민트 계열 (건강, 긍정)
- Accent: 부드러운 오렌지 또는 코랄 (응원, 에너지)
- 다크 모드 고려
- **슬로건:** "더 오래, 더 함께"
### 3.6 Target Device and Platforms (타겟 기기 및 플랫폼)
**Web Responsive (PWA)**
- 모바일 웹 우선 (Mobile-first)
- iOS Safari, Android Chrome, Samsung Internet 최신 2개 버전 지원
- PWA로 홈 화면 추가 시 앱처럼 사용 가능
- 데스크톱은 MVP에서 낮은 우선순위
### 3.7 Primary User Flows (주요 사용자 흐름)
#### Flow 1: 신규 사용자 온보딩
```
앱 접속 → 온보딩 슬라이드 → 회원가입/로그인 선택 →
이메일 또는 소셜 로그인 → 닉네임 설정 → 메인 대시보드
```
#### Flow 2: 일일 체크인 (핵심 흐름)
```
앱 진입 → 대시보드 → O/X 버튼 탭 →
저장 완료 애니메이션 + 격려 메시지 → 스트릭 업데이트
```
#### Flow 3: 기록 확인
```
대시보드 → 기록 탭 → 월간 캘린더 뷰 →
특정 날짜 탭 → 상세 정보 바텀시트
```
#### Flow 4: 과거 기록 수정
```
기록 탭 → 수정할 날짜 탭 (7일 이내) →
수정 버튼 → O/X 변경 → 확인 다이얼로그 → 저장 → 스트릭 재계산
```
#### Flow 5: 알림 설정
```
대시보드 → 설정 탭 → 알림 설정 →
ON/OFF 토글 또는 시간 변경 → 즉시 저장
```
#### Edge Cases (엣지케이스)
- **스트릭 깨짐:** 부드러운 격려 메시지 + "다시 시작하기" 버튼
- **오프라인 체크인:** 로컬 저장 → 온라인 복귀 시 동기화
- **푸시 알림 거부:** 나중에 다시 묻기 옵션 제공
- **계정 삭제:** 확인 다이얼로그 2단계 + 30일 내 데이터 삭제
---
## 4. Technical Assumptions
### 4.1 Repository Structure (저장소 구조)
**Monorepo (모노레포)**
- 프론트엔드와 백엔드를 단일 저장소에서 관리
- 1인 풀스택 개발자 환경에 적합
- 추천 도구: pnpm workspaces 또는 Turborepo
### 4.2 Service Architecture (서비스 아키텍처)
**Monolith (모놀리식)**
- MVP 단계에서 복잡한 마이크로서비스 불필요
- 단일 백엔드 서버로 모든 API 처리
- 추후 필요시 서비스 분리 가능한 구조로 설계
### 4.3 Tech Stack (기술 스택)
| 영역 | 선택 | 근거 |
|------|------|------|
| **Frontend** | React + TypeScript | 생태계 풍부, PWA 지원 우수, 채용/유지보수 용이 |
| **UI Framework** | TailwindCSS + shadcn/ui | 빠른 개발, 일관된 디자인 시스템 |
| **Backend** | Node.js (Express 또는 Fastify) | 프론트엔드와 언어 통일, 빠른 개발 |
| **Database** | PostgreSQL (Supabase) | 관계형 데이터 적합, Supabase로 인증/실시간 기능 포함 |
| **Hosting** | Vercel (Frontend) + Supabase (Backend/DB) | 무료 티어 활용, 빠른 배포 |
| **Push Notification** | Firebase Cloud Messaging (FCM) | 무료, PWA 지원 우수 |
| **Analytics** | Mixpanel 또는 PostHog | 사용자 행동 분석, 무료 티어 |
### 4.4 Testing Requirements (테스트 요구사항)
**Unit + Integration (단위 + 통합 테스트)**
- 핵심 비즈니스 로직(스트릭 계산, 기록 저장) 단위 테스트 필수
- API 엔드포인트 통합 테스트
- E2E 테스트는 MVP 이후 고려
- 테스트 도구: Vitest (프론트엔드), Jest (백엔드)
### 4.5 Additional Technical Assumptions (추가 기술 가정)
- **인증:** Supabase Auth 활용 (이메일, Google, Kakao 소셜 로그인)
- **상태 관리:** Zustand 또는 React Context (가벼운 상태 관리)
- **API 통신:** React Query (TanStack Query) - 캐싱, 로딩 상태 관리
- **PWA:** Vite PWA 플러그인 활용
- **암호화:** 음주 기록은 DB 레벨 암호화 (Supabase RLS + 컬럼 암호화)
- **CI/CD:** GitHub Actions → Vercel 자동 배포
- **개발 기간:** MVP 4-6주 (1인 풀스택 개발자 기준)
### 4.6 Data Requirements (데이터 요구사항)
#### 핵심 데이터 엔터티
| 엔터티 | 주요 필드 | 설명 |
|--------|----------|------|
| **users** | id, email, nickname, created_at | 사용자 계정 정보 |
| **drinking_records** | id, user_id, date, did_drink, created_at, updated_at | 일별 음주 기록 |
| **user_settings** | user_id, notification_enabled, notification_time, fcm_token | 사용자 설정 |
| **notification_logs** | id, user_id, sent_at, message_type, status | 알림 발송 이력 |
#### 데이터 정책
- **보존 기간:** 음주 기록은 계정 존재 시 무기한 보존
- **백업:** Supabase 자동 백업 (일 1회, Point-in-Time Recovery)
- **삭제 정책:** 계정 삭제 요청 시 30일 내 모든 데이터 영구 삭제
- **암호화:** 음주 기록은 민감 정보로 취급, DB 레벨 암호화 적용
- **익명화:** 분석용 데이터는 개인 식별 정보 제거 후 집계
### 4.7 Operational Requirements (운영 요구사항)
#### 배포 및 환경
| 환경 | 용도 | URL 패턴 |
|------|------|----------|
| **Production** | 실 서비스 | drinky.app |
| **Preview** | PR 미리보기 | pr-{number}.drinky.app |
| **Local** | 개발 환경 | localhost:5173 |
#### 배포 전략
- **배포 방식:** main 브랜치 머지 시 Vercel 자동 배포
- **롤백:** Vercel Instant Rollback (이전 배포로 즉시 복구)
- **배포 빈도:** 일 1-2회 (기능 완료 시 즉시 배포)
#### 모니터링 및 알림
| 항목 | 도구 | 임계값 |
|------|------|--------|
| **프론트엔드 성능** | Vercel Analytics | LCP 2.5s 초과 시 알림 |
| **에러 추적** | Sentry (무료 티어) | 에러율 5% 초과 시 Slack 알림 |
| **DB 모니터링** | Supabase Dashboard | 연결 수 80% 도달 시 알림 |
| **사용자 분석** | Mixpanel/PostHog | 일간 리텐션 리포트 |
#### 지원 및 유지보수
- **버그 대응:** Critical 24시간 내, Major 48시간 내, Minor 1주 내
- **문의 채널:** 앱 내 이메일 링크 (support@drinky.app)
- **유지보수 창:** 매주 화요일 새벽 2-4시 (필요 시)
---
## 5. Epic List
| # | Epic | Goal |
|---|------|------|
| **Epic 1** | Foundation & Core Check-in | 프로젝트 인프라를 구축하고, 사용자 인증과 원터치 O/X 체크인 기능을 구현하여 앱의 핵심 가치를 전달하는 최소 기능 제품 배포 |
| **Epic 2** | Visualization & Engagement | 음주 기록 차트, 푸시 알림, 설정 기능을 추가하여 사용자 리텐션을 높이고 MVP를 완성 |
---
## 6. Epic 1: Foundation & Core Check-in
### Epic Goal
프로젝트 인프라를 구축하고, 사용자 인증과 원터치 O/X 체크인 기능을 구현하여 **Drinky의 핵심 가치를 전달하는 최소 기능 제품**을 배포합니다. 이 에픽 완료 시 사용자는 회원가입 후 매일 음주 여부를 기록하고, 연속 금주 스트릭을 확인할 수 있습니다.
### Story 1.1: 프로젝트 기반 구축 및 배포 파이프라인
**As a** 개발자,
**I want** 프로젝트 기반 구조와 CI/CD 파이프라인을 구축하여,
**so that** 이후 모든 기능을 안정적으로 개발하고 배포할 수 있다.
**Acceptance Criteria:**
1. pnpm workspaces 기반 모노레포 구조 생성 (apps/web, packages/shared)
2. React + Vite + TypeScript 프론트엔드 프로젝트 초기화
3. TailwindCSS + shadcn/ui 설정 완료
4. Supabase 프로젝트 생성 및 환경변수 설정
5. GitHub 저장소 생성 및 Vercel 연동
6. main 브랜치 푸시 시 자동 배포 확인
7. 헬스체크 페이지("/health") 배포 및 접속 확인
### Story 1.2: 사용자 인증 백엔드 구성
**As a** 사용자,
**I want** 이메일 또는 소셜 계정으로 가입/로그인할 수 있어서,
**so that** 내 음주 기록을 안전하게 저장하고 관리할 수 있다.
**Acceptance Criteria:**
1. Supabase Auth에 이메일/비밀번호 인증 활성화
2. Google OAuth 로그인 설정 완료
3. Kakao OAuth 로그인 설정 완료
4. users 테이블 스키마 생성 (id, email, nickname, created_at)
5. 신규 가입 시 users 테이블에 자동 레코드 생성 (트리거)
6. RLS(Row Level Security) 정책 설정 - 본인 데이터만 접근
### Story 1.3: 인증 UI 및 온보딩 화면
**As a** 신규 사용자,
**I want** 간단하고 친근한 온보딩 화면을 통해 가입할 수 있어서,
**so that** 앱 사용을 빠르게 시작할 수 있다.
**Acceptance Criteria:**
1. 온보딩 화면 - 앱 소개 (1-2 슬라이드)
2. 로그인/회원가입 선택 화면
3. 이메일 회원가입 폼 (이메일, 비밀번호, 닉네임)
4. 이메일 로그인 폼
5. 소셜 로그인 버튼 (Google, Kakao)
6. 로그인 성공 시 메인 대시보드로 이동
7. 비로그인 사용자 접근 시 온보딩으로 리다이렉트
8. 모바일 반응형 UI (375px 기준)
### Story 1.4: 메인 대시보드 레이아웃
**As a** 로그인한 사용자,
**I want** 앱 진입 시 오늘의 상태를 한눈에 볼 수 있는 대시보드를 보고 싶어서,
**so that** 빠르게 오늘의 체크인을 할 수 있다.
**Acceptance Criteria:**
1. 대시보드 페이지 레이아웃 구현
2. 상단에 인사 메시지 표시 ("안녕하세요, {닉네임}님!")
3. 중앙에 오늘의 체크인 영역 (플레이스홀더)
4. 하단에 스트릭 표시 영역 (플레이스홀더)
5. 하단 네비게이션 바 (홈, 기록, 설정 - 기록/설정은 비활성)
6. 로그아웃 기능 (설정 또는 임시 버튼)
7. 모바일 반응형 UI
### Story 1.5: O/X 체크인 기능
**As a** 사용자,
**I want** 오늘 술을 마셨는지 O/X 버튼 하나로 기록할 수 있어서,
**so that** 매일 1초 만에 간편하게 음주 여부를 기록할 수 있다.
**Acceptance Criteria:**
1. 대시보드에 O(마심) / X(안마심) 버튼 표시
2. drinking_records 테이블 생성 (id, user_id, date, did_drink, created_at)
3. 버튼 클릭 시 오늘 날짜로 기록 저장 API 호출
4. 저장 성공 시 시각적 피드백 (애니메이션, 격려 메시지)
5. 오늘 이미 기록한 경우 현재 상태 표시 및 수정 가능
6. 체크인 인터랙션 100ms 이내 반응
7. RLS 정책 - 본인 기록만 조회/수정
### Story 1.6: 연속 금주 스트릭 표시
**As a** 사용자,
**I want** 연속으로 술을 마시지 않은 날을 스트릭으로 확인할 수 있어서,
**so that** 절주 동기부여를 받고 기록을 이어갈 수 있다.
**Acceptance Criteria:**
1. 스트릭 계산 로직 구현 (연속 X 기록 일수)
2. 대시보드에 현재 스트릭 숫자 표시 ("🔥 7일 연속!")
3. 스트릭에 따른 격려 메시지 표시
- 0일: "오늘부터 시작해볼까요?"
- 1-6일: "좋은 시작이에요! 계속 가봐요!"
- 7일+: "대단해요! 일주일 넘게 성공했어요!"
4. 스트릭이 깨졌을 때 부드러운 메시지 ("괜찮아요, 다시 시작하면 돼요!")
5. 최장 스트릭 기록 저장 및 표시
6. 주간 미니 캘린더 미리보기 (최근 7일 O/X 표시)
---
## 7. Epic 2: Visualization & Engagement
### Epic Goal
음주 기록 차트, 푸시 알림, 설정 기능을 추가하여 **사용자 리텐션을 높이고 MVP를 완성**합니다. 이 에픽 완료 시 사용자는 자신의 음주 패턴을 시각적으로 확인하고, 푸시 알림으로 동기부여를 받으며, 앱을 자신에게 맞게 설정할 수 있습니다.
### Story 2.1: 기록 차트 - 캘린더 뷰
**As a** 사용자,
**I want** 월간 캘린더에서 내 음주 기록을 한눈에 볼 수 있어서,
**so that** 어떤 날에 술을 마셨는지 패턴을 파악할 수 있다.
**Acceptance Criteria:**
1. 기록 탭/페이지 생성 및 네비게이션 연결
2. 월간 캘린더 뷰 구현 (현재 월 기본 표시)
3. 각 날짜에 O/X 아이콘 또는 색상으로 음주 여부 표시
4. 이전/다음 월 네비게이션
5. 기록 없는 날은 빈 상태로 표시
6. 특정 날짜 클릭 시 해당 날짜 상세 정보 표시 (모달 또는 바텀시트)
7. 모바일 반응형 UI
### Story 2.2: 기록 차트 - 통계 및 인사이트
**As a** 사용자,
**I want** 주간/월간 음주 통계를 그래프로 확인할 수 있어서,
**so that** 내 음주 습관의 추세를 이해하고 개선할 수 있다.
**Acceptance Criteria:**
1. 주간 음주 횟수 바 차트 (최근 4주)
2. 월간 음주 횟수 추이 그래프 (최근 3개월)
3. 핵심 통계 카드 표시:
- 이번 주 음주 횟수 / 지난 주 대비
- 이번 달 음주 횟수 / 지난 달 대비
- 현재 스트릭 / 최장 스트릭
4. 긍정적 인사이트 메시지 ("지난 주보다 2일 줄었어요!")
5. 차트 라이브러리 사용 (Recharts 또는 Chart.js)
6. 데이터 없는 기간 처리 (빈 상태 메시지)
### Story 2.3: 과거 기록 조회 및 수정
**As a** 사용자,
**I want** 최근 7일 이내의 기록을 수정할 수 있어서,
**so that** 깜빡하고 기록하지 못한 날을 보완할 수 있다.
**Acceptance Criteria:**
1. 캘린더 뷰에서 날짜 클릭 시 기록 상세 표시
2. 7일 이내 날짜는 수정 버튼 활성화
3. 7일 초과 날짜는 수정 버튼 비활성화 + 안내 메시지
4. 기록 수정 시 확인 다이얼로그 표시
5. 기록 없는 과거 날짜에 새 기록 추가 가능 (7일 이내)
6. 수정 완료 시 스트릭 자동 재계산
7. 수정 이력 로깅 (데이터 무결성용)
### Story 2.4: 푸시 알림 인프라 구축
**As a** 사용자,
**I want** 앱에서 푸시 알림을 받을 수 있어서,
**so that** 앱을 열지 않아도 절주 동기부여를 받을 수 있다.
**Acceptance Criteria:**
1. Firebase Cloud Messaging (FCM) 프로젝트 설정
2. PWA Service Worker에 푸시 알림 수신 로직 추가
3. 사용자에게 알림 권한 요청 UI 구현
4. 알림 권한 수락 시 FCM 토큰 저장 (Supabase)
5. 알림 권한 거부 시 안내 메시지 및 나중에 다시 묻기
6. 테스트 알림 발송 및 수신 확인
7. 알림 클릭 시 앱으로 이동
### Story 2.5: 푸시 알림 스케줄링 및 콘텐츠
**As a** 사용자,
**I want** 매일 설정한 시간에 격려 알림을 받을 수 있어서,
**so that** 잊지 않고 체크인하고 동기부여를 유지할 수 있다.
**Acceptance Criteria:**
1. 알림 스케줄링 백엔드 로직 (Supabase Edge Function 또는 외부 서비스)
2. 기본 알림 시간 설정 (저녁 9시)
3. 격려 메시지 템플릿 (최소 10종):
- "오늘 하루도 고생했어요! 체크인 해볼까요?"
- "🔥 {N}일 연속 성공 중! 오늘도 화이팅!"
- "건강한 선택이 쌓이고 있어요 💪"
4. 스트릭 기반 메시지 분기 (스트릭 0일 vs 7일+)
5. 오늘 이미 체크인한 경우 다른 메시지 ("오늘도 기록 완료! 대단해요")
6. 알림 발송 로그 저장
### Story 2.6: 설정 화면
**As a** 사용자,
**I want** 알림 시간과 계정 정보를 관리할 수 있어서,
**so that** 앱을 나에게 맞게 커스터마이징할 수 있다.
**Acceptance Criteria:**
1. 설정 탭/페이지 생성 및 네비게이션 연결
2. 알림 설정 섹션:
- 푸시 알림 ON/OFF 토글
- 알림 시간 선택 (시간 피커)
3. 계정 설정 섹션:
- 닉네임 수정
- 이메일 표시 (읽기 전용)
- 로그아웃 버튼
4. 앱 정보 섹션:
- 버전 정보
- 개인정보처리방침 링크
- 문의하기 (이메일 링크)
5. 계정 삭제 기능 (확인 다이얼로그 필수)
6. 설정 변경 시 즉시 저장
### Story 2.7: PWA 최적화 및 MVP 마무리
**As a** 사용자,
**I want** 앱을 홈 화면에 추가하고 오프라인에서도 기본 기능을 사용할 수 있어서,
**so that** 네이티브 앱처럼 편리하게 사용할 수 있다.
**Acceptance Criteria:**
1. Web App Manifest 최적화 (아이콘, 테마 컬러, 시작 URL)
2. "홈 화면에 추가" 프롬프트 구현 (적절한 타이밍)
3. 오프라인 캐싱 전략 구현:
- 정적 자산 캐싱
- 최근 기록 데이터 로컬 캐싱
- 오프라인 시 체크인 → 온라인 복귀 시 동기화
4. 앱 로딩 스플래시 화면
5. Lighthouse PWA 점수 90점 이상
6. 성능 최적화 (첫 로딩 3초 이내)
7. 크로스 브라우저 테스트 (Chrome, Safari, Samsung Internet)
---
## 8. Checklist Results Report
### 8.1 Executive Summary
| 항목 | 결과 |
|------|------|
| **PRD 완성도** | 85% (권장 사항 반영 후) |
| **MVP 범위 적절성** | Just Right (적절함) |
| **아키텍처 단계 준비도** | Ready (준비 완료) |
### 8.2 Category Analysis
| Category | Status | Notes |
|----------|--------|-------|
| 1. Problem Definition & Context | **PASS** ✅ | 문제 정의 및 타겟 사용자 명확 |
| 2. MVP Scope Definition | **PASS** ✅ | MVP 범위 적절, Out of Scope 명확 |
| 3. User Experience Requirements | **PASS** ✅ | 사용자 흐름 추가됨 |
| 4. Functional Requirements | **PASS** ✅ | 우선순위 명시됨 |
| 5. Non-Functional Requirements | **PASS** ✅ | 성능 요구사항 명확 |
| 6. Epic & Story Structure | **PASS** ✅ | 13개 스토리, 적절한 크기 |
| 7. Technical Guidance | **PASS** ✅ | 기술 스택 및 아키텍처 명확 |
| 8. Cross-Functional Requirements | **PASS** ✅ | 데이터/운영 요구사항 추가됨 |
| 9. Clarity & Communication | **PASS** ✅ | 문서 구조 명확 |
### 8.3 Identified Technical Risks
1. **PWA 푸시 알림 (iOS Safari):** iOS에서 PWA 푸시 알림 지원 제한적 - 아키텍트 조사 필요
2. **Kakao OAuth:** Supabase 기본 미지원, 커스텀 구현 필요
3. **오프라인 동기화:** 충돌 해결 로직 복잡도 - MVP에서 단순화 권장
### 8.4 Final Decision
**✅ READY FOR ARCHITECT**
PRD가 아키텍처 단계로 진행할 준비가 완료되었습니다.
---
## 9. Next Steps
### 9.1 UX Expert Prompt
> UX Expert님, `docs/prd.md`를 검토하고 Drinky 앱의 와이어프레임 및 UI 디자인 가이드를 작성해 주세요. 특히 원터치 체크인의 UX와 스트릭 깨짐 시 감정 설계에 집중해 주세요.
### 9.2 Architect Prompt
> Architect님, `docs/prd.md`를 검토하고 Drinky 앱의 기술 아키텍처 문서를 작성해 주세요. Supabase + React PWA 기반 모노레포 구조로, 특히 스트릭 계산 로직과 푸시 알림 스케줄링 아키텍처에 집중해 주세요.
---
*Generated using BMAD-METHOD PRD Template v2.0*