나의 연주 습관과 화성학적 의도를 정밀 분석하여, 독학 중에도 레슨을 받는 듯한 성장을 경험하게 돕는 AI 음악 멘토링 플랫폼
"내가 방금 이 음을 쳤지?"라는 물음에 AI가 화성학적 답변을 들려주는 과정
무심코 연주한 음들의 의미를 깨닫게 되면, 자신의 연주를 객관적으로 바라보는 눈이 생기고 스스로를 가르칠 수 있는 ‘자생력’이 생깁니다.
혼자 연습하거나 레슨을 받을 때 놓치기 쉬운 ‘내가 모르는 나의 단점’을 정확히 찾아내는 단계
단순히 ‘연습하세요’가 아니라, 무엇이 부족한지 인지시키고 그것을 채울 수 있는 명확한 학습 지도(Roadmap)를 제시하여 연습의 효율을 극대화합니다.
즉흥 연주를 ‘천재들의 전유물’이 아니라, 누구나 도전하고 즐길 수 있는 ‘놀이’로 만드는 최종 목표
자신의 소리를 이해하고 부족함을 채워가는 작은 성공 경험들이 쌓여, 막연한 두려움을 자신감으로 바꿔줍니다.
-
Node 버전
- v22.20.0
-
npm 명령어 예시
npm install # 전체 설치
npm install 라이브러리 # 라이브러리 설치
npm run dev # 개발 서버 실행
npm run build # 빌드
npm run lint # 린트 검사
npm run format # 포맷팅
develop ← 작업 브랜치
-
main branch: 배포 브랜치 -
develop branch: 개발 브랜치, feature 브랜치가 merge됨 -
feature / chore / refactor branch: 개발 브랜치
-
이슈 생성
-
이슈 번호에 맞게
develop브랜치에서 새로운 브랜치 생성 -
작업 완료 후 커밋 컨벤션에 맞게 커밋
-
PR 생성
-
코드 리뷰 후
develop브랜치로 병합- 최소 1명 승인 후
develop브랜치로 머지
- 최소 1명 승인 후
- 구조:
브랜치종류/#이슈번호-기능설명 - 구분자: 하이픈(
-) 사용
| Prefix | 설명 |
|---|---|
init |
초기 프로젝트 세팅 |
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 변경 |
style |
UI 수정 |
refactor |
코드 리팩토링 |
test |
테스트 코드 관련 |
chore |
설정 파일 변경 |
hotfix |
긴급한 버그 수정 |
deploy |
배포 관련 작업 |
- 구조:
prefix: 상세설명 (#이슈번호) - 예시
init: 프로젝트 초기 세팅 (#1)feat: 로그인 페이지 개발 (#2)
| Prefix | 설명 |
|---|---|
init |
초기 프로젝트 세팅 |
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 변경 |
style |
UI 수정 |
refactor |
코드 리팩토링 |
test |
테스트 코드 관련 |
chore |
설정 파일 변경 |
hotfix |
긴급한 버그 수정 |
deploy |
배포 관련 작업 |
📦 MuseReview
┣ 📂 .github
┃ ┣ 📂 ISSUE_TEMPLATE
┃ ┗ 📜 PULL_REQUEST_TEMPLATE.md
┣ 📂 public
┃ ┗ 📂 fonts # Pretendard 폰트
┣ 📂 src
┃ ┣ 📂 apis # axios 인스턴스, API 함수
┃ ┃ ┣ 📜 axiosInstance.ts
┃ ┃ ┗ 📜 profile.ts
┃ ┣ 📂 assets # 정적 에셋 (도메인별 폴더: auth / landing / layout / learn / main / metronome / onboarding / practice / profile ...)
┃ ┣ 📂 components # 재사용 컴포넌트
┃ ┃ ┣ 📂 common # 공용 컴포넌트 (WithdrawModal)
┃ ┃ ┣ 📂 metronome # 메트로놈 (MetronomeDots)
┃ ┃ ┣ 📂 piano # 피아노 / 노트바 (Piano, NoteBars)
┃ ┃ ┗ 📂 settings # 설정 모달 (SettingsModal)
┃ ┣ 📂 constants # 상수 (difficulty, piano)
┃ ┣ 📂 hooks # 전역 커스텀 훅 (useMidi / useMetronome / useActiveNotes / useProfile / useNicknameCheck ...)
┃ ┣ 📂 layout # 공통 레이아웃 (AppLayout, Navbar, NotificationDrawer)
┃ ┣ 📂 pages # 도메인별 라우팅 페이지
┃ ┃ ┣ 📂 admin # 관리자 (대시보드 / 마이페이지 / 수강생 / 강사 / 트랙)
┃ ┃ ┣ 📂 auth # 로그인 (LoginPage)
┃ ┃ ┣ 📂 common # 공통 페이지 (LoadingPage)
┃ ┃ ┣ 📂 history # 기록 (HistoryPage, HistoryDetailPage)
┃ ┃ ┣ 📂 landing # 랜딩 (LandingPage, IntroPage, LandingGate, GLSL 셰이더)
┃ ┃ ┣ 📂 latency # 레이턴시 측정 (LatencyCheckPage)
┃ ┃ ┣ 📂 learn # 학습 (커리큘럼 / 단계학습 / 주제 / 점수 + components)
┃ ┃ ┣ 📂 main # 메인 대시보드 (MainPage + components)
┃ ┃ ┣ 📂 onboarding # 온보딩 (약관 / 역할 / 플랜 / 프로필)
┃ ┃ ┣ 📂 practice # 연습 (생성 / 상세 / 편집 / 플레이 / 분석 + components)
┃ ┃ ┗ 📂 profile # 프로필 (ProfilePage, ProfileEditPage)
┃ ┣ 📂 routes # router.tsx (라우팅 정의)
┃ ┣ 📂 stores # Zustand 전역 상태 (settingsStore)
┃ ┣ 📂 types # TypeScript 타입 (api / notification / profile / topic / track)
┃ ┣ 📂 utils # 전역 유틸 (metronome, validateNickname)
┃ ┣ 📜 App.tsx
┃ ┣ 📜 main.tsx
┃ ┣ 📜 index.css # 디자인 토큰 · 타이포그래피 · 애니메이션
┃ ┗ 📜 App.css
┣ 📜 .coderabbit.yaml # CodeRabbit 리뷰 설정
┣ 📜 .gitignore
┣ 📜 .prettierrc
┣ 📜 .stylelintrc
┣ 📜 eslint.config.js
┣ 📜 index.html
┣ 📜 package.json
┣ 📜 package-lock.json
┣ 📜 tsconfig.app.json
┣ 📜 tsconfig.json
┣ 📜 tsconfig.node.json
┗ 📜 vite.config.ts



