SkillAgentSearch skills...

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/Imagine

README

Imagine App

An simple image gallery app utilizing Unsplash API.

Tests codecov

<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.
<img src="https://github.com/wajahatkarim3/Imagine/blob/main/screenshots/Imagine-UnitTests.PNG" width="500px" />

📱 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

Twitter Web Medium Linkedin

Related Skills

View on GitHub
GitHub Stars359
CategoryDevelopment
Updated3d ago
Forks61

Languages

Kotlin

Security Score

100/100

Audited on Mar 26, 2026

No findings