/kotlin-mvvm-hilt-flow-app

Kotlin first app using Clean Architecture with MVVM pattern along with Android Architecture Components such as LiveData, ViewModel, Navigation and idiomatic Kotlin using extension functions, type-aliases, Coroutines and Dependency Injection using Hilt

Primary LanguageKotlinMIT LicenseMIT

Kotlin MVVM app using clean architecture, Jetpack, Hilt, Retrofit and Coroutines Flow API

Introduction

This application is a simple implementation of the popular images feature of 500px which using the 500px API built using modern Android development strategies focusing on the following key aspects:

  • Code structuring as per clean Architecture
  • Using MVVM Pattern as per Google's recommendation
  • Android Architecture Components (LiveData, ViewModel, Navigation)
  • Kotlin features (Lambdas, Extension functions, typealias, sealed class and Coroutines)

App Overview

The app features a 2 screen navigation

  • List screen displaying popular images in a paginated fashion

    Popular Images List
  • Details screen showing the details of the image on click on the image in the list screen

    Image Details

Navigation between the screens has been done using the Jetpack Navigation library and the following is its nav graph:

Nav Graph

Libraries The App uses libraries and tools used to build Modern Android application, mainly part of Android Jetpack

Scope for Improvements

The app can be further improved with the addition of the following features

  • Dynamic image sizes using multiple ViewHolders for different image sizes instead of current GridLayoutManager implementation
  • Espresso Tests