Imagine
Imagine copied to clipboard
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)
Imagine App
An simple image gallery app utilizing Unsplash API.
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 on your Android phone and enjoy the Demo App :)
Built With 🛠
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
-
Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - 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
- Hilt - Easier way to incorporate Dagger DI into Android apps. This is in the main branch.
- Dagger2 - Standard library to incorporate Dagger dependency injection into an Android application. This is in a separate dagger branch.
- Retrofit - A type-safe HTTP client for Android and Java.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Gradle Kotlin DSL - For writing Gradle build scripts using Kotlin.
- MockK - For Mocking and Unit Testing
👨 Developed By
Wajahat Karim