Burnout Guard는 직장인의 하루 업무를 시작 → 실행 → 마무리 루프로 관리하고, 퇴근 전 냉정한 평가와 다음 날 개선안을 제안하는 웹 앱입니다.
English README: README.en.md
- 하루 시작/종료 세션 관리
- To Do / Doing / Done 기반 작업 보드 (드래그 앤 드롭 지원)
- 번아웃 위험도 계산 및 요약
- 하루 마무리 평가 + AI 상세 개선안
- Google 로그인(Supabase Auth)
- BYOK(개인 AI 키) 또는 Pro 플랜 기반 AI 접근 제어
- PWA 설치 지원 (manifest + service worker)
- 다국어 지원 (
en,ko,ja)
- Frontend: React 18, TypeScript, Vite, Tailwind CSS
- Auth/DB: Supabase
- API/Webhook: Cloudflare Workers
- Test: Vitest, Testing Library, Playwright
- 구조: Feature-Sliced Design(FSD) 기반
src/
app/ # 앱 엔트리/전역 스타일
pages/ # 라우트 단위 화면 (dashboard, product, pricing, settings ...)
widgets/ # 화면 조합 컴포넌트
features/ # 사용자 액션 단위 기능
entities/ # 도메인 모델/표현
shared/ # 공용 API, lib, UI
workers/api/ # Cloudflare Worker API
supabase/ # SQL migration
docs/ # 배포/디자인 문서
- Node.js 22 LTS
- pnpm
- 의존성 설치
pnpm i- 환경변수 설정
.env.example을 복사해 .env 생성:
VITE_APP_ENV=development
VITE_SUPABASE_URL=https://YOUR_PROJECT_REF.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=sb_publishable_xxxxx
# Optional
# VITE_API_BASE_URL=https://your-worker-domain.workers.dev- 개발 서버 실행
pnpm dev기본 접속:
- 홈:
http://localhost:5173/ - 앱:
http://localhost:5173/app/day - 요금제:
http://localhost:5173/pricing
pnpm dev: 로컬 개발 서버pnpm build: 프로덕션 빌드pnpm lint: ESLintpnpm typecheck: TypeScript 타입 검사pnpm test: 단위 테스트(Vitest)pnpm test:e2e: E2E 테스트(Playwright)pnpm format: Prettier 포맷
PR 전 권장 순서:
pnpm lint
pnpm typecheck
pnpm test
pnpm test:e2e- Supabase 프로젝트 생성
- migration 실행:
supabase/migrations/20260217_000001_init_auth_billing.sql
- Google Provider 활성화
- Redirect URL 등록 (로컬/배포 도메인)
자세한 체크리스트:
docs/deploy/cloudflare-supabase-setup-checklist.md
- Build command:
pnpm build - Output directory:
dist - Deploy command: 비워두는 것을 권장 (Pages 정적 배포)
- 위치:
workers/api - 주요 엔드포인트:
GET /api/healthPOST /api/ai/evaluate-dayPOST /api/billing/webhook?provider=stripe|toss
자동 배포:
.github/workflows/deploy-worker.yml- 필요 GitHub Secrets:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
public/manifest.webmanifestpublic/sw.jspublic/icons/*public/screenshots/*
서비스워커는 다음 환경에서 등록됩니다:
productionlocalhost/127.0.0.1(로컬 검증용)
아이콘/manifest가 갱신되지 않으면:
- DevTools → Application → Service Workers → Unregister
- Application → Clear storage → Clear site data
- 강력 새로고침
.env및 키/토큰은 절대 커밋하지 않습니다.- 클라이언트에는
VITE_SUPABASE_PUBLISHABLE_KEY만 사용합니다. - 서버 전용 키(
SUPABASE_SECRET_KEY등)는 Worker Secret으로만 관리합니다.
- 배포 체크리스트:
docs/deploy/cloudflare-supabase-setup-checklist.md - UI 기준 문서:
docs/ui/hig-dashboard-foundation.md - Worker 문서:
workers/api/README.md