View it here (mobile friendly) http://uber-sf-movies.herokuapp.com/
- Install Node.js
- install Grunt globally
npm install -g grunt-cli - install Bower globally
npm install -g bower - Clone this repo.
npm installbower install
That's it!
Run tests:
grunt test
Create a service that shows on a map where movies have been filmed in San Francisco. The user should be able to filter the view using autocompletion search.
The data is available on DataSF: Film Locations.
I focused on a front-end solution due to the time restraint. I also felt that in a 'proof of concept' type project, a full stack solution was overkill. This project is structured so that a backend can be quickly added if the 'project' moved forward.
I chose to implement a typical JavaScript project that uses Node.js for local hosting and build tools. Version control of the code is through Github, and it is hosted on Heroku. Heroku and Github play really well together and really simplify the 'devops' part of protoyping projects.
-
package management : NPM (Node.js) | Bower (In-browser packages)
-
build tool : Grunt.js
- file minification
- CSS processing
- Assets compilation
- so many etcs
I chose Vue.js as a lightweight framework to handle binding data to the DOM. I knew this was only going to have a single view, so I didn't see the need for something larger like Backbone.js or Angular.js.
Smaller libraries used:
- Underscore.js for functional programming helpers
- Async.js to keep API calls in sync
- Leaflet.js to render map components
- jQuery for XHR requests
Since there isn't a backend and rate limits on the geocoding API, rendering pins the first time for a movie is a little slow. If I had more time I would spin up a Node.js server with a cronjob that hits the movies API, adds geolocating data, and saves the whole thing to a MongoDB document. There are also a few bugs to work out.
TESTING! I took me so long to get the tests suite set up that I only wrote 1 test, but hopefully you can see the intention there.
Mobile devices are supported, but both the desktop and mobile UI's need to be polished
Linkedin profile: https://www.linkedin.com/in/tomwolber
View it here (mobile friendly) http://uber-sf-movies.herokuapp.com/