Country Explorer is a modern Android application that provides detailed information about countries worldwide. It allows users to browse a list of countries, search for specific ones, and view in-depth details like flags, capitals, populations, and more.
The app is built using Modern Android Development (MAD) practices, ensuring a responsive UI, offline support, and clean code architecture.
- Country List: View all countries with their names, flags, and basic info.
- Search & Filter: Quickly find countries by name, country code (CCA2), or continent.
- Detailed View: Access comprehensive data including official names, sub-regions, area, languages, and population.
- Offline Support: Countries are cached locally using Room database, allowing you to browse even without an internet connection.
- Clean UI: Built with Jetpack Compose for a smooth and modern user experience.
- Image Loading: High-quality flag rendering using Coil.
- Language: Kotlin
- UI Framework: Jetpack Compose
- Architecture: MVVM (Model-View-ViewModel) + Clean Architecture principles.
- Dependency Injection: Hilt
- Networking: Retrofit & Gson
- Local Database: Room
- Image Loading: Coil
- Asynchronous Programming: Kotlin Coroutines & Flow
- Android Studio Ladybug or newer.
- JDK 17+.
- Android SDK 24+.
- Clone the repository:
git clone https://github.com/your-username/Country-Explorer.git
- Open the project in Android Studio.
- Sync Project with Gradle Files.
- Run the app on an emulator or physical device.
This app consumes the RestCountries API.
- Endpoint:
https://restcountries.com/v3.1/all - Fields used:
name,flags,cca2,region,subregion,capital,population,area,languages.
| Country List | Search Filter | Country Details |
|---|---|---|
![]() |
![]() |
![]() |
The project follows the MVVM pattern and is structured into layers:
data: Handles API calls (Retrofit), Local Caching (Room), and Data Mapping.domain: Contains Business Logic, Use Cases, and Repository Interfaces.presentation: UI components (Jetpack Compose) and ViewModels.


