An app that tracks user runs and displays them with a running route on the map
- Multi-module project
- MVI
- Offline-first app
- Convention Gradle plugin
- Secrets Gradle Plugin for Android
- Koin for DI
- Ktor HttpClient with its utility functions
- Custom Result class to process Http requests and errors
- Android Splash screen API
- Authentication process
- Bearer tokens access and refresh mechanism
- Encrypted SharedPreferences to save Bearer tokens to stay logged in
- Work with focusable states and bringIntoButtonViewRequester
- Multiple permission handling
- Google Maps
- Tracking location and drawing a running path
- Kotlin Flows to transfer data
- Foreground Service with a Pending intent to track the run in background and reopen a current active run screen
- Room DB
- Work Manager to sync data
- Implementing a dynamic loaded Analytics module in the app
- Availability and support of the Wear OS app
- Discovering paired devices (phone and watch)
- Share info and actions between paired devices by using Wearable Messaging Client
- Ambient mode for the wearable device