Skip to content

AdilBolatkhanov/UnsplashProject

Repository files navigation

UnsplashProject

An app that allows to view, search, download high-quality photos using Unsplash API

Separation of concerns, high level of abstraction and the dependency rule, which in our case means that layers only know about what's directly underneath them:

  • Presentation layer knows about use cases (domain layer).
  • Domain layer knows about repository (data layer) but not the Presentation layer.
  • Data layer doesn't know about domain or presentation layers.

This allows for easier testing and maintenance and recommended for bigger projects (alongside modularization).

Tech Stack

  • Architecture: MVVM, Clean Architecture
  • Kotlin Coroutines for managing background threads with simplified code and reducing needs for callbacks
  • Koin as dependency injection
  • Paging Library helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.
  • Network: Retrofit in order to simplify requesting data from REST API
  • A presentation layer that contains a fragment (View) and a ViewModel per screen (or feature).
  • A data layer with a repository and two data sources (local using Room and remote using Retrofit)
  • LiveData - Build data objects that notify views when the underlying database changes.
  • Room - Access your app's SQLite database with in-app objects and compile-time checks.
  • ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.

Screenshots

Releases

No releases published

Packages

No packages published

Languages