An example of several foods being ordered.
The main screen of the app. A single button, and two extra buttons to save on button presses to get more "foods".
A screenshot of food category preferences to be filled out once by the user. This enables us to randomly match them to food that they like.
A screenshot of the preferences of the app to be filled out once.
As University students in Boston we struggle with indecision about choosing food establishments for late-night snacks. Therefore, we think a utility of ordering food within preferences would be greatly appreciated by classmates.
What it does
Pulling from different apis such as openrouteservice to determine driving times for delivery, yelp to determine quality of the food establishment, and finally eatstreet to explore restaurant menus and send orders, we have built a product that provides random food delivery with one click of a button (or several to order several "foods"). Users are initially presented with choices when installing the app of food preferences. These are used later to inform decision-making in the backend of the application.
Challenges we ran into
Working on a shoe-string budget, we worried about overloading the free apis we were using. To avoid hitting the limits imposed on the api keys we were able to obtain, we had to fit data collection about restaurants into small, and intelligent bulk requests in both a RESTful context (open route service), and with graphql queries (yelp). Large searches of restaurants are also intelligently split into several batches so as to avoid timing out services, and being refused connections.
Connecting different components was the hardest challenge. We decided to serve web endpoints in nodejs, do complicated restaurant analysis with python processes, and provide the complete frontend with an iOS app.
Because of the stakes of ordering real life items with actual money, testing became a priviledge. This made hacking harder to do. Our first integration test, when run very carefully, was ordering a pizza!
Accomplishments that we're proud of
- Ordered a pizza.
- Made a good-looking intuitive interface.
- Filtered through restaurants by combining information sources.
What we learned
- We learned how to use several different cool APIs.
- We learned how connect together seemingly distant software tools (nodejs to python and back)
- How to have fun!
What's next for Foodies
Accepting dining dollars as a method of payment for Northeastern-specific venues. Showing images of foods ordered.