a practice session companion for musicians. helps you structure and track your practice time with customizable exercises.
practice-mate is a web app built with elm that helps musicians organize their practice sessions. it's designed to be simple, distraction-free, and focused on what matters: getting better at your instrument.
- practice timer - set time limits and track your progress
- exercise randomization - never get stuck in a rut with randomized practice material
- customizable configurations - choose what you want to practice
- progress tracking - see how many exercises you've completed
- auto-advance - optionally move to the next exercise automatically
practice-mate supports three main practice areas:
- major, minor, melodic minor, harmonic minor
- pentatonic scales (major & minor)
- church modes (ionian, dorian, phrygian, lydian, mixolydian, aeolian)
- chromatic, whole step, blues scales
- mandalorian scale
- basic triads (major, minor, diminished, augmented)
- suspended chords (sus2, sus4)
- seventh chords (maj7, min7, dom7, minmaj7, half-dim7, dim7)
- thirds, fourths, fifths, sixths, octaves
- basic - good starting point with common scales and chords
- all - everything enabled for comprehensive practice
- none - blank slate for custom configuration
- custom - your own mix of topics
- choose specific roots (a, bb, b, c, c#, d, d#, e, f, f#, g, g#)
- select which scales, chords, and intervals to practice
- configure bowing patterns (slurred, repeated)
- set string challenges (a, d, g, c strings)
# install dependencies
npm install
# start development server
npm run dev
# build for production
npm run build- open the app in your browser
- configure your practice session (or use a preset)
- set your time limit
- start practicing!
- the app will randomly present exercises based on your configuration
- elm - functional programming for the frontend
- parcel - bundling and development server
- tailwind css - styling
- material icons - ui elements
src/
├── elm/
│ ├── main.elm # main application logic
│ ├── types.elm # data types and enums
│ └── configuration.elm # practice session configuration
├── css/ # stylesheets
├── js/ # javascript entry point
└── index.html # main html file
named after the practice companion that helps you stay focused and make the most of your practice time. no distractions, just music.
built with ❤️ for musicians who want to practice smarter, not harder.