An app that tracks your running on Google Map that works as a foreground service. User can track their progress by viewing all runs and overall statistics: calories burned, distance, time, speed
- 100% Kotlin
- Modern Architecture: Model-View-ViewModel, Clean Architecture
- Reactive UIs using LiveData observables and Data Binding.
- Dagger-Hilt as dependency injection
- Google Map API to show map, current location, and the path that the user passed.
- A single-activity architecture, using the Navigation Component to manage fragment operations, and deal with whole in-app navigation
- Room local database to store all runs
- Kotlin Coroutines for managing background threads with simplified code and reducing needs for callbacks
- A presentation layer that contains a fragment (View) and a ViewModel(store and manage UI-related data in a lifecycle conscious way) per screen (or feature) .
The architecture is built around Android Architecture Components.
We followed the recommendations laid out in the Guide to App Architecture when deciding on the architecture for the app. We kept logic away from Activities and Fragments and moved it to ViewModels. We observed data using LiveData and used the Data Binding Library to bind UI components in layouts to the app's data sources.
We used a Repository layer for handling data operations. Room - local data source of all runs