Skip to content

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

Notifications You must be signed in to change notification settings

anitaa1990/Github-Trending-Repos

Repository files navigation

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 (in master branch) & Kotlin (in kotlin_support branch)
  • MVVM Architecture
  • Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, ConstraintLayout)
  • RxJava2 for implementing Observable pattern.
  • Dagger 2 for dependency injection.
  • Retrofit 2 for API integration.
  • Gson for serialisation.
  • Okhhtp3 for implementing interceptor, logging and mocking web server.
  • Mockito for implementing unit test cases
  • Picasso for image loading.