음식 사진 분석부터 러닝 경로 추천까지 한 번에 이어지는 실행형 건강 루틴 서비스입니다.
- 프론트엔드: Next.js (
/src) - 백엔드: Express (
/backend)
- 사진 업로드 기반 음식/칼로리 분석
- 목표 소모 칼로리 기반 운동 방식(걷기/빠른걸음/달리기) 및 시간 계산
- 지도 기반 러닝 경로 추천
- Supabase 기반 기록 저장 및 조회(무한 스크롤)
- 공통
ActionButton컴포넌트 기반 버튼 재사용 - 기기별 익명 사용자 쿠키(
eat_run_uid) 기반 기록 분리
1단계 /analyze: 음식 사진 업로드 및 분석2단계 /activity: 운동 방식/비율/몸무게 설정3단계 /map: 추천 경로 확인 및 외부 지도 열기기록 /history: 누적 기록 조회/필터/삭제
OPENAI_API_KEY=YOUR_REAL_OPENAI_KEY
BACKEND_API_KEY=
ANALYZE_RATE_LIMIT_PER_MINUTE=5
TEXT_ANALYZE_RATE_LIMIT_PER_MINUTE=10
ANALYZE_IP_RATE_LIMIT_PER_MINUTE=20
TEXT_ANALYZE_IP_RATE_LIMIT_PER_MINUTE=40
ANALYZE_RATE_LIMIT_WINDOW_MS=60000
GOOGLE_MAPS_API_KEY=
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=ANALYZE_API_URL=http://localhost:4000/v1/food/analyze
BACKEND_API_KEY=
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=BACKEND_API_KEY를 백엔드에서 사용하면 프론트.env.local에도 같은 값을 넣어주세요.- Supabase 스키마는
supabase/schema.sql을 Supabase SQL Editor에서 실행해 생성합니다. - 기존에 스키마를 이미 적용했다면
supabase/schema.sql을 다시 실행해history_entries.user_id컬럼을 반영해 주세요.
cd C:\Users\user\Desktop\coding\eat-run-service
npm install
npm --prefix backend installnpm run backend:startnpm run devnpm run build- Vercel 배포 체크리스트:
docs/DEPLOY_VERCEL.md - Render 무료 플랜 keep-alive: GitHub Actions
.github/workflows/render-keep-alive.yml이30분마다 Render 백엔드의/health를 호출합니다. - 필요한 GitHub Actions 시크릿:
RENDER_HEALTHCHECK_URL=https://eatandrunweb.onrender.com/health