Skip to content

drichardson-tmp/workout-tracker

Repository files navigation

Workout Tracker

Android-first, offline-friendly workout tracker built with Kotlin, Jetpack Compose, Room, DataStore, WorkManager, and optional Google Drive app data sync.

Architecture

  • 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 appDataFolder is the optional sync target. The app remains fully usable without Google sign-in.
  • Jetpack Compose + Material 3 provide the Android-native UI.

Getting Started

  1. Open this directory in Android Studio.

  2. Let Android Studio sync Gradle.

  3. If needed, create local.properties:

    sdk.dir=/Users/dylan/Library/Android/sdk
  4. Run the app configuration.

From the command line:

./gradlew test
./gradlew assembleDebug

Google Drive Sync

The 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.

Current V1 Scope

  • 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

About

An experiment with gin server

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages