Image_Gallery_App

Please ⭐️ this repo and share it with others.

Install

Description

The Challenge

  1. Create a project that implements an image API from here: https://github.com/toddmotto/public-apis

    a. Examples: https://github.com/Giphy/GiphyAPI, https://docs.opendota.com, or https://deckofcardsapi.com/

  2. The project must include

    a. A list of images.

    b. User can edit an image by applying filters (preset) on a picture (any random filter, e.g.: grayscale, Portrait, Yellowish, etc.).

    c. Write tests where possible.

  3. The project must adhere to the MVVM design architecture and include a dagger hilt.

  4. Bonus Points:

    d. Detail view of each item.

    e. Detail view should consist of a minimum of: an image, a title, and a description.

    f. List pagination if greater than 50 items or lazy-load.

    g. Additional view.

Screenshots

Video

xrecorder-12122023-150529_xp91HId3.mp4

Software stack

  • Kotlin
  • Android JetPack
  • View Model - The View Model class is designed to store and manage UI-related data in a lifecycle-conscious way.
  • Live Data - LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
  • [View Binding][https://developer.android.com/topic/libraries/view-binding) - View binding is a feature that makes it easier to write code that interacts with views.
  • Dependency Injection Using Hilt - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
  • Repository Pattern
  • Google gson - For parsing JSON data.
  • Pagination - The Paging Library helps you load and display small chunks of data at a time.
  • Circular Image - A fast circular ImageView perfect for profile images.
  • Navigation Component - Navigation refers to the interactions that let users navigate across, into, and back out from the different pieces of content within your app.
  • Glide - Glide is a fast and efficient open-source media management and image-loading framework for Android.
  • Sdp - An android lib that provides a new size unit - sdp (scalable dp), It can help Android developers with supporting multiple screens.
  • Ssp - An android lib that provides a new size unit - ssp (scalable sp), It can help Android developers with supporting multiple screens.

Network Calls

  • Retrofit 2 - A type-safe HTTP client for Android and Java.

Background tasks

  • Kotlin Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.

Code Architecture

http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/

API

End Points

  • curated - To get random photos.
  • search - To search by category.