Looking for a new show to binge watch?
Bingeable.io has a list of the top 100 TV shows, updated daily, and powered by The Movie Database API.
Click from the list to view not just complete show details, but also includes a direct link to that show's page on JustWatch.com for current available streaming options.
Don't see your favorite show in the top 100 list?
Use the "Search" feature to look up any show by name!
All of this available with no need to create a user account.
Icing on the cake: Bust your side laughing at the randomly generated banner message every time you visit the homepage :)
Built with love using Ruby on Rails; check it out here!
- Back-to-Front-end: Ruby on Rails v5.1.6, Ruby v2.4.0p0
 - Database: PostgreSQL(production), SQLite Version 3 (development)
 - API: The Movie Database API
 - Libraries: bootstrap-sass, jquery-rails
 - Dependencies: HTTParty, Figaro
 - Hosting: Heroku
 
- 
Functional requirements:
- 
Landing page must list popular tv shows
 - 
Search bar that produces a list of shows whose titles match the search
 - 
Click any show title and go to page with more info about that show
 
 - 
 - 
Technical requirements:
- 
Create a full-stack application with a backend that communicates with the movie API.
 - 
The front-end should be intuitive to use.
 - 
Accompany code with a full test suite.
 - 
Deploy site to a web host (e.g. on Amazon EC2, Heroku, Netlify, Google AppEngine, etc.).
 
 - 
 
Ruby on Rails was my first choice to get this app built quickly and reliably because the Rails framework relies on convention over configuration. I also love how Rails will show you errors in the browser. You can quickly create views that communicate intuitively with corresponding controller files and the actions defined within.
Handling the API was easy using the HTTParty gem:
- add 
gem 'httparty'to the Gemfile, - after adding any gem, in the terminal, within the project directory, run 
$ bundle install, include HTTPartyat the top of the controller file just under the class declaration,- then, 
response = HTTParty.get(url with api environment variable)to retrieve a JSON object saved toresponseyou then can iterate over, reference, and get data you need to display. 
Once I had the JSON object from the Movie DB API stored in response, I saved each value that I needed to display to an instance variable key, that could then be referenced from the view thanks to Rails convention.
Example:
tvshows_controller.rb - show method:
@show["number_of_seasons"] = response["number_of_seasons"].to_s unless response["number_of_seasons"].nil?
- then in 
tvshows/show.html.erb: 
<p>Seasons: <%= @show["number_of_seasons"].to_s %></p>
The Movie DB has EXCELLENT documentation and even has a "Try it out" tool you can practice with to be sure you are formatting the url correctly before feeding it to HTTParty.get(...) in your project. Here's the three GET requests I used to build this app, all you need is your own API key to start making calls to their database:
- 
GET /discover/tvfor the index view (top 100 shows) - 
GET /search/tvfor the search tv shows by name feature - 
GET /tv/{tv_id}for the search tv shows by name feature 
Here's additional resources I found very useful while building this project:
- 
Medium article "How to keep your credentials a secret when working with Rails."
 - 
Bootstrap
.card(but also see.jumbotron.container,col-xsm-12,Alerts...the list goes on lol) 
I had one week to complete this project, so naturally there are certain features, refactoring, and tests that I'm excited to implement in the future,
Specifically:
- 
Refactor HTTParty calls to be outside the index, show, and search methods and live within a private method
 - 
No Models are not used in this Rails project. One use would be if there was a User model, users could store a "Wishlist" of shows they discover and keep track of what they've watched, enjoyed, and rate those shows accordingly
 
Additional Movie DB API calls I would like to add in the future:
- 
top 100 movies, movie search
 - 
attach reviews to movies/shows
 - 
actor/actress bio displays, actor search
 - 
Autocomplete functionality within search
 
- Install Rails 5 if you do not already have it installed on your system.
 
In your terminal:
- 
$ mkdir bingeablecreates a folder for the project - 
$ cd bingeableto navigate into the new directory - 
$ git clone https://github.com/Neidley/Bingeable.gitto clone the project on your local system - 
$ cd bingeableto navigate into the repository - 
$ bundle installto install necessary dependencies. (note any errors if you need to download/update any global dependencies) - 
$ rails sto start the server (should be localhost:3000 but see terminal response to be sure) - 
navigate to
localhost:3000in your browser - 
yay! you should be running the app locally on your system : )
 - 
Press
CTRL + Cin your terminal to stop the server 
- in your terminal, make sure you are within the project directory. if you run 
$ ls+ ENTER you should see 
 bingeable yourname$ ls
Gemfile		Rakefile	config		lib		public		  tmp Gemfile.lock	app		config.ru	log		spec		  vendor README.md	bin		db		package.json	test
rspec spec/controllers/tvshows_controller_spec.rbto run tests
Andrew Neidley is the project maintainer. Feel free to contact him with questions, concerns or features you would like to see added!