MonsterApp is an Android application built with Kotlin for exploring Pokémon using real-time data from the PokeAPI. Save your favorite Pokémon locally with Room, visualize their details and stats, explore the map as a Trainer, and experience a modern Android architecture.
- Pokédex – Browse all Pokémon with infinite scrolling via PokeAPI
- Pokémon Details – View artwork, types, stats (HP, Attack, Defense, Sp. Atk, Sp. Def, Speed), height, weight, abilities
- Favorites – Save and manage favorite Pokémon locally using Room database (add with ♥ FAB, remove with long press)
- Trainer Map – Interactive map (OpenStreetMap via OSMDroid) showing your current location as a trainer
| Layer | Technology |
|---|---|
| Architecture | MVVM (Model-View-ViewModel) |
| Networking | Retrofit 2 + Moshi (JSON parsing) |
| Local Storage | Room Database |
| Navigation | Android Navigation Component (with Safe Args) |
| Image Loading | Coil |
| Async | Kotlin Coroutines + LiveData |
| Maps | OSMDroid (OpenStreetMap — no API key required) |
| UI | Material Design 3, ViewBinding |
app/src/main/java/com/example/monsterapp/
├── data/
│ ├── api/ # Retrofit service & NetworkModule
│ ├── db/ # Room database, DAO, entities
│ ├── model/ # API response models (Moshi)
│ └── repository/ # PokemonRepository (single source of truth)
├── ui/
│ ├── list/ # Pokédex list (Fragment + ViewModel + Adapter)
│ ├── detail/ # Pokémon detail (Fragment + ViewModel)
│ ├── favorites/ # Favorites (Fragment + ViewModel + Adapter)
│ └── map/ # Trainer map (Fragment)
├── MainActivity.kt # Bottom Navigation + NavController
└── MonsterApplication.kt
- Clone the repository
- Open in Android Studio (Hedgehog or newer)
- Sync Gradle and run on a device/emulator with Android 7.0+ (API 24+)
No API keys required — PokeAPI is free and OSMDroid uses OpenStreetMap tiles.
| Pokédex | Details | Favorites | Map |
|---|---|---|---|
| Grid of Pokémon cards | Stats, types, abilities | Saved Pokémon | Trainer location |