[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7199":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},7199,"Pokedex","skydoves\u002FPokedex","skydoves","🗡️ Pokedex demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.","",null,"Kotlin",8330,1108,186,17,0,3,15,1,40.13,"Apache License 2.0",false,"main",[25,26,27,28,29,30,31,32,33,34,7],"android","coroutines","hilt","jetpack-android","kotlin","motion","mvvm","mvvm-architecture","pokedex","pokemon","2026-06-12 02:01:36","\u003Ch1 align=\"center\">Pokedex\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fandroid-arsenal.com\u002Fapi?level=21\">\u003Cimg alt=\"API\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-21%2B-brightgreen.svg?style=flat\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fskydoves\u002FPokedex\u002Factions\">\u003Cimg alt=\"Build Status\" src=\"https:\u002F\u002Fgithub.com\u002Fskydoves\u002FPokedex\u002Fworkflows\u002FAndroid%20CI\u002Fbadge.svg\"\u002F>\u003C\u002Fa> \u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fdevlibrary.withgoogle.com\u002Fproducts\u002Fandroid\u002Frepos\u002Fskydoves-pokedex\">\u003Cimg alt=\"Google\" src=\"https:\u002F\u002Fskydoves.github.io\u002Fbadges\u002Fgoogle-devlib.svg\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fproandroiddev.com\u002Fexploring-dagger-hilt-and-whats-main-differences-with-dagger-android-c8c54cd92f18\">\u003Cimg alt=\"Medium\" src=\"https:\u002F\u002Fskydoves.github.io\u002Fbadges\u002FStory-Medium.svg\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FRG9ATodwbT4\">\u003Cimg alt=\"Profile\" src=\"https:\u002F\u002Fskydoves.github.io\u002Fbadges\u002Fyoutube-google-developers.svg\"\u002F>\u003C\u002Fa> \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fskydoves\">\u003Cimg alt=\"Profile\" src=\"https:\u002F\u002Fskydoves.github.io\u002Fbadges\u002Fskydoves.svg\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdoveletter\">\u003Cimg alt=\"Profile\" src=\"https:\u002F\u002Fskydoves.github.io\u002Fbadges\u002Fdove-letter.svg\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">  \n🗡️ Pokedex demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.\n\u003C\u002Fp>\n\n> [!TIP]\n> If you want to see the Jetpack Compose version of Pokedex, check out the [Pokedex Compose](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fpokedex-compose) repository.\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"\u002Fpreviews\u002Fscreenshot.png\"\u002F>\n\u003C\u002Fp>\n\n## Download\nGo to the [Releases](https:\u002F\u002Fgithub.com\u002Fskydoves\u002FPokedex\u002Freleases) to download the latest APK.\n\n\u003Ca href=\"https:\u002F\u002Fwww.android.skydoves.me\u002F\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe014ce01-3461-40af-bb2a-eb44f3f55f36\" width=\"13%\" align=\"right\"\u002F>\n\u003C\u002Fa>\n\n## 📘 Manifest Android Interview\n\n[Manifest Android Interview](https:\u002F\u002Fwww.android.skydoves.me\u002F) is a comprehensive guide designed to enhance your Android development expertise through 108 interview questions with detailed answers, 162 additional practical questions, and 50+ \"Pro Tips for Mastery\" sections. The interview questions primarily focus on Android development—including the Framework, UI, Jetpack Libraries, and Business Logic—as well as Jetpack Compose, covering Fundamentals, Runtime, and UI.\n\n\u003Ca href=\"https:\u002F\u002Fkotlin-deepdive.com\u002F\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F85476c0d-d060-4d66-ad64-33678113d386\" width=\"13%\" align=\"right\"\u002F>\n\u003C\u002Fa>\n\n## 📙 Practical Kotlin Deep Dive Book\n\n[Practical Kotlin Deep Dive](https:\u002F\u002Fkotlin-deepdive.com\u002F) takes you from “how to use Kotlin” into “how Kotlin really works,” revealing the internal implementations, desmifying bytecodes and compiler behavior, and internals that shape the language. If you want to write smarter, more confident Kotlin across fundamentals, coroutines, and multiplatform, this is the book that shows you why everything is the way it is. The [Course - Practical Kotlin Deep Dive](https:\u002F\u002Fleanpub.com\u002Fc\u002Fleanpub\u002Fkotlin-deep-dive-courses), with 158 interactive assessments to test and reinforce your understanding, this course doesn't just show you why everything is the way it is; it challenges you to prove you've mastered it and earn a certificate.\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdoveletter\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F3ecd2a7b-9713-40cd-8817-fa568271cefa\" width=\"13%\" align=\"right\"\u002F>\n\u003C\u002Fa>\n\n## 🕊️ Dove Letter\n\nIf you're eager to dive deeper into Kotlin and Android, explore [Dove Letter](https:\u002F\u002Fgithub.com\u002Fdoveletter), a private subscription repository where you can learn, discuss, and share knowledge. To get more details about this unique opportunity, check out the [Learn Kotlin and Android With Dove Letter](https:\u002F\u002Fmedium.com\u002F@skydoves\u002Flearn-kotlin-and-android-with-dove-letter-26265da11903) article.\n\n\n\u003Cimg src=\"\u002Fpreviews\u002Fpreview.gif\" align=\"right\" width=\"320\"\u002F>\n\n## Tech stack & Open-source libraries\n- Minimum SDK level 21\n- [Kotlin](https:\u002F\u002Fkotlinlang.org\u002F) based, [Coroutines](https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx.coroutines) + [Flow](https:\u002F\u002Fkotlin.github.io\u002Fkotlinx.coroutines\u002Fkotlinx-coroutines-core\u002Fkotlinx.coroutines.flow\u002F) for asynchronous.\n- Jetpack\n  - Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.\n  - ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.\n  - DataBinding: Binds UI components in your layouts to data sources in your app using a declarative format rather than programmatically.\n  - Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.\n  - [Hilt](https:\u002F\u002Fdagger.dev\u002Fhilt\u002F): for dependency injection.\n- Architecture\n  - MVVM Architecture (View - DataBinding - ViewModel - Model)\n  - [Bindables](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fbindables): Android DataBinding kit for notifying data changes to UI layers.\n  - Repository Pattern\n- [Retrofit2 & OkHttp3](https:\u002F\u002Fgithub.com\u002Fsquare\u002Fretrofit): Construct the REST APIs and paging network data.\n- [Sandwich](https:\u002F\u002Fgithub.com\u002Fskydoves\u002FSandwich): Construct a lightweight and modern response interface to handle network payload for Android.\n- [Moshi](https:\u002F\u002Fgithub.com\u002Fsquare\u002Fmoshi\u002F): A modern JSON library for Kotlin and Java.\n- [WhatIf](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fwhatif): Check nullable objects and empty collections more fluently.\n- [Bundler](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fbundler): Android Intent & Bundle extensions, which insert and retrieve values elegantly.\n- [ksp](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fksp): Kotlin Symbol Processing API.\n- [Turbine](https:\u002F\u002Fgithub.com\u002Fcashapp\u002Fturbine): A small testing library for kotlinx.coroutines Flow.\n- [Material-Components](https:\u002F\u002Fgithub.com\u002Fmaterial-components\u002Fmaterial-components-android): Material design components for building ripple animation, and CardView.\n- [Glide](https:\u002F\u002Fgithub.com\u002Fbumptech\u002Fglide): Loading images from the network.\n- [TransformationLayout](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Ftransformationlayout): Implementing transformation motion animations.\n- Custom Views\n  - [Rainbow](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Frainbow): An easy way to apply gradations and tinting for Android.\n  - [AndroidRibbon](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fandroidribbon): A simple way to implement a  beautiful ribbon with the shimmering on Android.\n  - [ProgressView](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fprogressview): A polished and flexible ProgressView, fully customizable with animations.\n- [Timber](https:\u002F\u002Fgithub.com\u002FJakeWharton\u002Ftimber): A logger with a small, extensible API.\n\n## Architecture\n**Pokedex** is based on the MVVM architecture and the Repository pattern, which follows the [Google's official architecture guidance](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Farchitecture).\n\n![architecture](figure\u002Ffigure0.png)\n\nThe overall architecture of **Pokedex** is composed of two layers; the UI layer and the data layer. Each layer has dedicated components and they have each different responsibilities, as defined below:\n\n**Pokedex** was built with [Guide to app architecture](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Farchitecture), so it would be a great sample to show how the architecture works in real-world projects.\n\n### Architecture Overview\n\n![architecture](figure\u002Ffigure1.png)\n\n- Each layer follows [unidirectional event\u002Fdata flow](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Farchitecture\u002Fui-layer#udf); the UI layer emits user events to the data layer, and the data layer exposes data as a stream to other layers.\n- The data layer is designed to work independently from other layers and must be pure, which means it doesn't have any dependencies on the other layers.\n\nWith this loosely coupled architecture, you can increase the reusability of components and scalability of your app.\n\n### UI Layer\n\n![architecture](figure\u002Ffigure2.png)\n\nThe UI layer consists of UI elements to configure screens that could interact with users and [ViewModel](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Flibraries\u002Farchitecture\u002Fviewmodel) that holds app states and restores data when configuration changes.\n- UI elements observe the data flow via [DataBinding](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Flibraries\u002Fdata-binding), which is the most essential part of the MVVM architecture. \n- With [Bindables](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fbindables), which is an Android DataBinding kit for notifying data changes, you can implement two-way binding, and data observation in XML very clean.\n\n### Data Layer\n\n![architecture](figure\u002Ffigure3.png)\n\nThe data Layer consists of repositories, which include business logic, such as querying data from the local database and requesting remote data from the network. It is implemented as an offline-first source of business logic and follows the [single source of truth](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSingle_source_of_truth) principle.\u003Cbr>\n\n**Pokedex** is an offline-first app is an app that is able to perform all, or a critical subset of its core functionality without access to the internet. \nSo users don't need to be up-to-date on the network resources every time and it will decrease users' data consumption. For further information, you can check out [Build an offline-first app](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Farchitecture\u002Fdata-layer\u002Foffline-first).\n\n## Modularization\n\n![architecture](figure\u002Ffigure4.png)\n\n**Pokedex** adopted modularization strategies below:\n\n- **Reusability**: Modulizing reusable codes properly enable opportunities for code sharing and limits code accessibility in other modules at the same time.\n- **Parallel Building**: Each module can be run in parallel and it reduces the build time.\n- **Strict visibility control**: Modules restrict to expose dedicated components and access to other layers, so it prevents they're being used outside the module\n- **Decentralized focusing**: Each developer team can assign their dedicated module and they can focus on their own modules.\n\nFor more information, check out the [Guide to Android app modularization](https:\u002F\u002Fdeveloper.android.com\u002Ftopic\u002Fmodularization).\n\n## MAD Score\n![summary](https:\u002F\u002Fuser-images.githubusercontent.com\u002F24237865\u002F102366914-84f6b000-3ffc-11eb-8d49-b20694239782.png)\n![kotlin](https:\u002F\u002Fuser-images.githubusercontent.com\u002F24237865\u002F102366932-8a53fa80-3ffc-11eb-8131-fd6745a6f079.png)\n\n## Open API\n\n\u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F24237865\u002F83422649-d1b1d980-a464-11ea-8c91-a24fdf89cd6b.png\" align=\"right\" width=\"21%\"\u002F>\n\nPokedex using the [PokeAPI](https:\u002F\u002Fpokeapi.co\u002F) for constructing RESTful API.\u003Cbr>\nPokeAPI provides a RESTful API interface to highly detailed objects built from thousands of lines of data related to Pokémon.\n\n## Find this repository useful? :heart:\nSupport it by joining __[stargazers](https:\u002F\u002Fgithub.com\u002Fskydoves\u002FPokedex\u002Fstargazers)__ for this repository. :star: \u003Cbr>\nAlso, __[follow me](https:\u002F\u002Fgithub.com\u002Fskydoves)__ on GitHub for my next creations! 🤩\n\n# License\n```xml\nDesigned and developed by 2022 skydoves (Jaewoong Eum)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","Pokedex 是一个展示现代 Android 开发技术的项目，实现了宝可梦图鉴应用。该项目利用了 Hilt 进行依赖注入管理，Coroutines 和 Flow 处理异步任务，Jetpack（Room, ViewModel）组件构建数据持久化和视图模型层，并基于 MVVM 架构设计。它还采用了 Material Design 来提升用户体验。Pokedex 适用于想要学习最新 Android 开发技术和架构模式的开发者，特别是那些对 Kotlin、MVVM 架构及 Jetpack 组件感兴趣的人员。通过研究此项目，开发者可以深入了解如何在实际应用中集成这些先进技术和框架。",2,"2026-06-11 03:11:08","top_language"]