Skip to content

An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM Kotlin Retrofit2 Hilt Coroutines Kotlin Flow mockK Espresso Junit)

License

Notifications You must be signed in to change notification settings

wajahatkarim3/Imagine

Repository files navigation

Imagine App

An simple image gallery app utilizing Unsplash API.

Tests codecov

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

Twitter Web Medium Linkedin