Responsive website to discover movies shot in the city of San Francisco.
View the static site on GitHub Pages: http://steakchaser.github.io/cityflix/
- Pull the list of movies shot in San Francisco from the SF OpenData API
- Find the poster image and details for each unique movie in that list using the OMDB API
- Display all the entries in a responsive, Pinterest-style grid, including:
- Poster (and fallback image)
- Movie title
- Year
- Director
- Plot excerpt
- The user should also be able to:
- Type into a text box and filter the list by the entered string (matched against any attributes you find relevant)
- Use sliders (two sliders in one track) to control the relevant years for the search (start/end year)
- Toggle a mode which hides/shows movies for which there is no poster picture
- No server-side application should be needed / used
- Use any frameworks or libraries (both JS and CSS)
- Host on GitHub
- Publish full commit history
- AngularJS - HTML enhanced for web apps!
AngularJS Bootstrap Switch - AngularJS directive for the bootstrap-switch jQuery plugin- AngularJS Slider - AngularJS slider directive with no external dependencies
- Bootstrap - Responsive CSS framework + pre-built UI components
- Bower - Package manager for front-end assets.
- CoffeeScript - CoffeeScript is a little language that compiles into JavaScript
- Console.log wrapper - Safe, clear console logging for every browser
- jQuery - JavaScript library for DOM manipulation, event handling, animation, and more
- Middleman - Static website generator that lets you use modern-day development tools
- Sass - CSS with superpowers
- Slim - Lightweight templating language used instead of typing raw HTML
- UI Bootstrap - AngularJS directives specific to Bootstrap
- Pull in real data from SF OpenData API
- Pull in box art from OMDB
- Other filter controls
- Properly organize Angular files
- Style thumbs
- Style filter controls
- Style page header
- No results message on empty search / filter
- CSS-based masonry causes flicker as items are loaded in by Angular. Need to explore JS / native Angular options to fix this. Angular Deckgrid looks promising, but it does not support filtering (#39)
- Not currently displaying a fallback image per requirements. Just displaying the title, release year, director, and plot, which looks fine.
- The SF Open Data API is returning some duplicate titles (see A Smile Like Yours)
- OMDB API poster images are from IMDB. IMDB does not allow linked images from other websites; they will return a 404. As a result, this site is using poster images and API data that has been pre-downloaded from both APIs. See /source/data/movies.json and the Rakefile
Clone the repo and install gems required for Middleman
$ git clone git@github.com:steakchaser/cityflix.git && cd cityflix
$ bundle install
The Middleman separates your development and production code from the start. This allows you to utilize a bevy of tools (such as Haml, Sass, CoffeeScript, etc.) during development that are unnecessary or undesirable in production.
From the command-line, start the preview web-server from inside your project folder
$ cd cityflix
$ bundle exec middleman server
This will start a local web server running at: http://localhost:4567/
Finally, when you are ready to deliver static code or, in the case of "blog mode", host a static blog, you will need to build the site. Using the command-line, from the project folder, run middleman build:
$ cd cityflix
$ bundle exec middleman build
Push the build folder to the gh-pages branch
$ bundle exec middleman deploy
To pull down the movie metadata and poster images, run the following rake task:
$ bundle exec rake data:build