Pokemon is a jetpack compose app built with modern android technologies, multi-module app with clean architecture, MVI, Coroutines, Flow, Retrofit, Turbine Gradle version Catalog
This app is built with modern android technologies, including:
- 100% Kotlin Based
- Jetpack compose for building user interface and app components
- Corotines and Flows for asynchronous tasks
- Retrofit & OKHttp for handling http requests
- Moshi library for parsing JSON data to Kotlin classes
- Paging3 for loading and displaying data from the api
- Hilt for dependency injection
- Turbine a small testing library for kotlinx.coroutines Flow
- MockK a mocking library for Kotlin
- Gradle version Catalog for managing dependencies
This App is built with Clean architeture, it's composed with 3 leayers: Data, Domain and Presentation, with the MVVM pattern. it's highly decoupled and each leayer is independet.
the communication between layers follows a uniderictional flow, The ui layer sends user action as intents to the viewModel, which communicates respectively with the domain layer, then the data layer. Each layer exposes data to other layer as data streams.
The app is built with multi-module structure for:
Improved Code Maintainability: Modularization organizes code into smaller, focused modules, enhancing readability, and making it easier to maintain, update, and debug.
Reusability: Modularization encourages creating reusable modules for common functionalities, reducing redundant code and accelerating development across projects.
Scalability: Breaking the app into modules enables parallel development, facilitating the addition of new features and modifications without disrupting other parts of the app.
Home Page | Details Page |
---|---|