나의 연주 습관과 화성학적 의도를 정밀 분석하여, 독학 중에도 레슨을 받는 듯한 성장을 경험하게 돕는 AI 음악 멘토링 플랫폼
"내가 방금 이 음을 쳤지?"라는 물음에 AI가 화성학적 답변을 들려주는 과정
무심코 연주한 음들의 의미를 깨닫게 되면, 자신의 연주를 객관적으로 바라보는 눈이 생기고 스스로를 가르칠 수 있는 ‘자생력’이 생깁니다.
혼자 연습하거나 레슨을 받을 때 놓치기 쉬운 ‘내가 모르는 나의 단점’을 정확히 찾아내는 단계
단순히 ‘연습하세요’가 아니라, 무엇이 부족한지 인지시키고 그것을 채울 수 있는 명확한 학습 지도(Roadmap)를 제시하여 연습의 효율을 극대화합니다.
즉흥 연주를 ‘천재들의 전유물’이 아니라, 누구나 도전하고 즐길 수 있는 ‘놀이’로 만드는 최종 목표
자신의 소리를 이해하고 부족함을 채워가는 작은 성공 경험들이 쌓여, 막연한 두려움을 자신감으로 바꿔줍니다.
-
Node 버전
- v22.20.0
-
npm 명령어 예시
npm install # 전체 설치
npm install 라이브러리 # 라이브러리 설치
npm run dev # 개발 서버 실행
npm run build # 타입 체크 + 프로덕션 빌드
npm run preview # 빌드 결과 로컬 미리보기
npm run lint # ESLint 검사
npm run stylelint # 스타일 린트 검사
npm run format # Prettier 포맷팅
npm run format:check # 포맷 검사만 수행
MuseReview는 Web MIDI API로 건반 입력을 받습니다.
| 항목 | 내용 |
|---|---|
| 브라우저 | Chrome 또는 Edge (Safari · Firefox는 Web MIDI 미지원) |
| 권한 | 최초 접속 시 MIDI 기기 접근 허용 팝업에서 "허용" |
| 기기 선택 | 설정 → MIDI 기기에서 사용할 기기를 클릭해 선택 |
| 레이턴시 | 연주 시작 전 레이턴시 체크 실행 |
- 전자 피아노 — USB 케이블로 연결 후 전원을 켜면 자동 인식됩니다. 앱이 자체 사운드를 재생하므로 소리가 겹치면 피아노 볼륨을 줄여 주세요.
- 전자 피아노가 없다면 — 가상 MIDI 건반으로 시연할 수 있습니다 → 가상 건반 시연 가이드
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 # 이슈 · PR 템플릿
┣ 📂 .husky # 커밋 훅 (lint-staged)
┣ 📂 public # 폰트 · 사운드 · 샘플 MusicXML
┣ 📂 src
┃ ┣ 📂 apis # axios 인스턴스, 도메인별 API 함수
┃ ┣ 📂 assets # 도메인별 정적 에셋
┃ ┣ 📂 components # 재사용 컴포넌트 (common / history / learn / main / mentor / metronome / piano / practice / score / settings)
┃ ┣ 📂 constants # 도메인 상수
┃ ┣ 📂 hooks # 커스텀 훅 (MIDI · 메트로놈 · 악보 싱크 · 서버 상태)
┃ ┣ 📂 layout # 공통 레이아웃
┃ ┣ 📂 pages # 도메인별 라우팅 페이지
┃ ┃ ┣ 📂 admin # ⚠️ MVP 제외 — 관리자 (대시보드 / 마이페이지 / 수강생 / 강사 / 트랙)
┃ ┃ ┣ 📂 auth # 로그인 · 소셜 로그인 콜백
┃ ┃ ┣ 📂 common # 공통 페이지 (로딩 / 404)
┃ ┃ ┣ 📂 history # 기록
┃ ┃ ┣ 📂 landing # 랜딩 · 인트로
┃ ┃ ┣ 📂 latency # 레이턴시 측정
┃ ┃ ┣ 📂 learn # 학습 (커리큘럼 / 단계학습 / 이론 / 점수)
┃ ┃ ┣ 📂 main # 메인 대시보드
┃ ┃ ┣ 📂 onboarding # 온보딩 (약관 / 역할 / 플랜 / 프로필 설정)
┃ ┃ ┣ 📂 practice # 연습 (생성 / 상세 / 편집 / 플레이 / 분석)
┃ ┃ ┗ 📂 profile # 프로필
┃ ┣ 📂 routes # 라우팅 정의
┃ ┣ 📂 stores # Zustand 전역 상태
┃ ┣ 📂 types # TypeScript 타입
┃ ┗ 📂 utils # 전역 유틸
┗ 📜 설정 파일 # .coderabbit.yaml, .prettierrc, .stylelintrc, eslint.config.js, tsconfig.*, vite.config.ts, vercel.json
⚠️ src/pages/admin(및/admin라우트)은 MVP 범위에서 제외된 기능입니다.



