Inspiration
As college students, we’ve all been there - buying groceries with good intentions, only to let half of it go bad in the mini-fridge. Between busy schedules, tiny storage space, and (lack of cooking skills), we’d forget to check expiry dates or even remember what we had. The result? Wasted food and late-night takeout runs (Campus Pizza uWaterloo). It hit us harder when we realized that around 30% of groceries students buy end up wasted. We wanted to use tech on a small scale, which adds up to a big scale, to combat this problem and be more sustainable. So, we built Cookenova.
What it does
Cook-e-Nova is a grocery tracking and food sharing app.
Users can log in with authentication and choose their party group (group they want to share groceries with):
- Receipt Scanning: Upload a picture of your grocery receipt, and our app turns it into a digital grocery list and lists expiry dates.
- Expiry Reminders: We send notifications before your food goes bad and gets wasted.
- Food Sharing: If you don’t want an item, you can offer it to members in your party (your roommates, friends, or family). Whoever claims offered items gets them, reducing waste.
How we built it
Cook-e-Nova is a React + TypeScript web app (built with Vite) with tiny serverless API routes on Vercel and a MongoDB Atlas database. You snap or upload a receipt, our OpenAI-powered parser turns it into items, and we save them to your inventory, show “use-me-first” (soon-expiring) items, and let you share/claim items with roommates. Behind the scenes we auto-expire old offers and send gentle notifications when food is nearing its date, so you waste less and coordinate better.
Challenges we ran into
One challenge we faced was configuring the database (MongoDB) and authentication so that every user would have their own separate grocery log. At first, whenever someone added or edited their groceries, the data wouldn’t stick. It would refresh and disappear the next time they logged in. It was frustrating to work with because the code is connected to a database on the web, which is something new we just started learning recently.
We eventually resolved this as we realized we weren’t properly linking updates to the user’s unique ID. On the backend, we updated our authentication middleware so that every operation required a valid JWT tied to that ID.
Accomplishments that we're proud of
One of our biggest accomplishments was how much we learned about working with MongoDB. At the start, we only had a vague idea of how to use it, but when our data wasn’t persisting properly, we had to dig deep to debug the issue. We spent a lot of time on Google and watching countless YouTube videos to build the skills to implement MongoDB correctly. We gained a lot of hands-on experience with MongoDB Atlas, configuring authentication and setting up triggers/functions for more flexible data handling. We learned that MongoDB provides a wide range of features beyond just storing data.
We felt accomplished going from knowing just the basics to being able to implement and design a working product with many features.
What we learned
- To implement and work with a database: connecting it using the backend.
- Authentication flows: We learned how to set up register, login, and logout, and attach them to the backend.
- REST API endpoints: We learned how to build endpoints (e.g., parsing receipts) and connect them to the frontend.
- Teamwork: Most importantly, we learned how to work effectively as a team — dividing tasks, developing features, collaborating across frontend, backend, and database, and helping each other whenever someone got stuck.
What's next for cookenova
Due to time constraint we were not able to fully implement all the features we have in mind. But we would like to build this into a deployable app in the future, to production hopefully we go :)
MongoDB features: Pipelines when we get there for smoother delivery and charts functionality for real-time impact understanding
One functionality feature: Meal generation - This feature automatically takes expiring items in your list and generates meal ideas or recipes. This would not only reduce waste but also save students time and money by suggesting easy meals they can cook with what they already have, instead of making midnight runs to get food.
Built With
- mongodb
- node.js
- openai
- react
- typescript
- vite





Log in or sign up for Devpost to join the conversation.