An open API service indexing awesome lists of open source software.

https://github.com/anitaa1990/github-trending-repos

An Android App that lists the most trending repositories from Github.
https://github.com/anitaa1990/github-trending-repos

android android-app android-application android-studio dagger2-android dagger2-mvvm databinding java8 kotlin-android mvvm-architecture offline-first repository-pattern rxjava2-dagger2-retrofit2

Last synced: 13 days ago
JSON representation

An Android App that lists the most trending repositories from Github.

Awesome Lists containing this project

README

        

# Github Trending Repositories in Android

An Android App that lists the most trending repositories in Android from Github.

#### App Features
* Users can view the most trending repositories in Android from Github.
* Users can filter based on language.
* Users can share repositories they like.

#### App Architecture
Based on mvvm architecture and repository pattern.



#### The app includes the following main components:

* A local database that servers as a single source of truth for data presented to the user.
* A web api service.
* A repository that works with the database and the api service, providing a unified data interface.
* A ViewModel that provides data specific for the UI.
* The UI, which shows a visual representation of the data in the ViewModel.
* Unit Test cases for API service, Database, Repository and ViewModel.

#### App Packages
* data - contains
* api - contains the api classes to make api calls to FreshlyPressed server, using Retrofit.
* db - contains the db classes to cache network data.
* repository - contains the repository classes, responsible for triggering api requests and saving the response in the database.
* di - contains dependency injection classes, using Dagger2.
* ui - contains classes needed to display Activity.
* util - contains classes needed for activity redirection, ui/ux animations.

#### App Specs
* Minimum SDK 16
* [Java8](https://java.com/en/download/faq/java8.xml) (in [master](https://github.com/anitaa1990/Github-Trending-Repos/tree/master) branch) & [Kotlin](https://kotlinlang.org/) (in [kotlin_support](https://github.com/anitaa1990/Github-Trending-Repos/tree/kotlin_support) branch)
* MVVM Architecture
* Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, ConstraintLayout)
* [RxJava2](https://github.com/ReactiveX/RxJava) for implementing Observable pattern.
* [Dagger 2](https://google.github.io/dagger/) for dependency injection.
* [Retrofit 2](https://square.github.io/retrofit/) for API integration.
* [Gson](https://github.com/google/gson) for serialisation.
* [Okhhtp3](https://github.com/square/okhttp) for implementing interceptor, logging and mocking web server.
* [Mockito](https://site.mockito.org/) for implementing unit test cases
* [Picasso](http://square.github.io/picasso/) for image loading.