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.
github_sample.mp4
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.