The githublist app does the following
- Retrieves a list of repository data for any given Organization from Github.
- Allows the user to sort the repositories by stars, contributors, and forks.
- Ensures it does not exceed the Github API rate limit.
I would recommend using rvm as your ruby version manager. This should take care of having you install the right ruby version.
Ruby 2.5.5 is being used for this project
5.2.1
The project uses the unauthenticated version of the github API so no keys/usernames/etc required here.
There are no database tables created for this project. Doing the below will still be necessary to deploy the application to Heroku or run locally.
- Make sure you have postgres installed on the system.
- run
rake db:create
to create thegithublist_developtment
database. - run
rake db:migrate
to make sure all the tables get populated. - run
rake db:seed
to make sure all the states are populated - seed the database with the following data. You may do this via a
rails console
- make sure database is accessible via port 5432 (this is the default) when to have postgres running.
Project is hosted on heroku at https://sleepy-coast-82100.herokuapp.com/
. May take a second to load or return your api request as it is on Hobby tier.
- Enter the name
TheAlgorithms
into the input field. - Wait until repository results populate in the screen.
- Choose the various
Sort!
buttons to check if the data is being sorted as expected.
- This implementation does not support large companies with more than 59 repositories as once it hits the rate limit app will raise an exception.
- There should be an intermediary state that will store the repository data for large organizations and do the calls to contributors separately. When we hit the rate limit, we will try again in an hour automatically rather than just losing the data.
- With Point 2, we would be able to show all the information except collaborator count which at least offers partial information to the user while their contributor data is loading.
- Needs tests. Not much more to say here.
- Better display of loading, success, and error states in the front-end so user is not clicking the button multiple times.