AI 기반 음악 멘토링 서비스 'MuseReview' 백엔드 API 서버입니다.
“Muse + Review” : 뮤즈(영감)를 리뷰하다. > 나의 연주 습관과 화성학적 의도를 정밀 분석하여, 독학 중에도 레슨을 받는 듯한 성장을 경험하게 돕는 AI 음악 멘토링 플랫폼
- 스스로 분석하는 힘 기르기: 무심코 연주한 음들의 화성학적 의미를 깨닫고 스스로의 연주를 객관적으로 바라보는 자생력을 키웁니다.
- 성장의 빈틈 채우기: 놓치기 쉬운 단점을 정확히 찾아내어 명확한 학습 지도(Roadmap)와 맞춤 피드백을 제공합니다.
- 즉흥 연주의 문턱 낮추기: 화성학 기반의 데이터 분석으로 즉흥 연주에 대한 막연한 두려움을 자신감으로 바꿔줍니다.
| 구분 | 기술 스택 | 선정 이유 |
|---|---|---|
| Language | OpenJDK 17 | LTS 버전으로 안정성을 확보하며 최신 자바 신규 스펙 활용 |
| Framework | Spring Boot 3.2.2 | 생산성이 높고 생태계가 풍부하여 빠르게 안정적인 RESTful API 구축 가능 |
| Database | PostgreSQL 18 | 대용량 트랜잭션 처리 및 복잡한 연주 데이터 쿼리에 최적화된 RDBMS |
| ORM | Spring Data JPA | 데이터베이스 액세스 추상화 및 객체 지향적 데이터 모델링 지원 |
| API Doc | Swagger / Springdoc | API 명세서 자동화로 프론트엔드 팀과의 원활한 비동기 협업 지원 |
| Build Tool | Gradle | 유연하고 빠른 빌드 환경 구축 |
안정적인 배포와 독립적인 기능 개발을 위해 Git Flow 방식을 준수합니다.
- 🔵 main : 항상 배포 가능한 상태를 유지하는 운영 브랜치 (직접 작업 금지, PR 머지만 허용)
- 🟢 develop : 다음 배포를 준비하는 통합 개발 브랜치 (모든 기능 개발본이 모이는 곳)
- 🟡 기능 브랜치 : 기능/이슈 단위로
develop에서 파생하여 개발하는 브랜치
- 구조:
Prefix/#이슈번호-작업내용(Kebab Case) - 예시:
feat/#10-login-api,chore/#1-setting-base
| Prefix | 설명 | 사용 예시 |
|---|---|---|
| feat | 새로운 기능 추가 | feat/#10-login-api |
| fix | 버그 수정 | fix/#23-header-layout |
| docs | 문서 수정 (README 등) | docs/#5-update-readme |
| style | 코드 포맷팅 (로직 변경 없음) | style/#12-format-code |
| refactor | 코드 리팩토링 | refactor/#30-user-service |
| chore | 설정 파일 변경, 패키지 빌드 등 | chore/#1-setting-base |
- 메시지 구조:
타입: 작업 내용 (#이슈번호)형식으로 작성 (제목 50자 이내 소문자 태그 권장) - 예시:
feat: 카카오 소셜 로그인 API 추가 (#10)
- PR 머지 조건: 최소 2명 이상의 승인(Approve) 필요
- 리뷰 태그 가이드:
- P1: 꼭 반영해 주세요 (중대한 오류 가능성, Request Changes 필수)
- P2: 적극적으로 고려해 주세요 (토큰/논의 권장)
- P3: 웬만하면 반영해 주세요 / 가벼운 의견 (Comment 처리)
프로젝트 포맷 통일을 위해 Spring JavaFormat 플러그인을 강제 적용합니다.
- 클래스명: PascalCase (예:
AuthController) - 변수/메서드명: camelCase (예:
accessToken) - 상수명: UPPER_SNAKE_CASE (예:
MAX_LIMIT = 3) ⚠️ 주의: 변수 및 메서드명에 언더바(_) 사용 금지