Skip to content

A simple app to fetch and search images using the Pixabay API built with MVVM Design Pattern

Notifications You must be signed in to change notification settings

Breens-Mbaka/Adanian-Labs-Android-Test

Repository files navigation

Imagely

This app consumes The Pixabay Api to fetch and display a list of images, The app uses MVVM design pattern to allow separation of the app components like fragments & activities from the data logic the reasons I leaned to this app architecture are:

  • make the data survive device configuration changes
  • allow testability(unit test) of the data layer
  • improve codebase robustability by catching all edge error cases
  • Also it's easier to maintain and scale the app over time

Minimum API level supported: 21
Build System: Gradle

Prerequisite

To run the project you should have the following tools

  • Android Studio 4.0 or above
  • Internet connection

Screenshots

Home/Details/Search Screens

Architecture

The app is build with MVVM Design Pattern to allow separation of concerns one benefit being allowing our data to not be destroyed over configuration changes

Caching Strategy

  • MVVM architecture allowed the use of the Repository Pattern to act as mediator between th remote and local cache data
  • The Local cache is where the UI reads and observes data from. And using NetworkBoundResource its possible to set conditions where data is
1.Data is saved to the local database
2.Update old data with new data from Pixabay API
3.When to make a request to the Pixabay API

pomodoro.Made.with.Clipchamp.2.mp4

Libraries

  • Navigation Components - To implement the Single Activity approach since fragments are lightweight than activities and allows easy passing of data between arguments in a type safe way
  • Retrofit - A Type-safe HTTP client for Android which simplifies consuming RESTFul APIs.
  • Gson - Converts JSON to Java/Kotlin objects.
  • OkHttp-logging-interceptor - Makes it easy to log OkHttp network responses and requests
  • Coil - Image loader library for android
  • Dagger Hilt - Used for Dependency Injection
  • Room - Persistence library making it easier to work with SQLite database
  • View Binding - Jetpack library allowing type safe binding of views
  • Livedata - Notifies Observer objects in the UI when underlying data changes.

Author Info

License

MIT

About

A simple app to fetch and search images using the Pixabay API built with MVVM Design Pattern

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages