Offline-first Android application for tracking runs (ktor/room/koin/multi-module/convention-plugins). Create accounts, track runs, and perform background syncs. Includes wearOS app for controlling workouts and sending heart rate data.
Clone this repository (main branch), build & run.
For auth key, please email me directly at [email protected]. Otherwise, you'll be able to download the app from the playstore shortly.
This run tracking application demonstrates multi-module architecture to separate features and layers, each module configured via convention plugins to facilitate build config management. This enforces the data flow rule when communicating between layers (data/domain/presentation). One feature in particular (analytics screen) is separated into a dynamic feature, to showcase benefits of multi-module architecture.
Some of the main screens include:
Home Dark | Home Light | Tracking Run |
---|---|---|
Intro | Sign-In Light | Sign-in Dark |
---|---|---|
WearOS pre-workout | WearOS in-workout |
---|---|
Main features:
- Registration (currently offline, but ready for online support)
- Authentication (currently offline, but ready for online support)
- Starting a run
- Tracking a run on google maps
- Saving a run, it's metrics, and the tracked route.
- Pausing a run mid-workout and having multiple routes
- Workout analytics
- Offline-first functionality
- Foreground service for tracking runs while app is closed or in background.
- WearOS heart-rate tracking
- WearOS workout controls
- ktor for network api requests
- room for storing data locally
- koin for dependency injection (and DI across modules)
- compose for UI
- kotlin coroutines for async programming
Highlight folders: