Inspiration

Most of us have opened the fridge, found something fuzzy, and thought: I just bought that. Receipts tell you what you paid for — not how long anything lasts. We kept losing food (and money) because expiry lived in our heads, not in a system we actually check.

That gap inspired EZXpire: take a photo of a grocery receipt, turn it into a pantry list with estimated expiry dates, and get reminded before things go bad — without downloading a native app.

What it does

EZXpire is a mobile-friendly web app that:

  1. Lets you sign in with GitHub
  2. Scans a receipt (camera or upload)
  3. Uses Gemini to extract line items and estimate shelf life
  4. Lets you review, edit, and save items to a personal pantry in MongoDB
  5. Shows what’s fresh / expiring soon / expired
  6. Optionally sends browser push reminders via a daily Vercel Cron job

How we built it

We split the work across four lanes so we could ship in parallel without constant merge fights:

Role Owned
Auth & data NextAuth (GitHub) + MongoDB Atlas pantry APIs
Camera / OCR Capture UI + on-device Tesseract fallback
AI / expiry Gemini parse pipeline + shelf-life heuristics
Product shell Pantry UI, scan flow glue, Web Push, Vercel deploy

Stack: Next.js (App Router) + TypeScript, Tailwind, Gemini API, MongoDB Atlas, Auth.js / NextAuth, Web Push (VAPID), Vercel Cron.

Core flow:

Receipt photo → Gemini (structure + expiry) → user review → MongoDB pantry
                                                      ↓
                              in-app badges + daily Web Push reminders

Built With

Share this project:

Updates