A modern Pokédex app for Android built with the latest technologies recommended by Google. This project showcases a clean, scalable architecture and a fluid user interface using Jetpack Compose.
Important
A similar project is also available in Flutter (Dart)!
👉 Pokedex_Flutter 👈
- Modern UI: Built entirely with Jetpack Compose for a declarative and intuitive UI.
- Dynamic Theming: Extracts prominent colors from Pokémon images using the Palette API to create dynamic and immersive detail screens.
- Seamless Transitions: Implements the new Shared Element Transition for smooth navigation between the list and detail views.
- Offline Support: Caches Pokémon data using Room Database, allowing the app to work offline.
- Efficient Networking: Fetches data from the PokéAPI using Retrofit.
- Optimized Performance: Leverages Coroutines for asynchronous operations, KSP for faster annotation processing, and R8 for code shrinking.
- Scalable Architecture: Follows the MVVM pattern with a repository, ensuring a clean separation of concerns and maintainable code.
- Navigation: Leverages Navigation 3 and its Type Safety features for robust, compile-time checked, and error-free navigation.
This project is built with Kotlin and utilizes a variety of modern Android libraries and tools:
- UI: Jetpack Compose, Coil ( Image Loading), Palette API
- Architecture: MVVM, UI State Management
- Asynchronicity: Kotlin Coroutines, Kotlin KTX
- Navigation: Navigation Compose 3, Navigation Type Safety, Shared Element Transition
- Data: Retrofit ( Networking), Room (Database)
- Dependency Injection: Hilt
- Build & Optimization: KSP, R8
- Custom Components: PercentageWithAnimation for displaying Pokémon stats built by @NicosNicolaou16.
The project follows Clean Architecture principles combined with MVVM (Model-View-ViewModel) and Unidirectional Data Flow (UDF). This ensures a clean separation of concerns, making the codebase scalable, maintainable, and testable.
├── data/
│ ├── di/ # Hilt Modules
│ ├── network/ # Retrofit DTOs and API Service
│ ├── room_database/ # Room Entities and DAOs
│ ├── repository_impl/ # Repository Implementations
│ └── mappers/ # Data transformation logic
├── domain/
│ └── repositories/ # Repository Interfaces
├── presentation/
│ ├── navigation/ # Navigation 3 setup and Navigator
│ ├── pokemon_list/ # List feature (Screen, ViewModel, State)
│ └── pokemon_details/ # Detail feature (Screen, ViewModel, State)
├── ui/
│ └── theme/ # Compose Theme (Color, Type, etc.)
└── utils/ # Extension functions and generic classes
- Target SDK: 36
- Minimum SDK: 29
- Kotlin Version: 2.3.21
- Gradle Version: 9.2.1
- Primary API: PokéAPI (pokeapi.co)
- Image Sprites: PokeAPI/sprites on GitHub
- Shared Element Transitions:
- Type-Safe Navigation:
- UI/UX Design Inspiration:
- Dribbble - Pokedex App by Alexandr (Note: Used as inspiration, not a direct copy)
- App Icon:
- Derived from Fandom Ideas Wiki
If you enjoy this project, please give it a star! Check out all the stargazers here: Stargazers on GitHub
This project is actively maintained. Feedback, bug reports, and feature requests are welcome! Please feel free to open an issue or submit a pull request.






