{"id":31637631,"url":"https://github.com/selloa/practice-mate","last_synced_at":"2025-10-07T01:38:38.743Z","repository":{"id":311166479,"uuid":"1040345923","full_name":"selloa/practice-mate","owner":"selloa","description":"A distraction-free practice companion for musicians. Helps you structure practice sessions with customizable exercises, timers, and progress tracking. Built with Elm for focused, efficient music practice.","archived":false,"fork":false,"pushed_at":"2025-08-30T20:38:40.000Z","size":772,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T21:28:10.944Z","etag":null,"topics":["chords","distraction-free","elm","intervals","music","practice","progress-tracking","scales","timer","web-app"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selloa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-18T20:45:41.000Z","updated_at":"2025-08-30T20:38:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"43a7205a-9b9b-4ff1-96fa-0f4791e8fa08","html_url":"https://github.com/selloa/practice-mate","commit_stats":null,"previous_names":["selloa/practice-mate"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/selloa/practice-mate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selloa%2Fpractice-mate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selloa%2Fpractice-mate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selloa%2Fpractice-mate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selloa%2Fpractice-mate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selloa","download_url":"https://codeload.github.com/selloa/practice-mate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selloa%2Fpractice-mate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278708073,"owners_count":26031932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chords","distraction-free","elm","intervals","music","practice","progress-tracking","scales","timer","web-app"],"created_at":"2025-10-07T01:38:32.500Z","updated_at":"2025-10-07T01:38:38.736Z","avatar_url":"https://github.com/selloa.png","language":"JavaScript","readme":"# practice-mate\n\na practice session companion for musicians. helps you structure and track your practice time with customizable exercises.\n\n## what it does\n\npractice-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.\n\n### core features\n\n- **practice timer** - set time limits and track your progress\n- **exercise randomization** - never get stuck in a rut with randomized practice material\n- **customizable configurations** - choose what you want to practice\n- **progress tracking** - see how many exercises you've completed\n- **auto-advance** - optionally move to the next exercise automatically\n\n## practice topics\n\npractice-mate supports three main practice areas:\n\n### scales\n- major, minor, melodic minor, harmonic minor\n- pentatonic scales (major \u0026 minor)\n- church modes (ionian, dorian, phrygian, lydian, mixolydian, aeolian)\n- chromatic, whole step, blues scales\n- mandalorian scale\n\n### chords\n- basic triads (major, minor, diminished, augmented)\n- suspended chords (sus2, sus4)\n- seventh chords (maj7, min7, dom7, minmaj7, half-dim7, dim7)\n\n### intervals\n- thirds, fourths, fifths, sixths, octaves\n\n## configuration options\n\n### presets\n- **basic** - good starting point with common scales and chords\n- **all** - everything enabled for comprehensive practice\n- **none** - blank slate for custom configuration\n- **custom** - your own mix of topics\n\n### customization\n- choose specific roots (a, bb, b, c, c#, d, d#, e, f, f#, g, g#)\n- select which scales, chords, and intervals to practice\n- configure bowing patterns (slurred, repeated)\n- set string challenges (a, d, g, c strings)\n\n## getting started\n\n### development\n```bash\n# install dependencies\nnpm install\n\n# start development server\nnpm run dev\n\n# build for production\nnpm run build\n```\n\n### usage\n1. open the app in your browser\n2. configure your practice session (or use a preset)\n3. set your time limit\n4. start practicing!\n5. the app will randomly present exercises based on your configuration\n\n## tech stack\n\n- **elm** - functional programming for the frontend\n- **parcel** - bundling and development server\n- **tailwind css** - styling\n- **material icons** - ui elements\n\n## project structure\n\n```\nsrc/\n├── elm/\n│   ├── main.elm          # main application logic\n│   ├── types.elm         # data types and enums\n│   └── configuration.elm # practice session configuration\n├── css/                  # stylesheets\n├── js/                   # javascript entry point\n└── index.html           # main html file\n```\n\n## why \"practice-mate\"?\n\nnamed after the practice companion that helps you stay focused and make the most of your practice time. no distractions, just music.\n\n---\n\nbuilt with ❤️ for musicians who want to practice smarter, not harder.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselloa%2Fpractice-mate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselloa%2Fpractice-mate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselloa%2Fpractice-mate/lists"}