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:
- A single-activity architecture, using the Navigation component to manage fragment operations.
- Android architecture components, part of Android Jetpack for give to project a robust design, testable and maintainable.
- Pattern Model-View-ViewModel (MVVM) facilitating a separation of development of the graphical user interface.
- S.O.L.I.D design principles intended to make software designs more understandable, flexible and maintainable.
- Modular app architecture
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:
- [Warning 1] (https://issuetracker.google.com/issues/159542337)
- [Warning 2] (https://github.com/square/moshi/issues/1463)