RESET은 부정적인 일상 습관(음주, 게임, 과식)을 추적하고 관리하는 게임화된 웹 애플리케이션입니다.
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- 상태 관리: Zustand 또는 Context API
- UI 컴포넌트: Shadcn/ui
- API: Next.js API Routes
- Database: PostgreSQL (Supabase 또는 Vercel Postgres)
- ORM: Prisma
- 인증: NextAuth.js (Google, Kakao OAuth)
- Platform: Vercel
- CI/CD: GitHub Actions
- id (UUID, PK)
- email (STRING, UNIQUE)
- name (STRING)
- provider (ENUM: google, kakao, email)
- level (INTEGER, DEFAULT: 1)
- total_points (INTEGER, DEFAULT: 0)
- created_at (TIMESTAMP)
- updated_at (TIMESTAMP)- id (UUID, PK)
- user_id (UUID, FK)
- date (DATE)
- no_alcohol (BOOLEAN)
- no_gaming (BOOLEAN)
- no_overeating (BOOLEAN)
- weight (DECIMAL, nullable)
- memo (TEXT, nullable)
- daily_score (INTEGER)
- created_at (TIMESTAMP)- id (INTEGER, PK)
- level_number (INTEGER)
- min_points (INTEGER)
- max_points (INTEGER)
- title (STRING)calculateDailyScore = () => {
let score = 0;
// 술 안 마심: +1점, 마심: -2점
score += no_alcohol ? 1 : -2;
// 게임 안 함: +1점, 함: -1점
score += no_gaming ? 1 : -1;
// 과식 안 함: +1점, 함: -1점
score += no_overeating ? 1 : -1;
return score;
}- Next.js 프로젝트 생성
- TypeScript, Tailwind CSS 설정
- 기본 레이아웃 구성
- 환경 변수 설정
- Prisma 스키마 정의
- 마이그레이션 실행
- 시드 데이터 추가
- NextAuth.js 설정
- Google OAuth 구현
- Kakao OAuth 구현
- 세션 관리
-
온보딩 페이지
- 서비스 소개
- 회원가입/로그인
- 초기 설정
-
데일리 트래커 (메인 대시보드)
- 오늘 날짜 표시
- 습관 체크박스 UI
- 체중 입력 필드
- 메모 입력 필드
- 실시간 점수 계산
- 저장 기능
-
게임화 시스템
- 점수 자동 계산
- 레벨 업데이트
- 프로그레스 바
- 시각적 피드백
-
기록 보기
- 캘린더 뷰 (월간 보기)
- 리스트 뷰 (상세 기록)
- 통계 요약
- 반응형 디자인
- 애니메이션 효과
- 피드백 메시지
- 다크 모드 지원
- 성능 최적화
- SEO 설정
- PWA 설정
- Vercel 배포
reset/
├── app/
│ ├── (auth)/
│ │ ├── login/
│ │ └── signup/
│ ├── dashboard/
│ │ └── page.tsx
│ ├── history/
│ │ └── page.tsx
│ ├── api/
│ │ ├── auth/
│ │ └── records/
│ └── layout.tsx
├── components/
│ ├── ui/
│ ├── dashboard/
│ ├── history/
│ └── common/
├── lib/
│ ├── auth/
│ ├── db/
│ └── utils/
├── prisma/
│ └── schema.prisma
└── public/
- 날짜 선택기
- 습관 체크박스 그룹
- 체중 입력
- 메모 입력
- 점수 표시
- 저장 버튼
- 현재 레벨 표시
- 경험치 바
- 다음 레벨까지 필요 점수
- 월간 캘린더 그리드
- 날짜별 점수 색상 표시
- 클릭 시 상세 보기
- 날짜별 기록 리스트
- 필터링 옵션
- 페이지네이션
-
필수 (MVP)
- 기본 CRUD 기능
- 사용자 인증
- 데일리 트래킹
- 점수/레벨 시스템
-
중요
- 캘린더 뷰
- 반응형 디자인
- 기본 애니메이션
-
선택
- 통계 그래프
- 소셜 공유
- 푸시 알림
- 1주차: 프로젝트 설정, 데이터베이스 설계, 인증 시스템
- 2주차: 데일리 트래커, 게임화 시스템
- 3주차: 기록 보기, UI/UX 개선
- 4주차: 테스트, 최적화, 배포
-
보안
- 환경 변수 관리
- API 엔드포인트 보호
- 입력 값 검증
-
성능
- 이미지 최적화
- 코드 스플리팅
- 캐싱 전략
-
사용자 경험
- 로딩 상태 표시
- 에러 처리
- 접근성 고려