GithubHelp home page GithubHelp logo

githublistrepo's Introduction

GitHub List

Make a list of Git Hub Repository. Currently it is just working for listing JakeWharton's repository. In the future, I plan to change it.

This is an Android project using Gradle. Usually the easiest way to run it is install latest Android Studio, open this project and everything should work fine. It is not tested it other IDEs.

How it works

  1. Application starts and retrieves data from Internet.
    1. If data from Internet fails:
    2. Data from local database is displayed.
    3. A message on top of screen is shown indicating there is no data from internet
      1. If data from local database fails:
      2. it shows an error page and a button to retry.
  2. Data is displayed in screen with pagination (no matter if came from ).

Architecture

  • Using retrofit for web calls.
  • Using a variation of MVP which I consider the best for this project.
  • Realm DB
  • Internet connection is checked and maintained in the very beginning start of application. This will avoid to change from local to internet in the middle of operations.

Design

  • Using RecyclerView
  • Using CardView
  • When I think in design I think as engineer :D. The less is better. In this case, user has only one interaction to make: if data is not available, it needs to click on retry button.

TODO

  • Probably there are more corner cases I did not tested.
  • Improve tests. The ones I have right now are poor.
  • I tried to make a design so I could create some unit tests. At the end, I was able to create tests to test the functionality of Realm, so I decided to not include it.
  • For now, I just locked to not rotate the screen.
  • I did all development and tests in only one device, Samsung S5, running Android 6.0.1.

Fail:

  • Just found that google already its pagination library AFTER I do all the work! Hahahahah. Anyway, there is not much gain on using Google's code and mine are pretty simple tho.
  • I am not good in design. Anyway, I do have all the information I need. If in the future we need to add more information, it will be just a matter of UI.
  • No iconography. Used defaults. Not beautiful.

githublistrepo's People

Contributors

viniciushisao avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.