Inspiration😊

As students, we have noticed there is a ton of food waste at our school's cafeteria every day. We wanted a way to plan our meals simply and efficiently. While we don't share much when it comes to skills in the kitchen, we both wanted a way to find the right meals for us to make. We also wanted a simple way to track how many servings of food we make. We also know that not all servings are sized the same, so we set out to include a way to gauge the size of portions. All so that we can avoid wasting food as we enjoy making meals we love.

What it does😎

Pantry-Pal starts by having the user enter their preferred meal price, dish complexity, time required, allergens contained, cuisine type preferred, and size of group being fed on a regular basis. Plate Savior then provides the user custom recommendations of meals tailored to their wants and needs. It then has the user schedule their meals for the coming week. Using that schedule, Plate Savior also generates a list of the ingredients required to prepare the selected meals. Lastly, Plate Savior keeps all the directions in one place, so the user never has to leave the app.

How we built it💪

We started by building a web scraping tool in Python to create a MongoDB database of over 3,200 recipes. Along with the recipes, we included information about the recipes such as the difficulty, cost, and cuisine type. Second, we built a mobile application for IOS and Android using React Native and Expo.io with Javascript. Finally, to retrieve the recipes and metadata in our database, we built a REST API with Python and FastAPI, we created a number of paths for queries of varying complexities.

Challenges we ran into⚒️

React Native was a major challenge for us because neither one of us have experience in mobile app development. Not only that, but React Native has very complex and oft non specific error messages that results in a difficult debugging situation. Furthermore, we both prefer back end development, so this project being a front end heavy project challenged our design skills. We struggled to make sure every bit of the UI was perfectly aligned, and that each button was easy to use.

Accomplishments that we're proud of❤️

We are thrilled with our MongoDB database because our past projects have not followed best practices for data storage and have not used a scalable data storage platform. We are also ecstatic with the results of our user interface. We spent a ton of time placing each input, sizing each box, and perfecting the positions of the scroll areas.

What we learned🪢

We learned a lot about mobile app development, and the challenges of cross platform development. In several instances, the UI on one person's device would look amazing while the other person's looked terrible. We also learned about proper data transfer protocols as MongoDB Atlas limits the IP addresses that can request data from it. We learned some lessons the hard way, like locking ourselves out of our database. These hard lessons provide the greatest opportunity for learning, as we develop as computer scientists.

What's next for Pantry-Pal⏭️

Pantry-Pal most likely will be re-written at some point in the future. Tackling a difficult challenge in limited time with an unfamiliar tool pushed us to our limits. We were forced to learn quickly and build our skills fast. However retrospectively, we both have tools that we like better than React Native. This application will likely see its future as a progressive web application or PWA. While PWAs get many of the benefits of native applications, they are more similar to other applications we have developed.

Share this project:

Updates