Screen_recording_20241104_033756.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 │───────┐ │
│ │ UI Components│ │ │ │ │
│ └─────────────────┘ └──────────────┘ │ │
│ │ │
└────────────────────────────────────────────────│────────────────┘
│
│
│
┌────────────────────────────────────────────────│────────────────┐
│ Domain Layer │ │
│ ┌──────────────────┐ ┌───────────────┐ ┌▼─────────────┐ │
│ │ Domain model │ │ Repositories │ │ UseCase │ │
│ │ │◄───│ (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