Implementation of the clean architecture using:
- Jetpack compose
- Dagger Hilt for dependency injection
- Coroutine/Flow
- Unit test with junit
- Instrumentation test with Espresso
- Github Action
This module should contain only Java/Kotlin classes and doesn't have any Android framework class. It defines the business aspect of the application. With the use case it combines data from the data layer It doesn't depend on any module. It communicates with the data module through a repository interface declared on the domain layer and implemented on the data layer.
This is the platform specific layer, it contains UI coordinated by ViewModels which execute use cases. This layer depends on the Domain Layer. With the DomainModelMappers, domains models are converted to ui models.
Contains remote, stored or in-memory data sources. With the DomainModelMappers, data models like api models or database model are converted to domain models.
- UI (Composable, Fragment, Activity, ...) calls loading method from the ViewModel.
- ViewModels execute the use case.
- Use case calls the repository.
- The repository returns data from local or remote data source.
- Information flows back to the UI.
Data are provided by the awesome CoinGecko API