/RickAndMorty

An Android Application that displays all Rick & Morty Characters and their details

Primary LanguageKotlin

Android OS Languages-Kotlin

RickAndMorty

This an Android Application that displays all Rick & Morty Characters and their details.

Approach

Architecture

This app has a MultiModule, MVVM architecture in place to allow the App to Scale, improve Quality and Robustness and Allow the App to Scale. This also makes the App to Scale

This App uses Clean Architecture to ensure:
  • Separation of concern
  • Drive UI from Data Model
  • Make functionality easily changeable or droppable
  • Make Code easier to read
  • Make use of good practices and Jetpack libraries(Architecture components)

Layers

Domain Layer

  • Sits between the UI and Data layer
  • Used in this project to encapsulate business logic
  • Enables use-cases to be reused in multiple view model
  • Defines the repository interface that drives the main functionality

Data Layer*

  • Contains the implementation of business logic(Repository Implementation)
  • Gets data from the remote data source
  • Cache's remote data to Local Room Database

Presentation/UI layer

  • This layer is the layer that displays data to the user screen
  • Contains view models that are lifecycle friendly and takes code away from our Activity/UI components
  • Defines our architecture which is MVVM (Model View View-Model)
  • Contains our states that handle logic like loading

Libraries used

  • Retrofit - Android Network Client, Used to consume API from RickAndMorty API
  • AirBnB Epoxy - Epoxy is an Android library for building complex screens in a RecyclerView. Models are automatically generated from custom views or databinding layouts via annotation processing. These models are then used in an EpoxyController to declare what items to show in the RecyclerView.
  • Coroutines - Used to execute code asynchronously
  • Material Design + XML - Used to write the UI of the App
  • Material Design - Give the App a theme and generally improve UI of the App
  • Coil Image - Image Loading library
  • Lifecycle library - Majorly to define the ViewModels of the app
  • Navigation - To navigate to different screens of the App

Screenshots

.