Github Repo Search Android App

Modular android app for searching trending Github repositories and the details of each repository.

Design

In terms of design has been followed recommendations android material design comprehensive guide for visual, motion, and interaction design across platforms and devices. Granting the project in this way a great user experience (UX) and user interface (UI). For more info about UX best practices visit link.

dark theme has been implemented support for improving visibility with low vision and those who are sensitive to bright light

Mode Repo list Repo detail
Light
Dark

Architecture

The architecture of the application is based, apply and strictly complies with each of the following 5 points:

Modules

Modules are collection of source files and build settings that allow you to divide a project into discrete units of functionality. In this case apart from dividing by functionality/responsibility, existing the following dependence between them:

  • :app depends on :core and indirectly depends on :feature by dynamic-features.
  • :feature modules depends on :commons, :core and :app.

Tech-stack

This project takes advantage of many popular libraries, plugins and tools of the Android ecosystem. Most of the libraries are in the stable version, unless there is a good reason to use non-stable dependency.

This project takes advantage of many popular libraries, plugins and tools of the Android ecosystem. Most of the libraries are in the stable version, unless there is a good reason to use non-stable dependency. Also, this project supports Android API 23+.

Dependencies

  • Jetpack:
    • Android KTX – provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
    • AndroidX – major improvement to the original Android Support Library, which is no longer maintained.
    • Data Binding – allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
    • Lifecycle – perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
    • LiveData – lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
    • Navigation – helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
    • Paging – helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.
    • ViewModel – designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
  • Coroutines – managing background threads with simplified code and reducing needs for callbacks.
  • Dagger2 – dependency injector for replacement all FactoryFactory classes.
  • Retrofit – type-safe HTTP client.
  • Coil – image loading library for Android backed by Kotlin Coroutines.
  • Moshi – makes it easy to parse JSON into Kotlin objects.
  • Timber – a logger with a small, extensible API which provides utility on top of Android’s normal Log class.
  • and more…

Mad Scorecard

Notes

When the project is compiled, you can see 2 occured warnings. You can find the reasons for these warnings caused by libraries in the references below:

GitHub

View Github