Skip to content

94-c/passionate_athlete_user_backend

Repository files navigation

Passionate Athlete Backend

헬스장 및 피트니스 센터를 위한 종합적인 운동 관리 시스템의 백엔드 애플리케이션입니다.

🚀 주요 기능

  • 사용자 관리: 회원가입, 로그인, 프로필 관리
  • 운동 기록: 운동 기록 생성, 조회, 수정, 삭제
  • 출석 관리: 회원 출석 기록 및 통계
  • 운동 종목: 케틀벨, 바벨, 덤벨 등 다양한 운동 종목 관리
  • 신체 정보: 인바디 측정 데이터 관리
  • 멤버십: 회원권 관리 및 히스토리 추적
  • 관리자 기능: 사용자 상태 변경, 권한 관리

🛠️ 기술 스택

  • 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) 개선

🚀 실행 방법

1. 환경 설정

# 개발 환경
export SPRING_PROFILES_ACTIVE=dev

# 프로덕션 환경
export SPRING_PROFILES_ACTIVE=prod

2. 데이터베이스 설정

-- MySQL 8.0 이상 필요
CREATE DATABASE passionate_athlete CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 환경변수 설정

# 프로덕션 환경
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

4. 애플리케이션 실행

# Gradle로 실행
./gradlew bootRun

# 또는 JAR 파일로 실행
./gradlew build
java -jar build/libs/passionate-athlete-backend-0.0.1-SNAPSHOT.jar

5. Docker로 실행

# 이미지 빌드
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

📚 API 문서

🔍 모니터링

🏗️ 프로젝트 구조

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를 참조하세요.

🤝 기여하기

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.

📞 문의

프로젝트에 대한 문의사항이 있으시면 이슈를 생성해주세요.

About

Passionate_Athlete (운동 기록 웹 프로젝트) 백엔드 프로젝트

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •