Map Visualisation is an Android project showing scooters location on a map, based on MVVM architecture. Scooters are individual map pins on Google Maps, but they are clustered during zooming. When a pin is pressed some details of the vehicle is shown on a bottom sheet.
- 100% Kotlin
- MVVM architecture
- Reactive pattern
- Android Jetpack
- Kotlin Coroutines + Flow
- Dependency injection
- CI/CD support
- Android Jetpack - A collections of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices.
- Hilt - Extend the functionality of Dagger Hilt to enable dependency injection of certain classes from the androidx libraries.
- Lifecycle - Lifecycle-aware components that can adjust behavior based on the current lifecycle state of an activity or fragment.
- Room - Create, store, and manage persistent data backed by a SQLite database.
- Retrofit - A type-safe HTTP client for Android and Java
- Moshi - A modern JSON library for Kotlin and Java.
- Maps SDK for Android - Add maps to your Android app using Google Maps data, map displays, and map gesture responses.
- PermissionDispatcher - A declarative API to handle Android runtime permissions.
- Fused Location Provider - Get location data for your app based on combined signals from the device sensors using a battery-efficient API.
- Logcat - Tiny Kotlin API for cheap logging on top of Android's normal Log class.
- MockK - Mocking library for Kotlin.
- Bitrise - Mobile-first CI/CD in the cloud, for any platform.
You need Android Studio Arctic Fox (or newer) to be able to build the app.
This project uses ktlint. Use the ktlint
and ktlint-format
Gradle tasks
to check and format according to proper Kotlin lint rules.
You will need to provide API keys to use the app.
Firstly you have to create an API key for the Maps SDK for Android. You can find information about how to gain access in the following link.
Secondly you have to own the secret key for the appropriate JSONBin.io bin.
Add the keys to the local.properties
file:
# API keys
API_KEY=jsonbin_secret_key
MAPS_API_KEY=maps_api_key