A tracking application to monitor the location of company trucks. Truck details are showed in List and Map views.
Links:
Download APK from here
Screens from here
Demo Video
Project Architecture:
Clean - MVVM
Project Language:
Kotlin
Project Highlights:
- 79% code coverage - [Details]
- Focussed on SOLID principles | Clean - MVVM Architecture
- Object oriented programming approach
- DI using Hilt
- Usage of Jetpack components such as Room, NavGraph, View/DataBinding, ViewModel, LiveData...
- Kotlin Coroutines/Flow, Rx
- Kotlin List filters and sorting
- Room query operations
- Unit, UI and Database tests
- Optional Obfuscation
- Scalability
Database used:
Room
SCM/Git:
GitHub
- Splash page
- List page
- Map page
- When the app is launched, a Splash page is presented with App icon
- Once the user lands on the Dashboard, the app loads truck data from local database, also pulls the latest data from server.
- In successful retrieval of data from server, the local cache (DB) is flushed and the new data is stored as cache.
- The List and Map fragments observer on the shared view model truck live data.
- When there is a data update in the shared view model live data, its loaded to the List and Map UI
- The sort button in the action bar orders the list/map data in ascending or descending order.
- Users can search for the trucks with plate number, name and location.
- Up on search, the relevant results are queried from database to the List and Map views.
- Listeners are attached to the truck items to process the user selections.
- Clean-MVVM architecture, components are easily replaceable and focussed on SOLID principles
- Coroutines, flow, live data to pass or observer events/data to parts of application
- The Dashboard transition is with NavGraph component and BottomBar
- UI is loaded by View/Data binding
- Functional/Method bindings for views
- Factory class structure for Local/Network data sources
- Room database is updated with API results for persistence
- Search data from local Database with multiple conditions
- Hilt for dependency injection
- Code coverage with CodeCov, check the codecov badge at the top to see the results.
App icon from FlatIcon