Aplikasi Android sederhana untuk menampilkan daftar Pokémon menggunakan API publik dari PokeAPI. Aplikasi ini dibuat menggunakan Jetpack Compose, Clean Architecture, serta memanfaatkan beberapa library modern Android seperti Hilt, Retrofit, Coroutine, dan Room Database.
Project ini dibuat sebagai bagian dari technical assessment Mobile Developer.
Screen_recording_20260311_140344.mp4
- Autentikasi Lokal
- Halaman Login dan Register
- Data user disimpan menggunakan Room Database
- Validasi login menggunakan email dan password
- Home Screen
- Menampilkan daftar 10 Pokémon
- Mendukung pagination ketika scroll ke bawah
- List hanya menampilkan nama Pokémon
- Search Pokémon
- Tombol Search di AppBar
- User dapat mencari Pokémon berdasarkan nama
- Hasil pencarian langsung membuka Detail Screen
- Detail Pokémon
Menampilkan informasi sederhana:
- Nama Pokémon
- Daftar Abilities
- Profile Screen Menampilkan data user yang sedang login:
- Nama
- Logout
User dapat logout dari aplikasi melalui:
- Tombol logout di Home Screen
- Kotlin
- Jetpack Compose
- MVVM Architecture
- Hilt Dependency Injection
- Retrofit
- Kotlin Coroutines & Flow
- Room Database
- Navigation Compose
- Material 3
Project ini menggunakan pendekatan Clean Architecture sederhana dengan struktur:
app/
├── src/
│ ├── androidTest/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ ├── zulhija_nanda/
│ │ │ ├── product/
│ │ │ ├── pokedata/
│ │ │ ├── data/
│ │ │ │ ├── local/
│ │ │ │ │ ├── dao/
│ │ │ │ │ │ ├── PokemonDao.kt
│ │ │ │ │ │ └── UserDao.kt
│ │ │ │ │ ├── AppDatabase.kt
│ │ │ │ │ ├── PokemonEntity.kt
│ │ │ │ │ └── UserEntity.kt
│ │ │ │ ├── remote/
│ │ │ │ │ ├── PokemonDetailResponse.kt
│ │ │ │ │ └── PokemonListResponse.kt
│ │ │ │ ├── repository/
│ │ │ │ ├── PokemonRepository.kt
│ │ │ │ └── UserRepository.kt
│ │ │ ├── di/
│ │ │ │ ├── DatabaseModule.kt
│ │ │ │ ├── NetworkModule.kt
│ │ │ │ └── RepositoryModule.kt
│ │ │ ├── network/
│ │ │ │ └── ApiService.kt
│ │ │ ├── ui/
│ │ │ │ ├── components/
│ │ │ │ │ ├── BottomTab.kt
│ │ │ │ │ └── SearchPokemonDialog.kt
│ │ │ │ ├── screen/
│ │ │ │ │ ├── DetailScreen.kt
│ │ │ │ │ ├── DetailViewModel.kt
│ │ │ │ │ ├── HomeScreen.kt
│ │ │ │ │ ├── HomeViewModel.kt
│ │ │ │ │ ├── LoginScreen.kt
│ │ │ │ │ ├── LoginViewModel.kt
│ │ │ │ │ ├── MainScreen.kt
│ │ │ │ │ ├── ProfileScreen.kt
│ │ │ │ │ ├── ProfileViewModel.kt
│ │ │ │ │ ├── RegisterScreen.kt
│ │ │ │ │ ├── RegisterViewModel.kt
│ │ │ │ │ ├── SplashScreen.kt
│ │ │ │ │ └── SplashViewModel.kt
│ │ │ │ ├── theme/
│ │ │ │ ├── Color.kt
│ │ │ │ ├── Theme.kt
│ │ │ │ └── Type.kt
│ │ │ ├── utils/
│ │ │ │ └── SessionManager.kt
│ │ │ ├── AppNavigation.kt
│ │ │ ├── MainActivity.kt
│ │ │ └── MyApp.kt
│ │ └── AndroidManifest.xml
├── build.gradle.kts
└── proguard-rules.pro
Aplikasi ini menggunakan API publik dari:
Endpoint utama yang digunakan:
GET https://pokeapi.co/api/v2/pokemon
GET https://pokeapi.co/api/v2/pokemon/{name}Library
Hilt -> Dependency Injection
Retrofit -> Networking API
Room -> Local Database
Coroutines -> Asynchronous programming
Navigation Compose -> Navigasi antar screen
Material3 -> UI Design
-
Aplikasi ini tidak menampilkan gambar Pokémon sesuai dengan requirement.
-
Data user disimpan secara lokal menggunakan Room.
-
Aplikasi tetap dapat berjalan walaupun API tidak memuat gambar.