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)

Lists

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)


Built with ❤︎ by
Wajahat Karim and

contributors









## 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/)