프로젝트

[운동 루틴 트래커] 프로젝트 Day 1 - 기획

hawon6691 2025. 12. 8. 17:53
728x90

📌 프로젝트 개요

프로젝트명: FitTracker (운동 루틴 트래커)
기간: 5일 (2025.12.09 ~ 12.12)
목표: 기획부터 배포까지 완성하는 풀스택 개인 프로젝트

기술 스택

  • Backend: Java 21, Spring Boot 4.0.0, Spring Data JPA
  • Database: MySQL 8.x
  • Security: Spring Security + JWT
  • 배포: AWS EC2 + RDS (예정)

🎯 Day 1 목표

  1. 프로젝트 요구사항 정의
  2. 데이터베이스 ERD 설계
  3. REST API 명세 작성
  4. Spring Boot 프로젝트 초기 설정

📋 핵심 기능 정의

1. 사용자 관리

  • 회원가입/로그인 (JWT 인증)
  • 사용자 프로필 관리

2. 운동 루틴 관리

  • 운동 루틴 CRUD
  • 루틴별 운동 종목 설정
  • 목표 세트/횟수/무게 설정

3. 운동 기록

  • 날짜별 운동 세션 기록
  • 실제 수행한 세트/무게/횟수 입력
  • 운동 메모 작성

4. 통계 및 분석

  • 주간/월간 운동 빈도
  • 신체 부위별 운동량 분석
  • 무게 변화 추이 그래프

🗄️ 데이터베이스 ERD 설계

주요 테이블 구조

1. users (사용자)

컬럼명 타입 설명
id BIGINT (PK) 사용자 ID
email VARCHAR(100) 이메일 (UNIQUE)
password VARCHAR(255) 암호화된 비밀번호
name VARCHAR(50) 이름
created_at TIMESTAMP 생성일시

2. exercise_types (운동 종목 마스터)

컬럼명 타입 설명
id BIGINT (PK) 종목 ID
name VARCHAR(100) 종목명 (벤치프레스, 스쿼트 등)
body_part VARCHAR(50) 신체 부위 (가슴, 등, 다리 등)
description TEXT 설명

3. routines (운동 루틴)

컬럼명 타입 설명
id BIGINT (PK) 루틴 ID
user_id BIGINT (FK) 사용자 ID
name VARCHAR(100) 루틴명
description TEXT 설명
created_at TIMESTAMP 생성일시

4. routine_exercises (루틴 내 운동 종목)

컬럼명 타입 설명
id BIGINT (PK) ID
routine_id BIGINT (FK) 루틴 ID
exercise_type_id BIGINT (FK) 운동 종목 ID
target_sets INT 목표 세트 수
target_reps INT 목표 반복 횟수
target_weight DECIMAL(5,2) 목표 무게 (kg)
order_index INT 순서

5. workout_sessions (운동 세션)

컬럼명 타입 설명
id BIGINT (PK) 세션 ID
user_id BIGINT (FK) 사용자 ID
routine_id BIGINT (FK) 루틴 ID (nullable)
workout_date DATE 운동 날짜
duration_minutes INT 운동 시간 (분)
notes TEXT 메모
created_at TIMESTAMP 생성일시

6. workout_sets (실제 수행 세트)

컬럼명 타입 설명
id BIGINT (PK) ID
workout_session_id BIGINT (FK) 세션 ID
exercise_type_id BIGINT (FK) 운동 종목 ID
set_number INT 세트 번호
reps INT 실제 반복 횟수
weight DECIMAL(5,2) 실제 무게 (kg)
completed BOOLEAN 완료 여부

🔌 REST API 설계

인증 API

POST   /api/auth/signup          회원가입
POST   /api/auth/login           로그인

운동 종목 API

GET    /api/exercises            전체 운동 종목 조회
GET    /api/exercises?bodyPart=  신체 부위별 조회

루틴 관리 API

POST   /api/routines             루틴 생성
GET    /api/routines             내 루틴 목록
GET    /api/routines/{id}        루틴 상세 조회
PUT    /api/routines/{id}        루틴 수정
DELETE /api/routines/{id}        루틴 삭제

운동 기록 API

POST   /api/workouts                      운동 세션 시작
POST   /api/workouts/{sessionId}/sets     세트 기록
GET    /api/workouts?startDate=&endDate=  기간별 조회
GET    /api/workouts/{sessionId}          세션 상세

통계 API

GET    /api/stats/weekly                      주간 통계
GET    /api/stats/body-parts                  신체 부위별 통계
GET    /api/stats/exercise/{id}/progress      종목별 진행도

🛠️ Spring Boot 프로젝트 초기 설정

주요 의존성

- spring-boot-starter-web
- spring-boot-starter-data-jpa
- spring-boot-starter-security
- mysql-connector-j
- jjwt (JWT 토큰)
- lombok
- spring-boot-starter-validation

application.yml 설정

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/fittracker
    username: root
    password: ****
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  jwt:
    secret: ****
    expiration: 86400000

프로젝트 패키지 구조

com.fittracker
├── FitTrackerApplication.java
├── config/          # Security, JWT 설정
├── domain/          # Entity 클래스
├── repository/      # JPA Repository
├── service/         # 비즈니스 로직
├── controller/      # REST Controller
├── dto/             # 요청/응답 DTO
├── security/        # JWT, 인증 관련
└── exception/       # 예외 처리

✅ Day 1 완료 내역

  • 프로젝트 요구사항 정의
  • ERD 설계 완료
  • REST API 명세 작성
  • Spring Boot 프로젝트 생성
  • MySQL 데이터베이스 생성
  • 기본 설정 파일 작성
  • 패키지 구조 설계
  • Health Check API 테스트 완료

🚀 향후 일정

Day 2 (화요일) - 백엔드 개발 1

  • Entity 클래스 작성
  • Repository 계층 구현
  • 기본 Service CRUD 구현
  • JWT 인증 구현

Day 3 (수요일) - 백엔드 개발 2

  • 나머지 Service 로직 완성
  • Controller 작성
  • API 테스트 (Postman)
  • 통계 API 구현

Day 4 (목요일) - 테스트 및 보완

  • 단위 테스트 작성
  • 통합 테스트
  • 버그 수정
  • 간단한 프론트엔드

Day 5 (금요일) - 배포 및 문서화

  • AWS 배포
  • API 문서 정리
  • README 작성
  • 프로젝트 보고서
728x90