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)
Install / Use
/learn @wajahatkarim3/ImagineREADME
Imagine App
An simple image gallery app utilizing Unsplash API.
<div align="center"> <sub>Built with ❤︎ by <a href="https://twitter.com/WajahatKarim">Wajahat Karim</a> and <a href="https://github.com/wajahatkarim3/Imagine/graphs/contributors"> contributors </a> </div> <br/> <div align="center"> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/PopularPhotosDay.png" width="230px" /> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/PhotoDetailsDay.png" width="230px" /> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/SearchResultsDay.png" width="230px" /><br> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/PopularPhotosNight.png" width="230px" /> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/PhotoDetailsNight.png" width="230px" /> <img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/SearchResultsNight.png" width="230px" /> </div> <br/>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
<a href="https://twitter.com/WajahatKarim" target="_blank"> <img src="https://avatars1.githubusercontent.com/u/8867121?s=460&v=4" width="70" align="left"> </a>Wajahat Karim
Related Skills
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.4kCommit, push, and open a PR
