A sample application that build with combine use Clean Architecture framework and Github API

The Github Example
Introduction
- This is a sample application that build with combine use Clean Architecture framework and Github API (https://developer.github.com/v4/) for request and showing the information
- This is an update from v1 sample with using Hilt and Coroutines replace for Dagger v2 and RxJava.
User interface
The UI will have three parts: User information, page information and repos information in same a list.
How to build
- Check out the project.
- Use Android Framework from 3.5.x or greater for compile and run.
Framework
This example use Clean Architecture approach for build project. (https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
Data-Flow
Work-Flow
Libraries
- Foundation – Components for core system capabilities, Kotlin extensions and support for
multidex and automated testing.
- AppCompat – Degrade gracefully on older versions of Android.
- Android KTX – Write more concise, idiomatic Kotlin code.
- Test – An Android testing framework for unit and runtime UI tests.
- Architecture – A collection of libraries that help you design robust, testable, and
maintainable apps. Start with classes for managing your UI component lifecycle and handling data
persistence.
- Data Binding – Declaratively bind observable data to UI elements.
- Lifecycles – Create a UI that automatically responds to lifecycle events.
- LiveData – Build data objects that notify views when the underlying database changes.
- Navigation – Handle everything needed for in-app navigation.
- Room – Access your app’s SQLite database with in-app objects and compile-time checks.
- ViewModel – Store UI-related data that isn’t destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.
- WorkManager – Manage your Android background jobs.
- UI – Details on why and how to use UI Components in your apps – together or separate
- Animations & Transitions – Move widgets and transition between screens.
- Fragment – A basic unit of composable UI.
- Layout – Lay out widgets using different algorithms.
- Third party
- Glide for image loading
- Coroutines A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- Hilt for dependencies injection
- Retrofit Type-safe HTTP client for Android
- EasyPermission is a wrapper library to simplify basic system permissions logic when targeting Android M or higher.
- CircleImageView a fast circular ImageView perfect for profile images.
- LeakCanary a memory leak detection library for Android.
- Shimmer an Android library that provides an easy way to add a shimmer effect to any view in your Android app.