A web-based music theory practice application for chord and accidental normalization.
Safe testing ground for all changes before production deployment.
See docs/STAGING_SETUP.md for complete staging workflow.
Before making any changes to the app, read the Learning Path Protection Protocol.
The learning path logic is working correctly and follows a pattern of no accidentals to groups of 1-3 accidentals (first in sharps, then in flats) to 4-6 accidentals (first sharps, then flats):
- Key progression: C → [G → D → A] → [F → Bb → Eb] → [E → B → F#] → [Ab → Db → Gb]
- Chapter progression: accCount → accNotes → scale → triads → sevenths
- Special cases: C major skips accNotes (intentional behavior)
Any modifications to learning path logic require explicit permission and must follow the mandatory protocol.
npm run dev- Start Vite development server (current system)npm run serve:new- Build and preview production version
npm test- Run all testsnpm run test:unit- Run unit tests onlynpm run test:integration- Run integration tests onlynpm run test:accessibility- Run accessibility tests onlynpm run test:performance- Run performance tests onlynpm run test:headless- Run automated learning path testnpm run validate:urls- Verify clean URLs are working correctly
npm run build- Build for productionnpm run preview- Preview built versionnpm run verify- Verify everything works (lint + test + build)
npm run lint- Check code qualitynpm run lint:fix- Fix auto-fixable issuesnpm run format- Format code with Prettier
🔍 ALL development work must follow our Systematic Research Methodology
Quick Start: See Documentation Index for organized guides by role.
git clone https://github.com/fourhexagons/music-theory-practice.git
cd music-theory-practice
npm run dev # Start development server (port 5173)
# Visit http://localhost:5173/practicelearning.lightbath.com- Landing page (future: course marketing)learning.lightbath.com/practice- Music theory practice applearning.lightbath.com/dashboard- Future student dashboards
For local development, use the Vite development server:
npm run devThis will:
- Start the Vite development server on port 5173
- Enable hot module reloading for instant updates
- Serve the current system from the
src/directory
- Practice App: http://localhost:5173/practice
- Landing Page: http://localhost:5173/
/src/ paths or .html extensions in documentation or tests.
- If you see port conflicts, kill any running processes:
pkill -f "vite" - For a clean restart:
npm run dev
- Always use
npm run devfor development. - The development server automatically handles file changes and updates.
- This protocol should be followed by all agents and developers working on this project.
- Run with:
npm test - Runs all unit and Node-compatible performance tests in Node.js (no browser required).
- Skips integration and accessibility tests that require a browser/DOM.
- Run with:
npm run test:browser
- Opens the comprehensive test suite in your browser.
- Includes all integration, accessibility, UI, and DOM-dependent tests.
- Node-compatible tests are fast, reliable, and run automatically in CI/CD.
- Browser-only tests cover UI, accessibility, and integration scenarios that require a real DOM.