Flutter · Offline-first · Android

STATIONX

Local-first strength & cardio training log

Log every set, rep and weight, follow a fixed workout rotation, and let the app work out volume, estimated 1RM, progression suggestions and personal records — all on your phone, with no account required.

Works Offline Rotation-Based Auto 1RM & PRs No Tracking
~420
Automated tests
0
Analytics / ads
5
Architecture layers
26
Min Android SDK (API)

StationX is a local-first training log for Android, built with Flutter. It replaces an older personal app with a cleaner design (a “Kinetic Obsidian” dark theme — near-black canvas with a lime accent — designed in Google Stitch) and a testable architecture: a pure-Dart domain layer, Isar persistence behind repository interfaces, and plain Flutter state management with no state-management package.

Everything works offline and your data lives on your device. Optional Supabase cloud backup and read-only Health Connect / Apple Health sleep and resting-heart-rate data are off by default. A one-time importer migrates the full history from the old Gym Tracker app, idempotently and without touching existing data.

Android primary target Flutter 3.47 / Dart 3.13 Isar local database Optional Supabase sync kg / lb, dark + OLED themes TalkBack-checked accessibility

Rotation, not a calendar

You follow a fixed rotation (e.g. Chest + Biceps → Back + Triceps → Legs + Shoulders). It is index-based and only advances when a workout is completed, so a missed week never breaks the plan. Backdated sessions keep the date you actually trained.

Volume, 1RM & PRs

Every set, rep and weight is logged. Volume, Epley estimated 1RM, progression suggestions and personal records are computed in a pure-Dart domain layer — UI widgets never calculate them.

Active workout logger

Per-exercise set rows, a numeric keypad, previous performance, progression hint, rest timer, plate calculator and notes. Smart Swap suggests equivalent replacement exercises for the same muscle and movement.

Muscle-map illustrations

Exercise “images” are vector muscle maps drawn in code instead of photos, shown on the exercise details page alongside history, PRs and an e1RM chart.

Cardio tracking

Live and manual cardio for run, treadmill, bike, row and more. Fields adapt to the activity type — distance, duration, pace, incline, resistance, heart rate, calories — with goals, records and history.

Optional cloud sync

Fully offline by default. Turn on Supabase backup/sync with owner-only Row Level Security, last-write-wins, tombstones and an in-app account-deletion RPC. Optional read-only Health Connect / Apple Health sleep and resting-HR data.

Rotation

Index-basedAdvances on completion only

Dates

workout_date ≠ created_atBackdating supported

Domain layer

Pure DartNo calculations in widgets

Local-first

Offline by defaultNetwork is optional
Flutter Dart Isar Supabase Health Connect Material 3 ChangeNotifier Row Level Security Epley 1RM Google Stitch ~420 tests Android