ruby app.rb
to start the server to port 3000ruby integration_tests.rb
to run tests.- I used Sinatra as it serves perfectly the purpose of this assignment: this way we can keep the application code to the minimum and avoid adding extra complexity to it.
- I decoupled code by having the
app.rb
file which only serves as the controller. It has no knowledge about GitHub and how to retrieve recipes. - Business logic is encapsulated inside the
Search
class which handles GitHub API call and returns eitherSuccess
ofFailure
.- The returned
search
object exclusively exposes data needed across the application - therefore, we avoid using raw data as returned by Github in our views. It's not needed in such a small project, but I wanted to show the approach of code decoupling/separation (in other words, avoiding using objects returned by GitHub outside of the Search class). A better solution, to be put in place in bigger projects, would be to define our Struct (ie: Dry::Struct) which encapsulates data we need across the application.
- The returned
- I created a
SearchPresenter
which is a decorator taking care of all view logic. This way, the view only defines the structure while contents are defined by the presenter. - Views are in HAML: normally I use ERB (because it is more of a standard) but for such small projects HAML helps with programming speed, therefore I used it.
- I created integration tests to make sure the pages are working. In a real life scenario, I would have written unit tests, too, but, given the time constraint, I have chosen to write ony the most essential tests (which are integration tests because they prove that the whole system works).
- No GitHub credentials are needed to list public repositories.
- TODO: the application should better handle the case of a user manipulating the URL with a wrong page number. Currently it shows an empty list but in a real life scenario it should redirect to the first or last page.
-
Notifications
You must be signed in to change notification settings - Fork 0
steookk/github_public_repos
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
Sinatra app to list GitHub public repos
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published