RunTrack is a Running Tracking app made using Modern Android Development (MAD), including Jetpack Compose, MVVM architecture, and Google Maps API. The app allows users to track their running activities and displaying real-time routes on an interactive map.
RunTrack
RunTrack is a Fitness Tracking app utilizing modern Android technologies, including Jetpack Compose, MVVM architecture, and Google Maps API. The app allows users to track their running activities, displaying real-time routes on an interactive map while storing essential statistics using Room database.
Features
- Live tracking of running activity using GPS.
- Tracking of user's running path in Map using Google Map Compose library.
- Using Foreground Service, even the user closed the app and remove
- Room database to store and manage running statistics.
- Handling nested navigation, Deep linking, conditional navigation to on
- New Jetpack Compose image picker - helps to pick image
- Paging3 integration.
- Dynamic color support in dark and light theme.
- Weekly Statistics with filters in graph.
Screenshot
| | | | |-------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| | |
|
| |
|
|
|
Package Structure
background: Handles background related
data: Responsible for producing data. Contains
tracking: Classes that handles
tracking like location tracking.
interfaces.
ui: UI Layer of the app.
nav: Contains app navigation and destinations.
* screen: Contains UI.
* theme: Material3 theme.
* common: UI utility classes and common components.
common: Utility class used across the app.
Build With
Kotlin: As the programming language.
Jetpack Compose : To build UI.
Jetpack Navigation : For navigation between screens and deep linking.
Room : To store and manage running statistics.
Google Maps API : To track user's running activity such as speed, distance and path on the map.
Hilt : For injecting dependencies.
Preferences DataStore : To store user related data.
Coil : To load image asynchronously.
Vico : To show graphs in statistics screen.
Architecture
This app follows MVVM architecture, Uni Directional Flow (UDF) pattern and Single architecture pattern. HLD of tracking architecture is shown in the below image:
Installation
Simple clone this app and open in Android Studio.
Google Map Integration
Do these steps if you want to show google maps. The tracking functionalities will work as usual even if you don't do these step.
- Create and Get Google Maps API key by using this official
- Open
local.propertiesfile. - Enter your API key like this:
MAPSAPIKEY=yourmapsapi_key
Project Status
These features are left to be implemented:
- Profile menu implementation.
- Unit Tests
- Currently, we are storing (maps screenshot) bitmap directly into db in form of bytes
- App Icon
- Suitable markers for the start, end, and current position.