Please ⭐️ this repo and share it with others.
The Challenge
-
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/
-
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.
-
The project must adhere to the
MVVM
design architecture and include adagger hilt
. -
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.
xrecorder-12122023-150529_xp91HId3.mp4
- 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.
- Retrofit 2 - A type-safe HTTP client for Android and Java.
- Kotlin Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.