Real-time run tracking app with map visualization, multi-device sync, and wearable support. Built with Jetpack Compose, Google Maps API, Room, MVI, Ktor
- Mobile app: Android 8.0 (API level 26)
- Wear OS app: Android 11.0 (API level 30)
This project requires a private API key, which is not included in the public repository. As a result, the code is available for review, but the app cannot be executed without the necessary credentials.
- Multi-module project
- MVI (Model-View-Intent) pattern
- Offline-first app
- Convention Gradle plugins
- Secrets Gradle Plugin for Android
- Android Splash Screen API
- Nested type-safe navigation
- Implementing a dynamic loaded Analytics module in the app
- Work Manager to sync data
- Availability and support of the Wear OS app
- Authentication process using bearer tokens for access and refresh mechanisms
- Encrypted SharedPreferences to save bearer tokens and maintain login state
- Room Database for offline storage
- Koin for dependency injection
- Ktor HttpClient with its utility functions
- Google Maps api
- Custom Result class to process Http requests and errors
- Kotlin Flows to transfer data
- Work with focusable states and bringIntoButtonViewRequester
- Multiple permission handling
- Tracking location and drawing a running path
- Foreground Service with a Pending intent to track the run in background and reopen a current active run screen
- Discovering paired devices (phone and watch)
- Share info and actions between paired devices by using Wearable Messaging Client
- Ambient mode for the wearable device
- Convention Gradle plugin for the testing
- Sharable test utility in a multi-module project for Unit tests and Instrumented Integration tests
- Unit and Instrumented Integration tests