A demo showcasing the industry standard approach (Jetpack compose , Multi modules , MVVM , CLEAN) for developing in android
- Jetpack compose
- Hilt
- Retrofit
- Coil
- ViewModels
- Kotlin Flows
- Jetpack Navigation for compose
- Dark/Light Mode Support
-
The new SplashScreen API wasn't integrated , as a result of which the SplashScreen is shown on cold and warm starts. If I would integrate the new SplashScreen API the SplashScreen would only appear on cold starts.
-
The RepositoryDetails screen doesn't work well in Landscape orientation.
-
There was something wrong with the android icon provided in figma , that was preventing it to be imported via Image Asset Studio, hence I used a different svg to make the icons
This application takes the approach of extreme code isolation by distributing various components of the application in modules. The following modules together make the application
The app module is mostly empty and used for the initialization of the Hilt Container. Actually , we need to have a module which has complete visibility of the system (i.e. knows about all the modules of the system)
Other than this module , no other module has complete visibility of the system rather they only work with what they require
**Visibility- ** All modules in the application
The lobby module is so named because this is the is the place where the application user arrives akin to a hotel lobby. Here he is able to interact with the hotel, in application terms he is able to interact with the application.
This module can also be thought of as "UI" module. Contains the UI of the application
**Visibility- ** Can only see the business module
Contains all the POJO kind of code that handles non-android related business logic for the application.
**Visibility- ** Can only see the repository module
Contains the repositories for various entities in the system . IRL this layer would also contain the databases
**Visibility- ** Can only see the network module
Contains retrofit. IRL would contain other network related code.
Contains all the helpers, extensions ,themes , styles , fonts , colors and other things that would be perhaps needed by the entire application.