Inspiration
As college who have all recently moved into apartments for the first time, we found that we were wasting more food than we could've expected. Having to find rotten yet untouched lettuce in the depths of the fridge is not only incredibly wasteful for the environment but also harmful to our nutrition. We wanted to create this app to help other students keep track of the items in their fridge, without having to wrack their brains for what to cook everyday. Our goal was to both streamline mealtime preparations and provide a sustainable solution to everyday food waste.
What it does
Our app is meant to be simple and intuitive. Users are able to upload a photo of their receipt directly from our app, which we then process and extract the food items. Then, we take these ingredients, calculate expiration dates, and produce recipes for the user using the ingredients that they already have, prioritizing ingredients that are expiring sooner.
How we built it
Our tech stack consisted of React-Native, Express, MongoDB, Open AI API, and OCR. We used React-Native for our frontend and Express for our backend support. MongoDB was used to store the data we parsed from user receipts, so that way our app would not be memoryless. To actually process and recognize the text on the receipt, we used OCR. To generate recipes, we utilized Open AI API and engineered prompts that would yield the best results.
Challenges we ran into
For this project, we wanted to really challenge ourselves by using a tech stack we had never used before, such as React-Native, Express, OpenAI API, and OCR. Since essentially our entire tech stack was unfamiliar, we faced many challenges in understanding syntax, routing, and communication between the frontend and backend. Additionally, we faced issues with technology like Multer in the middleware when it came to sending image information from the front end to backend, as we had never used Multer before either. However, we are incredibly proud of ourselves for being able to persevere and find solutions to our problems, to both learn new skills as well as produce our MVP.
Accomplishments that we're proud of
We are incredibly proud of being able to produce our final product. Though it may not be the best, we hope that it symbolizes our learning, development, and perseverance. From getting our MongoDB database set up to getting our frontend to properly communicate with our backend, we will be taking away many accomplishments with us.
What we learned
As previously mentioned, we learned an entirely new tech stack. We got to experience React-Native, Express, OpenAI API, and OCR for the first time. It's hard to verbalize what we have learned without talking about our entire project process, since we truly learned something new every time we implemented something.
What's next for Beat the Receipt
Originally, we wanted to implement our in-app camera, but due to an unfamiliar tech stack, we didn't get a chance to implement it for this iteration, but are already working on it. Additionally for the future, we hope to allow users to choose recipes that better cater to their tastes while still using soon-to-expire ingredients. Eventually, we would also like to implement a budgeting option, where users can visualize how much of their budget has been spent on their groceries, with our app handling the calculations.
Built With
- express.js
- github
- mongodb
- ocr
- openai
- react-native
Log in or sign up for Devpost to join the conversation.