Skip to content

rajatbeck/GithubTrendingApp

Repository files navigation

GithubTrendingApp

This Application shows the list of trending repositories in github on daily basis.

Listing View supports both portrait as well as landsacpe orientation.Also, it consits of functionality like sort by Name or sort by stars. Additionally application fully supports offline mode. Moreover once the data is fetched it is served from the cache until it cache time expires. Pull to refresh functionality is also provided to purge the cache and fetch the latest data. Also, individual row can be expanded or collapsed on click action

     Portrait                                          Landscape                                 Sorting                              Refresh

This Application explore different Android component that can be used to create a simple single page application, Basically the app fetches data from server using Retrofit along with okhttp and saves it in Room Database and then renders the UI. App is completely based on reactive pattern courtesy Rxjava. Application code also implements designs patterns like Singleton pattern,Observer Pattern,Builder Pattern,Factory pattern,Adapter pattern.The code also supports Depedendency Injection one of the forms of inversion of control principle(IOC) with the help of Dagger2.All the views are created using Constraint layout to ensuring a flat view hierarchy.App's complete architecture is in MVVM and app also explores concept of LiveData.

Please refer to this link for more details regarding github trending API.

This project explores the following concepts in details:

  1. Kotlin
  2. Model-View-View-Model(MVVM)
  3. Rxjava2
  4. Dagger2
  5. Room
  6. Retrofit
  7. Okhttp
  8. Moshi
  9. Google material deisgn
  10. Junit5 and Mockito

  11. Future Task

    • Option to showing trending by program language
    • Option to configure list Trending period: daily, weekly, monthly
    • UI Test cases
    • Implement UniDirectional flow
    • Coroutines Support