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:
- Lets you sign in with GitHub
- Scans a receipt (camera or upload)
- Uses Gemini to extract line items and estimate shelf life
- Lets you review, edit, and save items to a personal pantry in MongoDB
- Shows what’s fresh / expiring soon / expired
- 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
Log in or sign up for Devpost to join the conversation.