# skydoves/pokedex

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/skydoves-pokedex).**

8,334 stars · 1,107 forks · Kotlin · Apache-2.0

## Links

- GitHub: https://github.com/skydoves/Pokedex
- awesome-repositories: https://awesome-repositories.com/repository/skydoves-pokedex.md

## Topics

`android` `coroutines` `hilt` `jetpack-android` `kotlin` `motion` `mvvm` `mvvm-architecture` `pokedex` `pokemon` `skydoves`

## Description

Pokedex is a reference implementation of an Android application that utilizes the MVVM architecture, Jetpack Compose for its declarative user interface, and Hilt for dependency injection. It serves as a sample project demonstrating a mobile application built with Android Jetpack and a Kotlin Coroutines network client to manage asynchronous data requests.

The project implements a modular codebase to optimize build performance and enforce internal boundaries. It features a local persistence layer using the Room library to cache remote data on the device and utilizes Material Motion for fluid interface animations.

The application covers a broad set of capabilities including reactive UI state management with lifecycle-aware ViewModels, asynchronous network integration via Flow, and network image rendering for dynamic visual content.

## Tags

### Software Engineering & Architecture

- [MVVM Architectures](https://awesome-repositories.com/f/software-engineering-architecture/mvvm-architectures.md) — Employs the MVVM architectural pattern to separate business logic from the declarative user interface.
- [Android Samples](https://awesome-repositories.com/f/software-engineering-architecture/clean-architecture-frameworks/android-samples.md) — Serves as a reference implementation of an Android app demonstrating clean architecture, Hilt, and Jetpack.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection.md) — Manages object lifecycles and dependencies via Hilt to facilitate testing and modularization.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Utilizes Hilt to automate the creation and delivery of class dependencies and decouple components.
- [Modular Project Structures](https://awesome-repositories.com/f/software-engineering-architecture/project-architectures/modular-project-structures.md) — Splits the project into independent modules to improve build speeds and enforce visibility boundaries. ([source](https://cdn.jsdelivr.net/gh/skydoves/pokedex@main/README.md))

### Data & Databases

- [Local Persistence Layers](https://awesome-repositories.com/f/data-databases/local-persistence-layers.md) — Uses the Room library as a local persistence layer to cache remote data for offline access.

### Mobile Development

- [Jetpack Compose UIs](https://awesome-repositories.com/f/mobile-development/jetpack-compose-uis.md) — Builds a declarative user interface using Jetpack Compose and Material Motion animations.
- [Android Application Development](https://awesome-repositories.com/f/mobile-development/android-application-development.md) — Demonstrates modern Android development practices using Jetpack libraries and MVVM architecture.
- [Multi-Module Builds](https://awesome-repositories.com/f/mobile-development/android-module-management/multi-module-builds.md) — Organizes the codebase into multiple Gradle modules to optimize build performance and enforce internal boundaries.
- [Declarative Data Bindings](https://awesome-repositories.com/f/mobile-development/declarative-data-bindings.md) — Implements a declarative user interface using Jetpack Compose to automatically synchronize UI elements with application state. ([source](https://cdn.jsdelivr.net/gh/skydoves/pokedex@main/README.md))

### Programming Languages & Runtimes

- [Asynchronous Flow Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-flow-libraries.md) — Uses Kotlin Coroutines and Flow to handle background tasks and data streams without blocking the UI.

### User Interface & Experience

- [Lifecycle-Aware State Holders](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/lifecycle-aware-state-holders.md) — Implements lifecycle-aware ViewModels to persist screen state across configuration changes such as rotations.
- [Reactive State Management](https://awesome-repositories.com/f/user-interface-experience/reactive-state-management.md) — Synchronizes UI elements with underlying data state automatically using reactive ViewModels.
- [Asynchronous Data Fetching](https://awesome-repositories.com/f/user-interface-experience/asynchronous-data-fetching.md) — Retrieves and binds remote data to UI components using Coroutines and Flow for a responsive experience.
- [Network Image Renderers](https://awesome-repositories.com/f/user-interface-experience/network-image-renderers.md) — Provides a capability to load and display remote images within the application interface. ([source](https://cdn.jsdelivr.net/gh/skydoves/pokedex@main/README.md))

### Networking & Communication

- [Coroutine-Compatible Clients](https://awesome-repositories.com/f/networking-communication/coroutine-compatible-clients.md) — Implements an asynchronous network client using Kotlin Coroutines and Flow for API requests.
- [External Data Retrievals](https://awesome-repositories.com/f/networking-communication/external-data-retrievals.md) — Implements an API integration utility to fetch detailed data objects from external web services asynchronously. ([source](https://cdn.jsdelivr.net/gh/skydoves/pokedex@main/README.md))

### Part of an Awesome List

- [Sample And Concept Apps](https://awesome-repositories.com/f/awesome-lists/more/sample-and-concept-apps.md) — Pokedex implementation using modern dependency injection and architecture.
