MealMatch
Inspiration
MealMatch was inspired by a local mismatch we kept seeing: restaurants often end the day with quality surplus food, while students and nearby residents still struggle with access to affordable meals. We wanted to build a practical coordination layer that turns waste into pickups quickly and reliably.
What it does
MealMatch is a role-based food recovery platform for recipients, restaurants, partners, and admins.
- Recipients browse live listings, claim food, track reservations in My Claims, and cancel confirmed claims.
- Restaurants post/manage listings with pickup windows, dietary tags, address/location, and optional pickup slots.
- Community partners can bulk-claim listings for group distribution.
- Admins monitor listings, claims, login audit activity, and platform stats.
- Map-based pickup navigation supports transport mode selection (drive/walk/bike/transit), with backend telemetry for map error diagnostics.
How we built it
- Frontend: React + Vite + React Router + MapLibre (
react-map-gl) with role-based protected routes. - Backend: FastAPI with JWT auth, RBAC, standardized API envelopes, and claim/status guardrails.
- Data: SQLite-backed persistence for users and listing/claim state; repository abstraction supports future DynamoDB extension.
- Logic: Smart matching score + demand prediction endpoint.
- Quality: CI checks and broad backend tests for auth, API contracts, claims/listings, and E2E happy paths.
Challenges we ran into
- Stabilizing map/navigation behavior around invalid coordinates and async location events.
- Keeping UI state fully aligned with backend truth across refreshes and post-action updates.
- Hardening claim flows for edge cases (duplicate claims, over-quantity, slot-required claims, cancellation restore behavior).
- Resolving auth integration issues (token lifecycle, role-gating, CORS preflight behavior, JWT package conflicts).
Accomplishments that we're proud of
- Full multi-role experience with real route protection and role-aware pages.
- Robust claim lifecycle with quantity validation, duplicate prevention, slot validation, bulk partner claims, and cancellation recovery.
- Consistent backend response/error contracts across endpoints.
- Persistent local storage architecture with clean path to cloud-backed user storage.
- Expanded automated test coverage and stronger operational reliability.
What we learned
- Backend-truth data flow is critical for reliable dashboards and feeds.
- Mapping UX needs defensive engineering at every layer.
- Standardized API contracts reduce frontend complexity and speed up debugging.
- Building role-specific workflows early prevents expensive rewrites later.
What's next for MealMatch
- Improve live navigation depth and transit-quality routing.
- Advance smart matching and demand prediction with stronger historical signals.
- Expand partner workflows (priority access tuning and group coordination tools).
- Continue UI polish for accessibility and approval-readiness.
- Implement production cloud persistence paths (DynamoDB-ready repository backend).
Built With
- api
- css
- html
- javascript
- python
- react
- vite

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