Inspiration

Dining service managers at UGA have a lot to deal with, considering that all 5 of the dining halls need to be restocked constantly to be able to keep up with the demands of UGA students and staff. We wanted to help alleviate the stress that these managers face, while still being a practical app for health-conscious students like us.

What it does

Our app has a portal for dining hall managers and for students. Students can use their portal to track meals eaten at the dining halls, see overall nutrition data for what they've eaten, and ask Gemini for meal recommendations based on their dietary restrictions and goals. Managers can see a list of all the dining halls and select the one they want to analyze. Every item being served that day at the selected hall can be seen in a list and items that are close to running out of stock are easily noticeable. A graph can be seen for any item indicating when our model predicts that the item will be fully depleted.

How we built it

We first created a React skeleton for the front end to be enriched later. We scanned the UGA Nutrislice page for API links and then created a script to scrape the data from Nutrislice, and then adapted that data into a format that could be manipulated by the framework. After this, we began adding user features like the Gemini integration, which we had to provide with the context of what food was being served that day and what foods the user had previously eaten. At the same time, we realized we had to set up a Firebase database that contained the foods eaten by all users so that the management portal, which was in development at this time, could access the data. We finally implemented our prediction model and added some more quality of life features to the management portal and cleaned up both portals.

Challenges

One of the first challenges we ran into was extracting and formatting the data from Nutrislice, which is the foundation of our app. We first tried to make a script that would just scrape data from each page without using the API endpoints. After struggling with the formatting of this data for a while, we found out about the API points in the website that we could access, allowing us to scrape data that ended up being much more workable. We also ran into multiple difficulties with the Gemini API as the first key we used ran out of credits quite quickly and using another key with the provided free credits presented further problems. We found it tough to add context to Gemini, but we determined that there was a method when we were accessing the Nutrislice API output that allowed us to summarize the output and send it to Gemini easily.

What we learned

We learned about Firebase and databases in general, API endpoints, React and Typescript.

What's next

We hope to create a desktop application in the future for ease of access.

Final thoughts

This hackathon was a great learning experience for us. We all got a chance to utilize our individual strengths to get this product from the whiteboard to a fully functional app, while also getting a chance to learn about softwares we weren't familiar with. Given another shot, we would try and understand the softwares we planned on using a little better to make the process of putting the pieces together a little easier. We hope that our project has an impact on dining operations at UGA and helps to relieve just some of the stress for our dining services managers.

Share this project:

Updates