A mobile application built with Android (Kotlin) following the MVVM architecture, integrating Google Maps, Room for persistence, and Dagger Hilt for dependency injection.
The app features a bottom navigation bar with three tabs:
- 🗺️ Map
- 📋 List
- 🔐 Login
- Language: Kotlin
- UI: XML Layouts
- Architecture: MVVM (Model-View-ViewModel)
- Persistence: Room (Local Database)
- Dependency Injection: Dagger Hilt
- Asynchronous Programming: Kotlin Coroutines & Flows
- Maps: Google Maps SDK
To run the samples, you will need:
- To sign up with Google Maps Platform
- A Google Maps Platform project with the Maps SDK for Android enabled
- An API key associated with the project above ... follow the API key instructions if you're new to the process
- See each sample for pre-requisites.
- All require up-to-date versions of the Android build tools and the Android support repository.
- Tapping on the map adds a marker at the tapped location.
- Markers are persisted locally using Room and are:
- Retained across tab switches.
- Preserved after closing and reopening the app.
- Displays a list of all markers added via the Map screen.
- Each list item includes a Delete button:
- Removes the marker from both the map and the database.
- Focused on evaluating UI/UX design.
- No authentication logic — purely UI/UX based.
- Room Database is used to store marker data.
- Markers are represented by an entity and accessed through a DAO.
- Data flow is managed using Kotlin Flow, ensuring reactive updates.
- State is preserved across tab switches using ViewModels scoped to activity.
- Navigation does not reload screens.
- Marker data is retained even after app restarts due to Room persistence.
- Clone the repository.
- Open in Android Studio.
- Add your Google Maps API key to
local.properties
or directly in theAndroidManifest.xml
. - Build and run on an emulator or real device.
- Functional completeness.
- Smooth user experience and UI responsiveness.
- Code quality, architecture adherence (MVVM), and separation of concerns.
- Efficient use of Kotlin, Coroutines, and Flows.
- Clean implementation of dependency injection using Dagger Hilt.
This project is intended for demonstration and evaluation purposes. Ensure all functionality works as expected and follows best practices in modern Android development.