Skip to content

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

License

Notifications You must be signed in to change notification settings

prasannajeet/kotlin-mvvm-hilt-flow-app

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages