A Pokemon encyclopedia application developed with Kotlin, built on a multi-module structure based on Clean Architecture and applying the MVVM design pattern. PokeDex leverages Jetpack components, Room, and Flow to provide an intuitive and modularized user experience.
-
Multi-Module Based on Clean Architecture
- Structured with
app
,data
, anddomain
modules, ensuring clear separation of responsibilities while maximizing maintainability and scalability.
- Structured with
-
MVVM Design Pattern
- Decouples the View and ViewModel for better organization of UI logic and business rules.
-
Offline-First Approach
- Data persistence using Room for Pokémon details and caching.
-
Jetpack Components
- ViewModel: Manages UI-related data lifecycle-aware for efficient state management.
- Room: Provides a robust local database with type-safe queries.
- LiveData: Observes changes in UI-related data seamlessly.
- Palette: Extracts prominent colors from images for dynamic UI design.
-
Data Binding & View Binding
- Simplifies UI updates by directly binding UI components to data and reduces boilerplate code for view references.
-
Reactive Programming
- Powered by Kotlin Coroutines & Flow for handling asynchronous tasks and state management efficiently.
-
Networking
- Retrofit & OkHttp: Fast and reliable networking stack for API communication.
- Moshi: JSON parsing library integrated with Retrofit for seamless data handling.
-
Dependency Injection
- Using Hilt for scalable and testable dependency injection.
-
Image Loading
- Glide: Efficient image loading and caching library for handling Pokémon images.
-
Logging
- Timber: Lightweight and extensible logging library for debugging.
-
Comprehensive Testing
- JUnit, Kotest, MockK: For unit testing.
- Espresso: For UI testing.
- Hilt Testing: Simplified dependency injection in tests.
- Coroutine Testing: For verifying suspend functions and flows.
Designed and developed by 2024 kyungeun noh
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.