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

Share this project:

Updates