rec2.webm
This is a toy project implementing a PokeDex using Android Jetpack Compose. The app follows Clean Architecture principles with MVVM (Model-View-ViewModel) pattern.
┌─────────────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ ┌─────────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Compose │◄───│ ViewModel │◄───│ UseCase │ │
│ │ UI Components│ │ │ │ │ │
│ └─────────────────┘ └──────────────┘ └────────────────┘ │
│ ▲ │
└───────────────────────────────────────────────────┼─────────────┘
│
┌───────────────────────────────────────────────────┼─────────────┐
│ Domain Layer │ │
│ ┌──────────────────┐ ┌───────────────────┐ │ │
│ │ Domain model │ │ Repositories │◄───┘ │
│ │ │ │ (Interfaces) │ │
│ └──────────────────┘ └───────────────────┘ │
│ ▲ │
└───────────────────────────────────┼─────────────────────────────┘
│
┌───────────────────────────────────┼─────────────────────────────┐
│ Data Layer │
│ ┌──────────────────┐ ┌───────────────────┐ │
│ │ Remote Data │ │ Repositories │ │
│ │ Source (API) │───►│ (Implementations)│ │
│ └──────────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Jetpack Compose: Modern Android UI toolkit
- Kotlin: Programming language
- Coroutines: For asynchronous programming
- Flow: For reactive programming
- Hilt: Dependency injection
- Retrofit: HTTP client for API calls
- Gson: JSON parsing
- Coil: Image loading library
- Android Architecture Components: ViewModel
The project is divided into three main layers:
- Presentation Layer: Contains UI components (Composables) and ViewModels.
- Domain Layer: Contains business logic, use cases, and repository interfaces.
- Data Layer: Implements the repository interfaces and manages data sources.
- Display a list of Pokémon
- Show detailed information about each Pokémon
- Filter Pokémon list
- Fancy animations
- Clone the repository
- Open the project in Android Studio
- Build and run the app on an emulator or physical device