Beautifully designed Pokémon Database app for Android based on PokéAPI and powered by Kotlin.

Overview

PokéFacts

PokéFacts is an open-source Pokémon Database app for Android based on PokéAPI and powered by Kotlin. The app allows users to view Pokémons, search them and add them to their favorites list.

Architecture

  • This app follows Clean Architecture Principles paired with MVVM architecture.
  • The project is divided into three modules app, data and domain.
  • The app module contains all the mobile-app specific code including views, viewmodels, activities and adapters.
  • The data module contains all the code that handles data. This includes handling the Retrofit calls and reading/writing to RoomDB.
  • The domain module contains the basic blueprint and business logic of the application. It is a Java/Kotlin Library with no Android-specific code and holds the Model(Data Classes), Interfaces and Use Cases.
  • Read more about Clean Architecture at https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

API Used

  • PokéAPI is used for retreiving Pokémon information.
  • The pokemon endpoint is used for retreiving details of a single Pokémon.
  • The limit endpoint is used for getting a list of all Pokémon names (to support search functionality).
  • Read more about PokéAPI at https://pokeapi.co/

Libraries Used

  • Retrofit - Used to handle API calls to PokéAPI.
  • Koin - Used for Dependancy Injection.
  • Room - Used to store favorite Pokémons in a Room Database for offline viewing.
  • Facebook Shimmer - Used for loading animations throughout the app.
  • Android Palette - Used to create a Color Palette based on the Pokémon's color for Pokémon based theming.
  • Glide - Used to load Pokémon images into ImageViews and handle image-caching.

Screens

Home Fragment

  • It shows all the Pokémons in a paginated manner.
  • Pokémons are loaded in batches of 20 when the user reaches the end of the list.
  • Shimmer animation is displayed when Pokémons are being loaded.
  • It allows the user to view Pokémons of all types or alternatively filter them based on the Pokémon's type.
  • During type-filtering of Pokémons, a combination of upto 2 types is supported.

Info Fragment

  • It shows the details of the selected Pokémon inlcuding it's description, basic information and stats.
  • The background color of this fragment is adaptable based on the color of the selected Pokémon.

Search Fragment

  • It allows the user to search through all the Pokémons to find a particular Pokémon using it's name.
  • The user can add the searched Pokémons to their favorites list as the favorite button is avilable on each card.

Favorites Fragement

  • It shows all the Pokémons that the user has added to their favorites list in the past.
  • Favorite Pokémons are saved in a Room Database and can be viewed even without an internet connection.
  • A Pokémon can be added to the user's Favorites list by clicking the Add to Favorite button on a Pokémon's card in the Home Fragment, Search Fragment or the Info Fragment.
  • A Pokémon can be removed from the user's Favorites list by unchecking the Add to Favorite button on a Pokémon's card in the Home Fragment, Search Fragment, Info Fragment or even the Favorite Fragment itself.

You might also like...
MyAndroidTools, but powered by Sui
MyAndroidTools, but powered by Sui

MyAndroidTools 便捷地管理您的 Android 设备 简介 与另一款 MyAndroidTools 一样,本应用使你能够便捷地管理 Android 设备中的应用和组件。但与之不同的是,本应用通过 Sui 来调用高权限 API,所以不会在使用过程中频繁弹出 root 授权的 Toast

KaMP Kit by Touchlab is a collection of code and tools designed to get your mobile team started quickly with Kotlin Multiplatform.
KaMP Kit by Touchlab is a collection of code and tools designed to get your mobile team started quickly with Kotlin Multiplatform.

KaMP Kit Welcome to the KaMP Kit! About Goal The goal of the KaMP Kit is to facilitate your evaluation of Kotlin Multiplatform (aka KMP). It is a coll

NewsAppKt is an Android app designed for searching news using TheGuardianOpenPlatform public web service.
NewsAppKt is an Android app designed for searching news using TheGuardianOpenPlatform public web service.

NewsAppKt is an updated version of NewsApp. It is written entirely in Kotlin and uses MVVM with Clean Architecture practices. The UI implementation uses Jetpack Compose.

