Hungry4 was the first project that Max and I worked on this summer and was built during the Hack To the Future hackathon. This was my first hackathon as well as my first node.js project and was really fun to work on and spend a day building. Max and I had talked about the idea a few days before the hackathon and discussed some basic details of the implementation, however, we started and finished everything (except a few tweaks) over the 24 hour period during the hackathon.
The basic idea is that it is hard to find what you are hungry for. Hungry4 directs you to tasty food based on your location (and willingness to travel). Max wrote most of the frontend and recommendation algorithm while I worked on the backend and pulling the data.
The entire app is a single page which start here getting your basic location information:
Based on your search query we hijack the Foodspotting API and query their site for results for your location. We contacted Foodspotting multiple times asking for access to the API but they only replied with “It’s private, sorry” so we just emulated their own requests to get back the data. The call to Foodspotting provides the high quality photos for you to browse and metadata about the dish (name, restaurant, etc) and help us direct you to whatever you’re Hungry4.
The results let you upvote or downvote an item until you find something that you’re satisfied with. We rated each dish in 8 different dimensions [i.e. dinner, breakfast, lunch, hipster, spicy, etc] by dividing the number of Google search results for the dish’s name by the number of results for the name and each different dimension. Then, giving each user a starting standard user vector, your vote would change your vector directing you towards (or away) certain types of dishes. The entire site is stateless, we hold no user information and didn’t user a database of any kind. When the server is first started we cached results for San Francisco since that was our most common query and we would preload the next group of dishes to display to reduce loading times.
If you didn’t find anything you can search again and restart the process. Clicking the “Show more info” button would give you a Google Maps view of the restaurant as well as Yelp information and the option to Tweet or post to your Tumblr about your find.
Overall this was a really fun project to work on and gave me a better taste for web development (this was my second web project). It was also the beginning of the many hack nights that Max and I have done over the summer building the CommRater site.
The website is up at: http://hungry4.herokuapp.com/
And our code is public at: https://github.com/cantbloom/Hungry4