Skip to content

Repository files navigation

Exercio

Offline-first guitar practice, routine building and progress tracking.

Latest release License: MIT Platform Built with Flutter Downloads


Download for Android

Free · no account · works offline · ~21 MB


Exercio is an offline-first guitar practice app for building personalized routines, running focused practice sessions, and tracking progress.

It exists because most practice goes badly for a boring reason: you sit down, you play the thing you can already play, and forty minutes disappear. Exercio gives that time a shape — sections with targets, exercises with tempos, and an honest record of what actually happened.

Everything works with no network. No account, no cloud, no telemetry, no model. The routine generator is a deterministic local function of the answers you give it — the same answers always produce the same routine.

Core principle: practice content is data; application capabilities are features. "Triads" and "Alternate Picking" are editable content, never hard-coded screens.

Screenshots

Routines Practice mode Focus attempt
Practice Library Guitar DNA Your practice path
Generated routine History Session review

Features

Routines

  • Build a routine by hand, section by section
  • Or answer eight questions and let Guitar DNA propose one
  • Sections carry a planned duration; the routine's total is derived, never stored
  • Exercises are reusable across routines, each placement with its own overrides

Practice mode

  • A section timer, and a separate focus timer for a single exercise
  • Manual or auto-advance section completion
  • Next / Previous / Pause / Resume, with controls that disable when they cannot apply
  • Overrunning a target is allowed — it tells you, it does not stop you

Metronome

  • Its own tempo, independent of the exercise tempo
  • Slider, ± steppers, and press-and-hold to run through the range
  • Six original synthesized sound packs, chosen separately from the visual theme
  • Runs in a foreground service, so it keeps sounding when the screen locks

Progress

  • Every attempt records the tempo used and, optionally, how it went
  • Current tempo, target tempo, clean streaks and a progress graph — all derived from history, so correcting an old rating corrects the graph
  • Practice history with per-session review

Everything else

  • 15 practice categories and 147 recommended topics
  • Optional per-attempt quality and fatigue ratings, notes, tunings, difficulty
  • Six visual themes
  • Local data only, no account required

Guitar DNA

Eight questions — what you want said about your playing in three years, which guitarists make you want to practise and what it is about them, how long a realistic session is, where you are now, what annoys you most, which musical worlds pull at you, and the one thing you would fix overnight.

Those answers become weighted priorities across the practice library, and those priorities become an editable routine that adds up to exactly the length you asked for.

It is a deterministic local function — no model, no network, no randomness. Fourteen guitarists ship as weight matrices, and anyone not on the list can be typed in and still shapes the result. Every section explains itself in words: "Weakness: Rhythm", "Guthrie Govan · Phrasing" — never coefficients.

The result is described, never diagnosed. A path name says what the routine emphasises; it never tells you what you are.


Practice Library

15 categories, 147 topics — warm-up, picking, legato, speed, technique, rhythm, musicianship, ear training, fretboard knowledge, theory, chords, improvisation, musical vocabulary, creativity and repertoire.

The library recommends; it never restricts. Typing your own name is always one tap away, and "John Petrucci picking torture" is as valid an exercise as anything shipped.

Adding an exercise to a section shows the topics recommended for that section first, then the three exercises you are most likely to want — the ones related to that category, most recently practised first.

Themes

The same practice state under all six themes. Only the theme changes.

Studio Dark Prism Echo Alien Velocity
Handmade Dream Practice Cartridge Memento Chrome

A theme decides colour, type, shape, motion and the metronome's voice — but no screen ever asks which theme is active. Every widget reads tokens, so adding a theme changes no feature code.

Download

Or pick the build that matches your phone:

Your phone Download Size
Most phones since ~2017 arm64-v8a 21 MB
Older 32-bit phones armeabi-v7a 18 MB
Emulators, x86 Chromebooks x86_64 22 MB
Not sure universal 58 MB

Android 7.0 or newer. Android will warn you about installing outside the Play Store — that is expected for a sideloaded APK. There is no Play Store listing yet.

Verifying your download

