Inspiration

Imagine, you are a student waiting in line at Warren Towers dining hall and you look up at a TV filled with an overwhelmingly large amount of nutrition information. Which food do you eat? Is it too much? Too little? Which combination of foods will align with your nutrition goals? We made an application that allows BU students to generate balanced meals from the dining hall menu while allowing them to follow their dietary goals. Our implementation also took inspiration from Terrier Taste, which is a similar application that uses BU Dining information to allow users to rate menu options and ultimately reduce waste. One of our aims was to also reduce waste by steering students away from grabbing food that they would not eat. We would like to submit this project to the Spark track. We would like to improve BU students' experiences in the dining hall by allowing them to create balanced, nutritious, and flexible meals. This would also potentially reduce waste since it allows students to identify what exactly they would like to eat for a given meal.

What it does/How we built it

This web application utilizes React.js on the front end and Python for the backend. We connected them through FastAPI. We utilized web scraping (Beautiful Soup) to scrape the information from the BU Dining website and compile menu options/nutrition information. Due to missing information in the website, we had to use USDA API to fill this in. From learning how to set up a Hashicorp Terraform file to create an AWS Lambda and Eventbridge as IaC, we are able to scrape the dining hall menu everyday at 2 AM (we would like to be considered for the Hashicorp Terraform challenge). We utilized Fitness Calculator from Rapid API to take in a user-inputted fitness goal along with gender, age, weight, height, and daily activity level in order to calculate the macronutrients and calories that the user should aim for. We then have a python algorithm that takes this goal nutrition information to give the user a balanced meal from the dining hall menu of the day. The user is presented with several options each for breakfast, lunch, and dinner to help them have variety and flexibility in their diet.

Challenges we ran into

The most prominent challenge we often had to face was issues with merge conflicts. Looking back, it would have been much better if we had planned ahead who would be working on what so that we would spend less time trying to resolve merge conflicts that resulted from people working on the same components. Another challenge we faced was with MongoDB because some group members faced issues with getting access to the database, resulting in a lot of debugging time. We found that adding the IP addresses to our Network Access proved to fix the issue for some, but for other team members it did not provide the same results, ultimately delaying our project goals.

Accomplishments that we're proud of

One accomplishment we are proud of is our algorithm that generates meals for the user. We didn't want to make it seem too strict. We wanted this application to appeal to users and not encourage bad eating habits (i.e, eating disorders). Thus, we made sure to have balanced meals that help the user still overcome the issue of trying to figure out what to eat.

What we learned

We learned a lot about what it means to work concurrently as a team on a common project. We also learned how to use Fast API to connect our front end to our back end, as this was our first time using this framework. We also got new experience with web scraping and learned that making a structured system from the BU Dining website was vital to making our web application work efficiently and correctly.

What's next for NutriTerrier

Due to time limits, we were not able to add functionality that would allow the user to select dietary preferences like vegetarian, gluten free, allergies, kosher, halal, etc. We tried to circumvent this by adding several options for meals that would be generated by our algorithm. In the future, we would like to spend more time explicitly generating meals for dietary restrictions. We would also like to add more appeal options in our application, such as an award/game system for users that frequently use our app and review our generated meals. Another thing that we could look into would be requesting for BU’s Dining Hall API in order to avoid using bots for web scraping (we realize there may be limitations with web scraping in the long term). We would also like to possibly pair up with previous projects involved with BU Dining, such as Terrier Taste, to enhance this project's applications for BU students. This project could help BU create a more tailored menu selection for students.

Built With

Share this project:

Updates