An open API service indexing awesome lists of open source software.

https://github.com/nicosnicolaou16/pokedex_compose_multi_module

This Pokedex Pokémon 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.
https://github.com/nicosnicolaou16/pokedex_compose_multi_module

android android-application coroutines-android hilt-dependency-injection-android jetpack-compose kotlin kotlin-android ksp multi-module percentages pokedex pokemon repository-pattern retrofit2 room-database shared-element-transition ui-state view-model viewmodel

Last synced: 2 months ago
JSON representation

This Pokedex Pokémon 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.

Awesome Lists containing this project

README

        

# Pokedex Compose Multi-Module

This Pokedex Pokémon 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.
It also utilizes important technologies like Room Database, KSP, Hilt for dependency injection, the
new Shared Element Transition, and the latest Navigation with Type Safety.

# Examples






# The Project Contain the following technologies

The programming language is the [Kotlin](https://kotlinlang.org/docs/getting-started.html), it is a
modern, JVM-based programming language that is concise, safe, and interoperable with Java.

[Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) is used for asynchronous
tasks.

[Kotlin KTX](https://developer.android.com/kotlin/ktx) is a collection of Kotlin extensions that
offer more concise and expressive code for working with Android APIs and libraries.
The UI is build using [Jetpack Compose](https://developer.android.com/develop/ui/compose).

For Navigation between screens is use
the [New Navigation Type Safety](https://medium.com/androiddevelopers/navigation-compose-meet-type-safety-e081fb3cf2f8).

For Animation and Navigation from the main screen to details screen is use the
new [Shared Element Transition](https://developer.android.com/develop/ui/compose/animation/shared-elements). ([Shared Element Transition - Article](https://fvilarino.medium.com/shared-element-transitions-in-jetpack-compose-8f553078101e), [Shared Element Transition - Article](https://getstream.io/blog/shared-element-compose/))

[Retrofit](https://square.github.io/retrofit/) is responsible for making requests and retrieving
data from the remote server. ([Repository](https://github.com/square/retrofit))

[Room Database](https://developer.android.com/training/data-storage/room) is responsible for saving
the retrieved data from the remote server, querying data from the local database, and supporting
offline functionality.

[Palette](https://developer.android.com/develop/ui/views/graphics/palette-colors) is used to
retrieve the color from the image; in our case, we are using the Pokémon color to paint the linear
indicator with the same color.

[KSP](https://developer.android.com/build/migrate-to-ksp) ("Kotlin Symbol Processing") is a tool for
efficient annotation processing in Kotlin, providing faster code generation and symbol manipulation
compared to KAPT. [Repository](https://github.com/google/ksp)

[Coil](https://coil-kt.github.io/coil/compose/) for Jetpack Compose is a library that it is
responsible for loading the images
asynchronous. ([Coil Documentation](https://coil-kt.github.io/coil/), [Repository](https://github.com/coil-kt/coil))

[Hilt Dependencies Injection](https://developer.android.com/training/dependency-injection/hilt-android)
is an Android library that simplifies dependency injection by using annotations to automatically
manage and provide dependencies across components, built on top of
Dagger. ([Documentation](https://dagger.dev/hilt/))

[MVVM](https://developer.android.com/topic/architecture#recommended-app-arch) with repository is an
architecture where the Repository manages data sources (e.g., network, database), the ViewModel
processes the data for the UI, and the View displays the UI, ensuring a clear separation of
concerns.

[UI State](https://developer.android.com/topic/architecture/ui-layer/events#handle-viewmodel-events)
to initial, loading, loaded and error.

[R8](https://developer.android.com/build/shrink-code) enabled, is a code shrinker and obfuscator for
Android that optimizes and reduces the size of APKs by removing unused code and resources, while
also obfuscating the remaining code to improve security.

The percentage for showing the skills of each Pokémon is calculated using
the [PercentageWithAnimation](https://github.com/NicosNicolaou16/PercentagesWithAnimationCompose)
built by [NicosNicolaou16](https://github.com/NicosNicolaou16).

# Modules Overview

## compose_ui (Feature)

This module contains the UI components of the app, including the list of dynamic items and the
details screen. It serves as a feature module, which means additional features can be added in the
future.

- List Screen
- Details Screen
- Generic Views
- Utilities

## database (Core)

This module handles the app's database and models, managing data persistence. It is a core module
responsible for data management.

- Room Database
- Data Models
- Dependency Injection for Database

## navigation (Core)

This module manages the navigation between screens, providing routes and navigation logic. It is a
core module for routing within the app.

- Screens Routes
- Navigation Logic

## network (Core)

This module handles all network-related operations, including the network manager, API services, and
repositories. It is a core module responsible for remote data fetching and communication.

- Network Manager
- API Services
- Repositories
- Utilities
- Dependency Injection for Network

# How to Create an Android Library Module for an App in Android Studio

File -> New -> New Module -> Android Library -> Add your own Module Name -> Finish.

# Versioning

Target SDK version: 35

Minimum SDK version: 28

Kotlin version: 2.1.0

Gradle version: 8.8.0

# Feeds/Urls/End Point (parsing some data from the response)

## (Links References for Ends Points)

https://pokeapi.co/

https://github.com/PokeAPI/sprites (GitHub)