Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

NicosNicolaou16/Pokedex_Compose_Multi_Module

Repository files navigation

Pokedex Compose Multi-Module

A modern Pokedex app for Android built with the latest technologies recommended by Google. This project showcases a clean, scalable multi-module architecture and a fluid user interface using Jetpack Compose.

Important

A similar project is also available in Flutter (Dart)!
Pokedex_Flutter

Features

  • Modern UI: Built entirely with Jetpack Compose for a declarative and intuitive UI.
  • Dynamic Theming: Extracts prominent colors from Pokemon 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 Pokemon data using Room Database, allowing the app to work offline.
  • Efficient Networking: Fetches data from the PokeAPI 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.
  • Type-Safe Navigation: Utilizes Navigation 3 for robust, compile-time checked, and error-free navigation.

Screenshots & Demos

Tech Stack & Libraries

This project is built with Kotlin and utilizes a variety of modern Android libraries and tools:

Modules Overview

This project follows a multi-module architecture to promote separation of concerns, scalability, and improved build times.

  • :app

    • The main application module that integrates all other modules.
  • :compose_ui (Feature Module)

    • Contains all UI-related components, screens, and utilities. This module is responsible for everything the user sees and interacts with.
  • :core (Core Module)

    • Holds the business logic and data models (domain models) for the entire application, ensuring that core functionalities are decoupled from the UI and data layers.
  • :database (Core Module)

    • Manages the local database using Room, including entity definitions, DAOs, Mappers, and repository implementations for data persistence.
  • :navigation (Core Module)

    • Handles all navigation logic, defining screen destinations and ensuring a consistent and type-safe flow throughout the app.
  • :network (Core Module)

    • Responsible for all remote data operations, including API services (Retrofit), data transfer objects (DTOs), and network-related dependency injection.

How to Create an Android Library Module

To add a new library module in Android Studio, follow these steps:

  1. Go to File -> New -> New Module...
  2. Select Android Library from the list.
  3. Provide a name for your module (e.g., feature_new).
  4. Click Finish.

Versioning

  • Target SDK: 36
  • Minimum SDK: 29
  • Kotlin Version: 2.3.10
  • Gradle Version: 9.0.0

APIs & References

Data Sources

Articles & Inspiration

About

This Pokedex Pokemon app is a project that incorporates the latest Android technologies recommended by Google, such as Multi-Module Architecture and Jetpack Compose, the new standard for building UI.

Topics

Resources

Readme

License

Apache-2.0 license

Stars

Watchers

Forks

Packages

Contributors

Languages