ChefView: AI Grocery List — Project Story


Inspiration

I faced the same problem the influencer faced about: "I just want a smart grocery list. Recipes everywhere, bookmarks scattered across apps, a manual list that never matched what I actually wanted to cook—and no link between "meals I want to make" and "what I need to buy." I decided to build something that would fix that.


What it does

ChefView lets you pick your favourite countries and cuisines, then swipe through recipe cards to save the meals you want to cook. Your Cook wishlist feeds a single Buy list: the app auto-populates it with only the missing ingredients, aggregated across all your saved recipes. Add what you have to your pantry, check off at the store, and sync across devices. One list, less waste, less overwhelm.


How we built it

I built it with Expo and React Native for the mobile app, with a shared FoodHopp API (Node.js, Express, Prisma + PostgreSQL) on the backend. Firebase handles auth (Google and Apple sign-in). The swipe UI uses TanStack Query for data and a custom pan gesture for the recipe cards. Pantry and wishlist sync through the API; the Buy list aggregates missing ingredients from the Cook wishlist. RevenueCat for subscriptions. I used favourite countries for discovery and diet/allergy filters to keep recommendations relevant.


Challenges we ran into

Aggregating the Buy list was tricky—deduplication, counting, and linking each item back to which recipes need it. I also ran into scope creep: the pantry feature alone could have been a full app. I had to cut scope to ship: focus on core flow (swipe → wishlist → buy list) first, then add pantry and sync. The swipe UX took a few iterations to feel right—thresholds, animations, and making the "Ready to cook" vs "Missing X ingredients" badges clear at a glance.


Accomplishments that we're proud of

I shipped the full loop: swipe recipes from favourite countries, auto-generated grocery list, pantry, and cross-device sync. The no-buy / 1-buy / 2-buy tiers help users see what they can cook with what they have. One-tap "add to pantry" from the Buy list after shopping keeps the pantry in sync. Country-based discovery and diet preferences make the feed feel personalised instead of overwhelming.


What we learned

I learned to scope ruthlessly for a hackathon—build the core loop first, then layer. I also learned that "smart grocery list" sounds simple but hides a lot of edge cases: ingredient matching, aggregation, and keeping pantry and wishlist in sync. Testing with real recipes and pantry data early surfaced bugs that would have been painful later.


What's next for ChefView: AI Grocery List

Next up: household members sharing a pantry and cook list, better diet and allergy filtering, and smarter recommendations. I'm also planning photo-to-food-wishlist and photo-to-pantry—snap a dish or ingredient and have it added automatically. I’d also like to add offline support for the pantry and wishlist, and explore sharing or exporting grocery lists. The goal is to make ChefView the one place for "what I want to cook" → "what I need to buy."

Built With

Share this project:

Updates