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.

UI

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

Structure

Work-Flow

Structure

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
  • 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.

GitHub

View Github