Inspiration

Decision fatigue is real, especially at 6 PM. We built Dinner? because we were tired of the eternal question: "What are we eating today?". We realized we often have ingredients but lack the creativity to combine them. We wanted a tool that doesn't just list random recipes, but acts as an executive chef that understands our specific pantry to minimize waste and mental load.

What it does

Dinner? is an intelligent kitchen assistant that manages your food inventory and cooks with you.

  • AI Executive Chef: Uses Google Gemini 1.5 to generate recipes based strictly on what is in your digital pantry. It respects dietary restrictions and has modes like "Quick," "Fancy," or "Snack."
  • Inventory Tracking: Keeps a digital twin of your pantry to prioritize ingredients that are expiring or available.
  • Connected Kitchens: Allows multiple users (families/roommates) to manage the same pantry and shopping list in real-time.
  • Smart Shopping: Automatically adds missing ingredients from generated recipes to a shared shopping list.

How we built it

We prioritized a modern, type-safe, and scalable stack:

  • Frontend/Backend: Next.js 16 using the App Router and Server Actions for seamless data mutation.
  • AI: Google Gemini 1.5 (Pro & Flash) for the reasoning engine and recipe generation.
  • Database: MariaDB managed via Prisma ORM for type-safe database queries and complex relationship handling (Users <-> Kitchens <-> Pantries).
  • Styling: TailwindCSS for a responsive, mobile-first UI.
  • DevOps: Fully containerized with Docker and Docker Compose.

Challenges we ran into

  • AI Hallucinations: Stopping the model from inventing ingredients the user didn't have was tough. We had to refine the system prompts heavily to force strict adherence to the provided inventory list.
  • State Synchronization: Managing the "Connected Kitchens" state—ensuring that when User A updates the pantry, User B sees it immediately—required careful use of Server Actions and cache revalidation in Next.js 16.
  • Schema Complexity: Designing a database schema that allows for shared ownership (many-to-many relationships for users and kitchens) while maintaining strict privacy boundaries took several iterations.

Accomplishments that we're proud of

  • The "Chef Mode": It feels like a real conversation. The step-by-step interactive guide powered by Gemini is genuinely helpful, not just a static text block.
  • Waste Reduction Logic: The algorithm explicitly prioritizes existing ingredients, which practically helps users save money.
  • Clean Architecture: The codebase is modular, using the latest Next.js 16 features effectively without legacy bloat.

What we learned

  • Next.js 16 Server Actions: We learned how powerful (and slightly tricky) the new mutation model is compared to traditional API routes.
  • Prompt Engineering is Dev: Writing the prompt for the Chef is just as critical as writing the TypeScript code. Context window management is key to keeping costs low and accuracy high.
  • Prisma & MariaDB: We deepened our knowledge of handling relational data in a serverless-friendly environment.

What's next for Dinner?

  • Mobile App: Wrapping the web app into a React Native container for better notification support.
  • Barcode Scanner: Integrating a camera feature to scan grocery barcodes for instant pantry entry.
  • Macro-nutrient Tracking: Using Gemini to estimate the calories and macros of the generated meals automatically.

Built With

Share this project:

Updates