Skip to content

Mini Pokedex is a android app that uses Pokémon API- https://pokeapi.co/ to show a list of Pokémons and their characteristics

License

Notifications You must be signed in to change notification settings

AwesomeJim/MiniPokedex

Repository files navigation

Mini Pokedex


License API
Mini Pokedex is a android app that uses Pokémon API to show a list of Pokémons and their characteristics

✨Application Features:

  • View a list of the first 100 Pokémon
  • Able to save Pokémon as favorite
  • View more info about Pokémon and its basics stats

Todo

  • Increase the test coverage
  • Add static code analysis
  • Add CI/CD
Home (Dark Theme) Home (Light Theme)
Saved Pokémon (Dark Theme) (Light Theme)
Pokémon info (Dark Theme) (Light Theme)

Tech-stack used 🛠

Tech Tools Usage/Purpose
Kotlin Language
Jetpack Compose UI creation library
Compose Navigation Navigate between Compose Screen
Compose Paging Managing multiple pages of data
Coil 🖼️ Image Loading Library
Coroutines 🧵 Asynchronous Programming
StateFlow Observable Data and state holder
Dependency injection with Hilt 💉 Dependency Injection Library
Retrofit 🌐 Used for Networking
OkHTTP 🌐 HTTP Client required by Retrofit Library for Networking
Kotlinx Serialization 🌐 Use to serialize and deserialize Kotlin objects to JSON
Kotlin Gradle ⚙️ All the gradle files are written in pure kotlin
AndroidX Android library for core functionalities
ViewModel Manage data and UI State in lifecycle-aware fashion
Room DB 💾 For local data storage

Testing

Testing Tools Usage/Purpose
Junit Unit Testing
Mockk Data Mocking
Truth Unit Testing
Turbine Flow Testing

Other Tools/Project setup

Tools Usage/Purpose
Gradle secrets plugin A Gradle plugin for providing your secrets to your Android project
Hilt(DI) Dependency Injection Library
Kotlin Symbol Processing (KSP) code generation for Room and Hilt libraries
Timber For local Logging
Lottie Compose Icon and images animations
Gradle version catalogs Gradle Dependencies management

Overall Overview

This App is based on the MVVM architecture and the Repository pattern, which follows the Google's official architecture guidance.

  • Each layer follows unidirectional event/data flow; the UI layer emits user events to the data layer, and the data layer exposes data as a stream to other layers.

Modules Architecture Overview

The project is modularized and divided into several modules: checkout Common modularization patterns

  • :app - The main Android app module for phone devices.
  • :core-data - Android library for the data layer acts as data mediator for local and remote.
  • :core-database - Android library for the local Room database layer.
  • :core-model - Android library containing global app models.
  • :core:ui - Android library with common Jetpack Compose UI widgets (Shared UI components)
  • :core-network - Android library purely for networking and serializing responses
  • :core-testing - Android library containing testing utilities.
  • :test-app - Test-only module.

ModulesArchitecture2.png


Development Setup ⚙️ and Pre-requisite 📝

The Project uses the following api :

  1. Pokémon API for pokemon data and info and Poke API sprites for images, PokeAPI provides a RESTful API interface to highly detailed objects built from thousands of lines of data related to Pokémon

⚙️ Setup Pokémon API EndPoint

in your local.properties you will need to add the urls for the two apis

#Insert at ~/local.properties

#Pokémon API
POKE_API_BASE_URL=https://pokeapi.co/api/v2/
POKE_API_ICONS_URL=https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/

This project uses the Hilt for dependency Injection. After opening this project in your Android Studio you might get some error which is due unavailability of a few classes. You need to make a project or try to build the project, this will generate all the required classes for Hilt.

Environment

  • Android Studio Hedgehog | 2023.1.1
    • Build #AI-231.9392.1.2311.11076708, built on November 9, 2023
  • JDK 17

Sample Apk

Mini Pokedex Apk


Mini Pokedex
Copyright (c) 2023 Awesome Jim (https://github.com/AwesomeJim/MiniPokedex/). 

 This App is distributed under the terms of the Apache License (Version 2.0). 
 See the [license](https://github.com/AwesomeJim/MiniPokedex/blob/main/LICENSE) for more information.

About

Mini Pokedex is a android app that uses Pokémon API- https://pokeapi.co/ to show a list of Pokémons and their characteristics

Topics

Resources

License

Stars

Watchers

Forks

Languages