점진적 과부하 추적과 성장 분석을 통해 꾸준한 운동 습관 형성을 돕는 웹/앱 서비스
버전: v1.0.0 최종 업데이트: 2026-02-26
| 문서 | 내용 |
|---|---|
| README.md (현재 문서) | 프로젝트 개요, 기술 스택, 진행 상황 |
| DEVELOPMENT.md | 개발 가이드 (작업 패턴, 파일 위치, 배포) |
| API.md | API 명세서 (39개 엔드포인트) |
| REQUIREMENTS.md | 비즈니스 로직, 핵심 가치, 데이터 모델 |
| backend/README.md | 백엔드 상세 가이드 |
| app/README.md | 모바일 앱 상세 가이드 |
prolog/
├── backend/ # 🖥️ Spring Boot API Server
│ ├── src/
│ ├── build.gradle.kts
│ ├── docker-compose.yml
│ └── README.md
│
├── app/ # 📱 Expo React Native App
│ ├── app/ # 화면 (파일 기반 라우팅)
│ ├── components/ # UI 컴포넌트
│ ├── lib/ # API, 타입, 유틸
│ ├── package.json
│ └── README.md
│
├── admin/ # 👨💼 관리자 웹 (Phase 3 예정)
│ └── README.md
│
├── API.md # API 명세서
├── REQUIREMENTS.md # 비즈니스 로직 문서
├── DEVELOPMENT.md # 개발 가이드 (작업 패턴, 파일 위치)
└── README.md # 프로젝트 개요 (현재 문서)
cd backend
# Docker로 MySQL + Redis 실행
docker-compose up -d
# 환경 변수 설정 (.env)
# JWT_SECRET, MYSQL_PASSWORD 등 설정 필요
# 애플리케이션 실행
./gradlew bootRun
# Swagger UI
open http://localhost:8080/swagger-ui/index.htmlcd app
# 환경 변수 설정 (.env)
# EXPO_PUBLIC_API_URL=http://localhost:8080
# 의존성 설치 및 실행
npm install
npx expo start- Framework: Spring Boot 4.0.1
- Language: Java 21
- Database: MySQL 8.0+
- Cache: Redis 7.0+
- ORM: Spring Data JPA (Hibernate)
- Security: Spring Security + JWT
- API Docs: Swagger (springdoc-openapi)
- Container: Docker, Docker Compose
- Framework: Expo SDK + React Native
- Language: TypeScript 5.9.3
- UI: NativeWind (Tailwind for RN)
- Routing: Expo Router (파일 기반)
- Forms: React Hook Form + Zod
- Icons: Lucide React Native
- Framework: Next.js (예정)
- UI: Tailwind CSS, shadcn/ui
- Deploy: Vercel
- Container: Docker
- CI/CD: GitHub Actions
- Deploy: AWS EC2 (Backend), App Store/Play Store (App)
┌──────────────────┐
│ Mobile App │
│ (Expo / RN) │
└────────┬─────────┘
│ HTTP/REST API
│
┌────────▼─────────┐
│ Spring Boot API │
│ (JWT Auth) │
└────────┬─────────┘
│
┌────────┴─────────┐
│ │
┌────▼─────┐ ┌───▼────┐
│ MySQL │ │ Redis │
│ (RDS) │ │(Cache) │
└──────────┘ └────────┘
| Phase | 상태 | 진행률 | 완료일 |
|---|---|---|---|
| Phase 1: MVP Core | ✅ 완료 | 100% (26/26 API) | 2026-02-26 |
| Phase 2: 성장 통계 | 🚧 진행 중 | 20% (1/5 API) | 2026-03-31 (예정) |
| Phase 3: 커뮤니티 | 📋 계획 | 0% (0/8 API) | 2026-04-30 (예정) |
총 39개 API
| 도메인 | 완료 | 진행 중 | 계획 |
|---|---|---|---|
| Auth (인증) | 6 | 0 | 0 |
| Users (사용자) | 1 | 0 | 0 |
| Exercises (운동 종목) | 2 | 0 | 0 |
| Routines (루틴) | 7 | 0 | 0 |
| Workout Sessions (운동 세션) | 8 | 0 | 0 |
| Stats (통계) | 1 | 4 | 0 |
| Community (커뮤니티) | 0 | 0 | 8 |
| Admin (관리자) | 2 | 0 | 0 |
- 동일 루틴 반복 시 회차별 성장 확인
GET /api/workouts/sessions/routines/{routineId}/last- 직전 회차 조회
- 루틴 수행 시 직전 기록 참고하여 목표 설정
- 과거 기록은 절대 변경되지 않음
- 루틴/종목 수정해도 기록 불변
main
└── develop
├── feature/backend-stats-api
├── feature/app-dashboard
└── feature/admin-user-management
<type>(<scope>): <subject>
예시:
- feat(backend): 통계 API 추가
- fix(app): 로그인 버그 수정
- docs: API 명세 업데이트
- chore(gitignore): 보안 파일 필터 강화
# .github/workflows/backend-deploy.yml
on:
push:
paths:
- 'backend/**'
# .github/workflows/app-deploy.yml
on:
push:
paths:
- 'app/**'- 회원가입, 로그인, 내 정보 조회, 로그아웃, 토큰 갱신, 회원 탈퇴
- JWT 기반 인증, BCrypt 비밀번호 해싱
- 프로필 수정
- 운동 종목 목록 조회, 커스텀 종목 추가
- BodyPart Enum 8가지
- 루틴 CRUD, 활성화/비활성화
- 세션 CRUD, 진행 중인 세션 조회, 루틴의 최근 세션 조회
- 4가지 완료 액션 정책
- 홈 화면 통계 (이번 주/달, 주간 활동, 자주 하는 운동 TOP 5, 최근 기록)
- 전체 운동 종목 조회, 기본 종목 추가
- 인증: JWT (Access Token 1시간, Refresh Token 7일)
- 비밀번호: BCrypt 해싱 (strength 10)
- 입력 검증: Bean Validation
- SQL Injection 방지: JPA 사용
- CORS: 환경변수로 허용 origin 관리
- 토큰 저장: Expo Secure Store (암호화)
-- 세션 조회 최적화
CREATE INDEX idx_session_user_completed ON workout_sessions (user_id, completed_at);
-- 세트 조회 최적화
CREATE INDEX idx_set_exercise_session ON workout_sets (exercise_id, workout_session_id);
-- 루틴 조회 최적화
CREATE INDEX idx_routine_user_active ON routines (user_id, active);| 데이터 | TTL | 갱신 조건 |
|---|---|---|
| 홈 화면 통계 | 5분 | 세션 완료 시 |
| 운동 종목 목록 | 1시간 | 종목 추가/수정 시 |
| Refresh Token | 7일 | 로그아웃 시 삭제 |
| 주차 | 목표 | 상태 |
|---|---|---|
| Week 1-2 | 프로젝트 설정, 인증 시스템 | ✅ 완료 |
| Week 3-4 | 루틴 및 운동 기록 핵심 기능 | ✅ 완료 |
| Week 5-6 | 홈 통계 API, 도메인 리팩토링 | ✅ 완료 |
| Week 7-8 | 성장 통계 API 개발 | 🚧 진행 중 |
| Week 9-10 | 프론트엔드 통합 | 📋 예정 |
| Week 11-12 | 통합 테스트, 버그 수정 | 📋 예정 |
| 주차 | 목표 |
|---|---|
| Week 1-2 | 커뮤니티 백엔드 개발 |
| Week 3-4 | 커뮤니티 프론트엔드 개발 |
| Week 5-6 | 베타 테스터 모집 (20~50명) |
| Week 7-8 | 사용자 피드백 수집 및 반영 |
| Week 9-10 | 성능 최적화 |
| Week 11-12 | UX 개선, 최종 QA |
- 정식 서비스 오픈
- 마케팅 및 사용자 확보
- 레이어 분리: Controller → Service → Repository → Entity
- DTO 필수 사용 (Entity 직접 반환 금지)
- Lombok 활용:
@RequiredArgsConstructor,@Getter,@Builder
any사용 금지- Custom Hook으로 API 호출 로직 분리
- React Query 사용 (웹)
- GitHub: [Repository Link]
- Email: [Contact Email]
프로젝트 진행 중 | Phase 2 개발 중 🚧