Example of a menu
Item info box with the review form open and a rating of 4 stars selected
Another item info box when a user already left a review
Picking a date to view with the calendar
We use the EMU dining site to see what's on the menu at an on campus dining location. It's nice on the desktop, but it isn't mobile friendly and doesn't have any features beyond the menu information. So we decided to create our own and add more features to it.
What it does
This web application displays what's on the menu at a particular EMU dining location and date. The user can choose a location from a dropdown and choose a date. (The date can be chosen by either clicking one of the boxes representing the days or entering a date into the date input.)
When the user clicks on a menu item, a modal dialog pops up showing the average rating (if available), a "review this item" button, nutrient info, and ingredients. The user can leave a star rating with an optional written review of the item.
How we built it
When a user goes to a menu, it first checks to see if a JSON file for the location and date exists. If it does, it reads the JSON from that and turns it into an array which we then loop through to generate the HTML. If the file does not exist, we query the dining services server to get the JSON file for the location and date, save the file to our server, and read the data into an array.
We weren't able implement all the features we wanted to in the 24 hour time window, of course, but we'd like to keep working on and improving it. Some of the features we'd like to add eventually are:
- Show all reviews in menu item info boxes
- The ability to sort/filter menu items based on allergens or tags like "vegetarian", "vegan", etc.
- The ability to save favorite menu items to your account
- A way for users to create a "meal" on the web app, add menu items to it, and then see the calories of that particular meal
Challenges we ran into
We had a lot of trouble with getting Google OAuth to work. It seems like it would be easy, but we had problems with it one after another.
Accomplishments that we're proud of
- We got the main functionality we wanted implemented (menus for all locations)
- We finally got Google OAuth working after several hours
- Review system is functional
What we learned
- Improved our teamwork and programming skills.
- Learned more about PHP, MySQL, Bootstrap, etc.
- Got to experience coding in a fast-paced environment with a very quick deadline.