Inspiration
As students, we know firsthand how hard it is to manage class, homework, and clubs and still manage to live a healthy lifestyle. There are so many different options to choose from at each dining hall and even just by looking around, we’re overwhelmed with decision fatigue and end up grabbing a slice of pizza. It’s even harder for those of us with dietary restrictions - finding something nutritious that we also enjoy eating is a struggle.
We wanted to find a way to lay out all of the possible options we had from all the dining halls with our specific dietary restrictions/ allergies in mind. We could then pick and choose which meals we enjoyed and then generate a calendar showing us when our favorite meals were offered. We created Meal Pal to generate a personalized meal plan for college students. All it requires is for users to input the number of dining hall swipes they have, their dietary restrictions, and meal preferences.
What it does
Meal Pal has users input their university, their current dining hall plan, and their dietary restrictions. Afterward, we use our master list of meals that the dining halls serve to gather a list of meals that satisfy the user’s specific requirements. The user can then pick their preferred meals from this list and using this input we generate a meal plan for the week. Users can decide which
How we built it
We used a webscraping tool to get all of the potential meals off of CDS website for two weeks worth of data in order to give users as many meals to pick from.
Then we designed a website using react and node.js to allow users to input their preferences for meals
We also cross-referenced user inputs with our master list of meals in order to generate a personalized meal plan that users can then transfer into their google calendar or planner.
Challenges we ran into
One of the biggest challenges was working with an unstructured website that had no built-in API.
Since there are a lot of extraneous items on the CDS website, it was difficult to select only the meals and also isolate their specific allergen.
It was also difficult getting a react form that could take in multiple inputs and storing that data somewhere so that it could then be used to pull from the master list of meals.
Accomplishments that we're proud of
As a team, we were able to work together to adapt to unfamiliar situations and troubleshoot problems as they came up. We all had our areas of expertise that we pooled together in order to face new challenges that none of us had encountered before. It was two of our members first time ever working with react and node.js and they worked hard to learn on the spot and adapt their existing skills to these new languages.
We’re proud of the user intake form that we build on our website. It took lots of blood, sweat and tears to put together a form that mimicked the ease of platforms like Typeform on React. We’re also proud of our use of Github in order to make it easier to pull and push code from different machines.
What we learned
Through the numerous challenges that we’ve faced throughout this project, we gained lots of useful skills.
Since Carolina Dining Services doesn’t offer an API, which would’ve simplified our data gathering process, we had to learn how web scrap data from an unstructured website. It was difficult interpreting the HTML file in order to gather the pertinent information.
We also had to refactor our code multiple times in order to ensure that it fit cleanly together as we added on additional functionality. In addition, we wanted to ensure that our code was scalable so we had to work to develop code that could be applied to any data set.
In addition, it wasn’t enough to simply gather the data off the website and add it to our react website. We had to connect the data to our backend and then use a REST API to connect it to our front end in order to fully integrate both sides of our code.
Finally, we also explore how to best parse json files in order to gather the specific data that the user had requested, which proved to be more difficult than we originally expected.
What's next for Meal Pal
There’s a lot in store for Meal Pal. Firstly, Meal Pal is going to consider the nutrition benefits of every meal and suggest a meal schedule for a well-balanced diet. It will consider nutrients like protein, fats, carbohydrates, and vitamins and ensure that the user gets the required amount with the suggested weekly meal schedule. Secondly, Meal Pal is going to be the next “coursicle” for scheduling meals. The goal is for every university to be a part of “Meal Pal” so that students from any university can easily schedule their meals for the rest of the week. Thirdly, users will be able to customize their preferences for a meal schedule - even though they may not have any allergens, they might be always avoiding certain meals. Those meals will not show up on the meal schedule. Users will also be able to customize the final schedule and swap meals that are suggested with a meal from a list of meals offered at that time. Users can customize the meal type. For instance, they can indicate if they tend to skip breakfast or only use their meal swipes for dinner so the meal schedule will reflect these preferences and budget their meal plan accordingly. We often see that many students have “extra meal swipes” left at the end of the semester that they have to finish somehow. Meal Pal would help students budget using their meal preferences and suggest a meal plan that matches their preferences so students do not have to do the math and figure out the meal plan that is best for them.
Built With
- api
- figma
- javascript
- node.js
- python
- react
- rest
- webscraping
Log in or sign up for Devpost to join the conversation.