헬스장 및 피트니스 센터를 위한 종합적인 운동 관리 시스템의 백엔드 애플리케이션입니다.
- 사용자 관리: 회원가입, 로그인, 프로필 관리
- 운동 기록: 운동 기록 생성, 조회, 수정, 삭제
- 출석 관리: 회원 출석 기록 및 통계
- 운동 종목: 케틀벨, 바벨, 덤벨 등 다양한 운동 종목 관리
- 신체 정보: 인바디 측정 데이터 관리
- 멤버십: 회원권 관리 및 히스토리 추적
- 관리자 기능: 사용자 상태 변경, 권한 관리
- Java 17
- Spring Boot 3.2.1
- Spring Security + JWT
- Spring Data JPA + QueryDSL
- MySQL 8.0
- Gradle
- Docker
- JWT 토큰 만료 시간을 24시간으로 연장
- CORS 설정 개선 (환경별 도메인 제한)
- Docker 컨테이너 보안 강화 (non-root 사용자)
- Spring Security 설정 최적화
- 전역 예외 처리기 강화
- 구체적인 에러 메시지 제공
- 로깅 시스템 개선
- 검증 예외 처리 추가
- MySQL 8.0 dialect 사용
- HikariCP 커넥션 풀 설정
- JPA 배치 처리 최적화
- QueryDSL 설정 개선
- Spring Boot Actuator 추가
- 헬스체크 엔드포인트
- API 문서화 (Swagger) 개선
# 개발 환경
export SPRING_PROFILES_ACTIVE=dev
# 프로덕션 환경
export SPRING_PROFILES_ACTIVE=prod
-- MySQL 8.0 이상 필요
CREATE DATABASE passionate_athlete CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 프로덕션 환경
export DB_URL=jdbc:mysql://your-db-host:3306/passionate_athlete
export DB_USERNAME=your-username
export DB_PASSWORD=your-password
export JWT_SECRET=your-jwt-secret-key
# Gradle로 실행
./gradlew bootRun
# 또는 JAR 파일로 실행
./gradlew build
java -jar build/libs/passionate-athlete-backend-0.0.1-SNAPSHOT.jar
# 이미지 빌드
docker build -t passionate-athlete-backend .
# 컨테이너 실행
docker run -p 9081:9081 \
-e DB_URL=jdbc:mysql://host.docker.internal:3306/passionate_athlete \
-e DB_USERNAME=root \
-e DB_PASSWORD=password \
-e JWT_SECRET=your-secret-key \
passionate-athlete-backend
- Swagger UI: http://localhost:9081/swagger-ui.html
- API Docs: http://localhost:9081/api-docs
src/main/java/com/backend/athlete/
├── support/ # 공통 설정 및 유틸리티
│ ├── config/ # 설정 클래스들
│ ├── exception/ # 예외 클래스들
│ ├── handler/ # 전역 예외 처리
│ └── util/ # 유틸리티 클래스들
├── user/ # 사용자 관련 도메인
│ ├── admin/ # 관리자 기능
│ ├── auth/ # 인증/인가
│ ├── user/ # 사용자 관리
│ ├── branch/ # 지점 관리
│ ├── workout/ # 운동 관리
│ ├── attendance/ # 출석 관리
│ ├── exercise/ # 운동 종목
│ ├── physical/ # 신체 정보
│ └── membership/ # 멤버십 관리
- JWT 기반 인증: 24시간 만료 시간
- 역할 기반 권한: ADMIN, MANAGER, USER
- CORS 설정: 환경별 도메인 제한
- 패스워드 암호화: BCrypt 사용
자세한 코드 컨벤션은 docs/CODE_CONVENTION.md를 참조하세요.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
프로젝트에 대한 문의사항이 있으시면 이슈를 생성해주세요.