| What | How |
|---|---|
| 🎭 User Interface (Android) | Jetpack Compose |
| 🏗 Architecture | Clean |
| 💉 DI (Android) | Hilt |
| 🌊 Async | Coroutines + Flow |
| 🌐 Networking | Retrofit |
| 📄 Database Local | Room |
| 📄 Parsing | Moshi |
MovieAppJC follows the principles of Clean Architecture with Android Architecture Components.
UI Layer contains UI (Activities, Composables, Fragments) that are coordinated by ViewModels which execute 1 or multiple UseCases. Presentation Layer depends on Domain Layer.
Domain Layer is the most INNER part of the circle (no dependencies with other layers) and it contains Entities, Use cases & Repository Interfaces. Use cases combine data from 1 or multiple Repository Interfaces.
Data Layer contains Repository Implementations and 1 or multiple Data Sources. Repositories are responsible to coordinate data from the different Data Sources. Data Layer depends on Domain Layer.
Files are suffixed with be defined Class types.
- ViewModels are suffixed with ViewModel. Ex:
HomeViewModel - UseCases are suffixed with UseCase. Ex:
DetailMovieUseCase - Models are suffixed with Model. Ex:
MovieModel - Entities are suffixed with Entity. Ex:
MovieEntity - DataSources are suffixed with DataSource. Ex:
AppLocalDataSource,MovieLocalDataSource - Repositories are suffixed with Repository. Ex:
MovieRepository
