Android-first, offline-friendly workout tracker built with Kotlin, Jetpack Compose, Room, DataStore, WorkManager, and optional Google Drive app data sync.
- Room is the local source of truth for workout history, templates, exercises, sets, sync operations, and tombstones.
- Preferences DataStore stores small settings such as units, theme, onboarding, sync state, and selected Google account.
- WorkManager runs durable sync work when network constraints are met.
- Google Drive
appDataFolderis the optional sync target. The app remains fully usable without Google sign-in. - Jetpack Compose + Material 3 provide the Android-native UI.
-
Open this directory in Android Studio.
-
Let Android Studio sync Gradle.
-
If needed, create
local.properties:sdk.dir=/Users/dylan/Library/Android/sdk -
Run the
appconfiguration.
From the command line:
./gradlew test
./gradlew assembleDebugThe sync layer is implemented behind DriveAppDataGateway and stores full per-device change-log JSON files in Drive app data. Google account connection is optional and controlled by settings through Android's Google account picker. A production OAuth client and consent screen still need to be configured for the package/signing certificate before real devices can sync.
- Local lifting session logging
- Seeded exercise catalog
- Active session restore
- Per-set reps, weight, RPE, notes, completion, duplicate, and delete
- Completed workout history
- Template list foundation
- Unit preference
- Optional Drive sync scaffolding with deterministic merge rules