Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wajahatkarim3/Imagine
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)
https://github.com/wajahatkarim3/Imagine
android android-architecture android-clean-architecture android-development coroutines-android coroutines-flow dagger2 dagger2-android dependency-injection flow hilt hilt-android hilt-dependency-injection kotlin kotlin-android kotlin-coroutines mvvm mvvm-android retrofit2 retrofit2-kotlin
Last synced: 3 months ago
JSON representation
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)
- Host: GitHub
- URL: https://github.com/wajahatkarim3/Imagine
- Owner: wajahatkarim3
- License: apache-2.0
- Created: 2021-01-21T15:34:31.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-23T15:02:20.000Z (almost 2 years ago)
- Last Synced: 2024-07-27T09:34:51.492Z (4 months ago)
- Topics: android, android-architecture, android-clean-architecture, android-development, coroutines-android, coroutines-flow, dagger2, dagger2-android, dependency-injection, flow, hilt, hilt-android, hilt-dependency-injection, kotlin, kotlin-android, kotlin-coroutines, mvvm, mvvm-android, retrofit2, retrofit2-kotlin
- Language: Kotlin
- Homepage:
- Size: 15.6 MB
- Stars: 360
- Watchers: 11
- Forks: 61
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - wajahatkarim3/Imagine - An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit) (Kotlin)
README
# Imagine App
An simple image gallery app utilizing Unsplash API.![Tests](https://github.com/wajahatkarim3/Imagine/workflows/Tests/badge.svg) [![codecov](https://codecov.io/gh/wajahatkarim3/Imagine/branch/main/graph/badge.svg?token=rYP14UIojU)](https://codecov.io/gh/wajahatkarim3/Imagine)
## Features
* Popular photos with pagination support
* Quickly explore top categories like Cars, Mountains, Animals, Interior etc.
* Search query with pagination support
* Comes in both light and dark mode.## Architecture
* Built with Modern Android Development practices
* Utilized Usecase, Repository pattern for data
* Includes unit tests for Use cases, Repository, ViewModels, API Service response.## 📱 Download Demo on Android
Download the [APK file from here](https://github.com/wajahatkarim3/Imagine/blob/main/Imagine-App.apk?raw=true) on your Android phone and enjoy the Demo App :)## Built With 🛠
- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.
- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - For asynchronous and more..
- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - Collection of libraries that help you design robust, testable, and maintainable apps.
- [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - Data objects that notify views when the underlying database changes.
- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed on UI changes.
- [ViewBinding](https://developer.android.com/topic/libraries/view-binding) - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
- [Dependency Injection](https://developer.android.com/training/dependency-injection)
- [Hilt](https://dagger.dev/hilt) - Easier way to incorporate Dagger DI into Android apps. **This is in the [main branch](https://github.com/wajahatkarim3/Imagine)**.
- [Dagger2](https://dagger.dev/) - Standard library to incorporate Dagger dependency injection into an Android application. **This is in a separate [dagger branch](https://github.com/wajahatkarim3/Imagine/tree/dagger-branch).**
- [Retrofit](https://square.github.io/retrofit/) - A type-safe HTTP client for Android and Java.
- [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.
- [Gradle Kotlin DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html) - For writing Gradle build scripts using Kotlin.
- [MockK](https://mockk.io) - For Mocking and Unit Testing## 👨 Developed By
**Wajahat Karim**
[![Twitter](https://img.shields.io/badge/-twitter-grey?logo=twitter)](https://twitter.com/WajahatKarim)
[![Web](https://img.shields.io/badge/-web-grey?logo=appveyor)](https://wajahatkarim.com/)
[![Medium](https://img.shields.io/badge/-medium-grey?logo=medium)](https://medium.com/@wajahatkarim3)
[![Linkedin](https://img.shields.io/badge/-linkedin-grey?logo=linkedin)](https://www.linkedin.com/in/wajahatkarim/)