Inspiration

Every day, good food gets wasted while nearby shelters struggle to meet meal demand. RescueBite was inspired by that gap: food exists, need exists, but coordination is broken. We wanted to build a practical, local-first system that helps shelters request food, restaurants respond quickly, and delivery partners close the loop.

What it does

RescueBite is a real-time coordination platform for food rescue:

  • Shelters post food requests.
  • Restaurants view requests, accept/decline, and publish surplus posts.
  • Once accepted, shelters can assign a delivery partner.
  • Restaurants track pickup progression (Processing -> Picked Up -> Received).
  • Requests auto-expire if uncollected after 3 hours.
  • Email notifications keep both sides informed on key state changes.
  • Dashboards update meal impact when deliveries complete.

How we built it

  • Next.js App Router + TypeScript for frontend and API routes.
  • MongoDB for users, posts, claims, and request lifecycle state.
  • Role-based UX for shelter, restaurant, and volunteer flows.
  • Polling-based sync (5s) for near real-time status updates.
  • Resend email integration for workflow notifications.
  • Tailwind + reusable UI components for fast iteration.

Challenges we ran into

  • Keeping state transitions consistent across multiple roles.
  • Avoiding stale UI when statuses changed quickly.
  • Handling legacy status values while introducing new lifecycle states.
  • Permission/auth issues during deployment and repo push workflows.
  • Balancing speed of delivery with type-safe changes.

Accomplishments that we're proud of

  • Built an end-to-end multi-actor workflow, not just static forms.
  • Added synchronous status visibility for both shelter and restaurant.
  • Implemented action-triggered notifications that mirror business events.
  • Added auto-expiry safeguards to prevent stale operational tasks.
  • Kept codebase type-safe despite rapid iteration.

What we learned

  • Workflow products live or die on state clarity.
  • “Real-time enough” can be achieved pragmatically with reliable polling.
  • Clear role boundaries reduce logic bugs.
  • Notifications should be event-driven, not page-driven.
  • Fast feedback loops (typecheck + route-level testing) save time later.

What's next for RescueBite

  • WebSocket/SSE real-time updates instead of polling.
  • Stronger audit trails and activity timeline per request.
  • Better routing optimization for delivery partners.
  • In-app notifications + SMS support.
  • Admin analytics (waste avoided, response time, completion SLA).
  • Production hardening: auth middleware, rate limits, monitoring, CI/CD, and full deployment automation.
Share this project:

Updates