I have used MVVM and Clean archtecture approach.
-
Architecture Components (ViewModel, ViewBinding)
-
Retrofit for networking
-
Coroutines for async programming
-
Hilt for dependency injection
I have divided project into several modules
-
App module - This module is responsible for almost nothing and is actually doing nothing except managing dependency injection and including other modules
-
Domain modules - Those modules are about providing data.
-
Feature module - Those modules represent the features of app. I can say each screen. Feature module is responsible for creating its dependencies through DI Module
-
Utils module - Those modules provides some tools for easy writing the code
-
Car-api - *Those modules provides networking tools for making a request and creating mapper for easy parsing the data. *