Inspiration
We were inspired to make this project because we wanted a way to quickly and accurately log the nutritional info of food at UMD's dining halls. UMD currently does not have a good platform to do this with persistent storage between days, so we thought it would be a good idea to learn full-stack app development along the way.
What it does
UMD Nutrition uses information about your body type to create a daily calorie goal, and allows you to log any food from the UMD dining halls by either searching the database of items we created or via a photo of your plate. Accounts allow for persistent storage of your calorie logs and your individual food item reviews. You can also see the average rating of any dining hall food item by other users.
How we built it
We built UMD Nutrition as a full-stack mobile application. On the backend, we wrote a Python web scraper using BeautifulSoup and Requests to pull nutrition facts directly from UMD's dining services website, storing every unique menu item's nutritional info in a Firebase Firestore database. A GitHub Actions workflow keeps the database fresh by automatically re-scraping on a weekly schedule. The mobile frontend was built using React Native and JavaScript, with Firebase Authentication handling user accounts and Firestore handling persistent storage of calorie logs and food reviews.
Challenges we ran into
One of our biggest challenges was reverse-engineering UMD's nutrition website to extract structured data. The site is fully server-side rendered with no public API, so we had to carefully parse the HTML of hundreds of label pages and handle edge cases like inconsistent field naming across items and duplicate entries. Another big setback we faced was in getting our initial MVP started, because we had to learn how to connect our front-end application interface to our Firebase Database, which required multiple parts we were not fully aware of in the beginning.
Accomplishments that we're proud of
We are extremely proud to have developed a polished MVP for our project, and we are especially proud of the fact that every item we thought was a non-negotiable feature of our app got implemented in the end. We are especially proud of the photo logger feature, since we budgeted that as a stretch goal beyond our MVP, and we were able to get it working properly.
What we learned
This project was our first time building a full-stack mobile application from the ground up. We learned how to scrape and clean real-world HTML data, design a NoSQL database schema in Firestore, and combine authentication, persistent storage, and a mobile frontend into a cohesive product.
What's next for UMD Nutrition
We'd love to expand UMD Nutrition beyond the three main dining halls to cover retail locations and cafes across campus. On the feature side, we want to add weekly nutrition summaries and smarter meal recommendations based on a user's remaining daily goals. We would also like to finish the app itself and have it function properly on a real, un-simulated phone.
Log in or sign up for Devpost to join the conversation.