Every Exercio release is signed with the same certificate:

SHA-256  3E:BE:A6:F5:88:5F:53:AD:DF:35:E2:B8:E1:41:0D:A1
         39:72:C7:AB:DC:21:5A:17:20:5F:B8:99:DD:C5:27:E3
apksigner verify --print-certs Exercio-v0.1.0-beta.1-arm64-v8a.apk

And check the file arrived intact, against SHA256SUMS.txt on the release page:

sha256sum -c SHA256SUMS.txt

If an APK claiming to be Exercio shows a different fingerprint, it did not come from here.

Privacy

Everything stays on the phone. See PRIVACY.md for the full statement; briefly:

  • Practice data is stored in a local database on the device
  • No account, no sign-in, no server
  • No analytics SDK, no advertising SDK, no crash reporting
  • Nothing is uploaded anywhere, because there is nowhere to upload it to
  • Four Android permissions, all for playing sound at the right moment

Project status

v0.1.0-beta.1 — public beta. Android only.

The MVP is feature-complete and has been tested on real hardware. It is called a beta because it has been tested by one person on one phone, not because anything is known to be broken.

What is not there yet: cloud sync, routine sharing, an account system, iOS, web. See ROADMAP.md.

Roadmap

v0.2 Routine sharing — export, import, Android share sheet. Local first, no account.
v0.3 Optional cloud sync and backup. Optional forever; the app stays fully offline without it.
Later More themes and sound packs, JSON backup/restore, web and other platforms
Exploring Tuner, recording, backing tracks, richer analytics, reminders, a community routine library

Nothing here is dated, and not everything will be built. See ROADMAP.md for the honest version.

Development

Tool Version
Flutter 3.44.8 (stable)
Dart 3.12.2

Dart 3.6+ is required — this repository uses pub workspaces.

flutter pub get
flutter run

Layout

apps/guitar_practice_app         Flutter app; composition root
packages/practice_core           Pure Dart. Domain models and session reducers.
packages/practice_data           Pure Dart. drift schema and repositories.
packages/practice_audio_api      Pure Dart. Metronome and cue contracts.
packages/practice_audio_android  Flutter plugin. Kotlin audio engine.
tools/arch_check                 Dependency-rule checker, run in CI.

practice_core depends on nothing — not Flutter, not the database, not the platform. The direction is enforced by tools/arch_check in CI, not by convention.

The directories still say guitar_practice, as does the Android applicationId. That is deliberate: an applicationId is an app's identity to Android, so changing it would make the next build a different app and an existing install would not upgrade.

Checks

dart analyze
dart run tools/arch_check/bin/arch_check.dart
flutter test

Android support

minSdk 24 (Android 7.0) — Flutter's supported floor
targetSdk 36 (Android 16)
compileSdk 36
ABIs armeabi-v7a, arm64-v8a, x86_64

Two platform behaviours worth knowing:

  • The metronome runs in a mediaPlayback foreground service started while the app is visible, which is what lets it keep sounding after the screen locks under Android 17 background audio hardening.
  • Background target cues are USAGE_ALARM sounds from an AlarmManager broadcast. On Android 17 that path needs the user-granted SCHEDULE_EXACT_ALARM permission to be audible while the app is backgrounded and the metronome is off. Denied, foreground practice is unaffected.

Release builds

flutter build apk --release --split-per-abi
flutter build appbundle --release

Release signing reads an untracked apps/guitar_practice_app/android/key.properties. Without it the build falls back to debug keys and says so — installable for testing, never publishable. See docs/release/.

Contributing

Contributions are welcome. CONTRIBUTING.md covers the project structure, the architectural boundaries, and how to add a theme, a sound pack, or a practice-library topic.

Please read CODE_OF_CONDUCT.md, and report security issues privately via SECURITY.md.

Licence

MIT — see LICENSE.

Bundled fonts are SIL Open Font License 1.1; see the font notice. The Exercio name and logo are part of this repository and covered by the same licence.

About

Offline-first guitar practice, routine building and progress tracking in Flutter.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages