MVVM Clean Architecture Communication between layers UI calls method from ViewModel / Presenter. ViewModel executes Use case. Use case combines data from Wunder Repositories. Each Repository returns data from a Data Source (Remote). Information flows back to the UI where we display the Data Scenario Fetch Car list from Fetch Car List and display them on Map with Marker Pin. Display User’s current location. When user clicks on Marker, it’ll prompt for Car detail from Fetch Car Detail and let user to book with Quick Rental . Improvements Create base components to share common code for common use case. Make it modular for more feature sets Tech Stack Architecture Components ViewModel LiveData Data Binding Navigation Third Party Play Services RxAndroid Hilt Retrofit OkHttp Glide