Jetpack Compose application that let you search and see details of a country
- MVI-like architecture
- Jetpack Compose (also UI tests)
- Jetpack Navigation
- Kotlin Flow
- Apollo client to communicate with the GraphQl APIs
- Koin for dipendency injection
- Mockito && Google Truth && Turbine for unit tests
The application has one activity: MainActivity
, from that activity the composition starts
The code is structured as follow:
- data containes the service layer
- di containes the koin's modules
- utils containes some helpers
- ui:
- theme containes the theme configurations
- shared containes shared composables
- screen containes all the screens
Every screen is sctructured as follow:
- <name>Screen the screen composable function
- <name>ViewModel the viewModel of the screen
- components composables used by the screen (also personalization of shared composables)
The navigation inside the app is managed in CountryInfoNavHost
, used inside MainActivity