GitHubApp

Android application for GitHub user search and view user details

Architecture

image

UI observing the live data for the main list as received from the ViewModel-> Repo-> PagingSource-> RemoteDataSource

Components used

Programming language – Kotlin

Design – Android Model View View Model design pattern used

Coroutines – Is light wight threads for asynchronous programming

Flow – Handle the stream of data asynchronously that executes sequentially.

Android Architecture Components – Collection of libraries that help you design robust, testable, and maintainable apps.

LiveData – Data objects that notify views when the underlying data changes.

ViewModel – Stores UI-related data that isn’t destroyed on UI changes.

ViewBinding – Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.

Dependency Injection – Hilt-android Hilt provides a standard way to incorporate Dagger dependency injection into an Android application.

Network – Retrofit, OkHttp library used

Moshi – Java serialization/deserialization library to convert Java Objects into JSON and back

Coil – Image loading and caching library for Android

Paging – Paging 3 library helps us to load and display pages of data from a larger dataset from local storage or over network

Material Design – Material is a design UI elements

Network change listener for observing mobile network changes

Testing – Espresso, Mockito, Hilt testing

UI Design

Search user (Enter user name in search bar and click search icon) then Github User list is fetched from remote source and displayed as shown below.

image

On click of any item in the list, then user will be navigated to Details screen.

image

In case of network unavailabilty Error message is displayed.

image

GitHub

View Github