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.
- Host: GitHub
- URL: https://github.com/anitaa1990/github-trending-repos
- Owner: anitaa1990
- Created: 2019-01-15T07:13:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-30T09:21:58.000Z (3 months ago)
- Last Synced: 2025-04-09T08:12:44.392Z (13 days ago)
- Topics: android, android-app, android-application, android-studio, dagger2-android, dagger2-mvvm, databinding, java8, kotlin-android, mvvm-architecture, offline-first, repository-pattern, rxjava2-dagger2-retrofit2
- Language: Kotlin
- Homepage:
- Size: 5.45 MB
- Stars: 62
- Watchers: 4
- Forks: 25
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
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.