https://github.com/betullesen/country_flags_app
Country Flags App is an Android application that lets users explore countries, view their flags, and access key details like capital, region, language, and currency. The app fetches data from a remote API and stores it locally using Room Database for offline access. ππ©
https://github.com/betullesen/country_flags_app
coroutines dagger-hilt glide lifecycle livedata materialcomponents mvvm navigation retrofit2 room rxjava viewmodel
Last synced: 3 months ago
JSON representation
Country Flags App is an Android application that lets users explore countries, view their flags, and access key details like capital, region, language, and currency. The app fetches data from a remote API and stores it locally using Room Database for offline access. ππ©
- Host: GitHub
- URL: https://github.com/betullesen/country_flags_app
- Owner: betullesen
- Created: 2025-01-12T19:40:11.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-01-20T23:50:24.000Z (4 months ago)
- Last Synced: 2025-01-21T00:28:39.514Z (4 months ago)
- Topics: coroutines, dagger-hilt, glide, lifecycle, livedata, materialcomponents, mvvm, navigation, retrofit2, room, rxjava, viewmodel
- Language: Kotlin
- Homepage:
- Size: 416 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Country Flags App π
------------------
Country Flags App is an Android application that allows users to explore different countries, view their flags, and get more information about each country, including its capital, region, language, and currency. The app fetches country data from a remote **API** and stores it locally using the **Room Database** for offline access.## Technologies Used ππ§
- **Kotlin**: The primary language for Android development.
- **Jetpack Libraries**:
- **[Room](https://developer.android.com/topic/libraries/architecture/room)**: Local database for storing country data offline.
- **[LiveData](https://developer.android.com/topic/libraries/architecture/livedata)**: To observe changes in the data and update the UI accordingly.
- **[ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel)**: Manages UI-related data lifecycle-consciously, ensuring that data survives configuration changes like screen rotations.
- **[Navigation Component](https://developer.android.com/guide/navigation)**: For managing in-app navigation between fragments and simplifying the back-stack management.
- **[Fragment](https://developer.android.com/guide/fragments)**: The app is designed with **fragments** to display different UI sections. The country list and details are presented in separate fragments.
- **[ViewBinding](https://developer.android.com/topic/libraries/view-binding)**: Simplifies binding views by eliminating the need for `findViewById`. Itβs used for safely accessing UI elements.
- **[Lifecycle](https://developer.android.com/topic/libraries/architecture/lifecycle)**: Lifecycle components are used to manage the appβs lifecycle, ensuring UI updates only happen when fragments or activities are in an appropriate state (e.g., in the foreground).
- **[Retrofit2](https://square.github.io/retrofit/)**: A type-safe HTTP client for making network requests to fetch country data.
- **[Coroutines](https://developer.android.com/kotlin/coroutines)**: For asynchronous programming and background tasks.
- **[Glide](https://github.com/bumptech/glide)**: Used for loading country flag images from URLs into ImageViews.
- **[Dagger Hilt](https://developer.android.com/training/dependency-injection/hilt-android)**: For dependency injection to manage the app's dependencies.
- **[Material Components](https://material.io/develop/android/docs/getting-started)**: For consistent UI components across the app.
- **[ConstraintLayout](https://developer.android.com/reference/android/widget/ConstraintLayout)**: For flexible and responsive UI design.
- **[RxJava](https://github.com/ReactiveX/RxJava)**: For handling asynchronous operations and managing complex streams (optional for future updates).## Preview π
----------
## Screenshots πΈ
------------| **Image 1** | **Image 2** |
|-------------|-------------|
|) |) |
| **Image 3** |
|) |