Application Architecture

  • MVVM(Model-View-ViewModel) architecture with applying separation of concern by layers.

  • Data Layer - includes network process and local and remote data repositories.

  • Domain Layer - includes UsaCase classes and Mapper classes.

  • UI Layer - includes Views(activity, fragment), ViewModels, ViewStates.

Tech Stack

  • Retrofit - Turns your HTTP API into an interface.
  • Moshi - A converter for serialization to and from JSON.
  • Kotlin Coroutines - Used for async long-running tasks.
  • Hilt - A dependency injection library that reduces the boilerplate of doing manual dependency injection.
  • LiveData - lifecycle-aware observable.
  • DataBinding - To bind UI components in layouts to data sources.
  • Glide - Image loading framework.
  • Unit Test - written for viewModel and viewState classes.

To persist ui configuration, need to use shared preferences.