AndroRAT is a tool designed to give the control of the android system remotely and retrieve informations from it.
AndroRAT is a tool designed to give the control of the android system remotely and retrieve informations from it.

AndroRAT is a tool designed to give the control of the android system remotely and retrieve informations from it. Androrat is a client/server application developed in Java Android for the client side and the Server is in Python.

RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.
RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

A high-performance fork of Paper/Airplane designed for large servers.

Pufferfish A highly optimized Paper/Airplane fork designed for large servers requiring both maximum performance, stability, and "enterprise" features.

Minecraft Server Software specially designed for Thicc SMP. Here on GitHub without the private patches, just a normal hybrid JettPack-Pufferfish-Empirecraft fork

AlynaaMC A private, custom server software for Thicc SMP and a fork of Pufferfish. Here on GitHub with patches from JettPack, Airplane and Pufferfish

Elixir is a library designed to make minecraft login easier.

Elixir Elixir is a library designed to make minecraft login easier. Usage We have a maven repo for this project. repositories { maven { url = "htt

WolfxPaper - A Paper fork designed for Wolfx Survial, may useful for some Semi-Vanilla Server

WolfxPaper A Paper fork designed for Wolfx Survial, may useful for some "Semi-Va

Owner
Arjun Mehta
Tech enthusiast experienced in C, C++, Java, Kotlin, Dart, Swift, SwiftUI, XML, SQL, Assembly, VHDL, MATLAB. Passionate about developing mobile applications.
Arjun Mehta
This repository contains the source code for the PokeApi Android app.

PokeApi App This repository contains the source code for the PokeApi Android app.

Nilton Huamaní Carlos 0 Nov 4, 2021
Free and Open Source monster taming video game. Inspired by traditional RPGs like Pokémon, Final Fantasy and Golden Sun.

Welcome Help Wanted: I cannot finish this on my own. If you are willing to help, let me know. GuardianMonsters is a Free and Open Source monster tamin

Georg Eckert 2 Oct 17, 2022
Minimum-mvvm-room-database - MVVM With Simple Room Database

Minimum MVVM Koin (Kotlin Dependency Injection) Coroutines View Model Lifecycle

Faisal Amir 7 Oct 9, 2022
MangaKu App Powered by Kotlin Multiplatform Mobile, Jetpack Compose, and SwiftUI

MangaKu ?? Introduction MangaKu App Powered by Kotlin Multiplatform Mobile, Jetpack Compose, and SwiftUI Module core: data and domain layer iosApp: io

Uwais Alqadri 132 Jan 8, 2023
A discord bot made in Kotlin powered by JDA and Realms.

A discord bot made in Kotlin powered by JDA and Realms.

null 1 Jun 30, 2022
Type-safe time calculations in Kotlin, powered by generics.

Time This library is made for you if you have ever written something like this: val duration = 10 * 1000 to represent a duration of 10 seconds(in mill

Kizito Nwose 958 Dec 10, 2022
:blowfish: An Android & JVM key-value storage powered by Protobuf and Coroutines

PufferDB PufferDB is a ⚡ key-value storage powered by Protocol Buffers (aka Protobuf) and Coroutines. The purpose of this library is to provide an eff

Adriel Café 94 Dec 7, 2022
A highly customizable calendar library for Android, powered by RecyclerView.

CalendarView A highly customizable calendar library for Android, powered by RecyclerView. With this library, your calendar will look however you want

Kizito Nwose 3.4k Jan 3, 2023
A libre smart powered comic book reader for Android.

Seeneva A libre smart powered comic book reader for Android. Translation: Русский • • Features • Speech balloons zooming • OCR and TTS • Performance •

Seeneva comic book reader 130 Jan 7, 2023
On-device wake word detection powered by deep learning.

Porcupine Made in Vancouver, Canada by Picovoice Porcupine is a highly-accurate and lightweight wake word engine. It enables building always-listening

Picovoice 2.8k Dec 30, 2022