Inspiration
We were set on developing a sustainable solution that could be used by everyday people like us while still having a far-reaching impact. As college students, we often experience discarding food that has gone bad, wasting both food and money. The current options for grocery management are limited, only showing when a specific good may expire. We desired to have a platform that tracks grocery shopping habits, recommends recipes, suggests new items which pair well with existing groceries, and creates a personalized schedule to track when to make different meals and purchase new groceries.
What it does
EcoEats lets users enter their grocery purchases and update history once they have eaten or discarded a specific good. Then, it utilizes association rules to understand which grocery items pair well with others and provides users an updated grocery list to suit their unique needs. Subsequently, EcoEats will eventually create tailored recipes using groceries closest to expiration in order to reduce food waste and ensure users are aware of groceries they need to restock frequently or those they should no longer purchase. In the future, we will allow the users to share feedback by swiping right or left on recipes which they liked or disliked, enabling us to improve future recommendations. EcoEats then provides a comprehensive report summarizing the user's food waste habits and rewards users for minimizing wastage with credits to eat at sustainable establishments.
How we built it
We built EcoEats using React JS and Material UI for the frontend and Xano for the backend development. We used Jupyter Notebook to write the association rules and calculate the support, confidence, and lift associated with each rule. These metrics inform us of the strength of a particular rule. We uploaded these rules and food expiration into Xano and accessed this data via REST API in or frontend.
Challenges we ran into
One challenge for our team was to breakdown our idea of a sustainable grocery management system into distinct parts and divide the responsibility. We wrote our entire process on a whiteboard to separate the work, and decided to have one member focus on user interface and design, second work primarily on backend development, third write the association rule code and apply machine learning techniques, and fourth to finalize our presentation and explanation of our ideas. Another challenge is a couple of our team members had little experience with backend development, which motivated us to learn how to use React to maintain an inventory of grocery items.
Accomplishments that we're proud of
Our team is proud of integrating our front end user interface and design, backend development of the grocery database system, and the association rules to suggest improved grocery lists and recipes for users. In a short amount of time, we created a functional product with machine learning capabilities. We are proud of leveraging our team's diverse strengths and weaknesses to create a meaningful project that can make a positive impact in the world.
What we learned
All four of us learned more about using React JS to write frontend code and maintain a database of the user's grocery items. We used Xano for the first time to write the backend code, which we realized was much more efficient than other web development tools. We researched market basket analysis techniques including association rules to understand how we can suggest grocery items that users may purchase in the future. Additionally, we learned how to take an open-ended idea, break it down into several components, divide responsibility, and integrate our work to create a meaningful project that addresses important sustainability issues.
What's next for EcoEats
Due to the limited time in developing our solution, there are many opportunities to improve the functionality of EcoEats. First, for easier data entry, we want to incorporate a receipt scanning system to input food items automatically (and also adapt our solution for a mobile format). We also want to add options to include how much of each food item was purchased/eaten to provide more accurate estimates for the time until expiration. While suggesting other products to buy is great for making sure there are good meal options for the remaining ingredients, we want to include functionality that looks at current inventory and automatically suggests recipes using just those ingredients. Finally, having comprehensive reports and actionable suggestions for users would be beneficial, but require more use and testing to see what information will be most helpful for users.
Log in or sign up for Devpost to join the conversation.