RePlate is a multi-role Next.js and Supabase scaffold for the food rescue workflow described in docs/directions.md. It routes surplus food from donors to food banks, assigns volunteer pickups, tracks impact, and turns completed rescues into volunteer rewards. See docs/product.md for auth paths, scenarios, and optional mobile companion notes.
Community problems track
Aarav Jalan, Albert Kim, Pranav Kota, Ray Sun
- Supabase schema in
supabase/schema.sql - Seed script in
scripts/seed-demo.ts - Volunteer rewards, impact ledger, reliability updater
- Ops dashboard, volunteer PWA, redeem page, and public impact page
- FastAPI expiry classifier in
services/expiry-classifier/expiry_classifier_service.py - Internal docs in
docs/
- A donor posts surplus food through the restaurant UI or inbound SMS flow.
- The pipeline parses the donation, matches it to a food bank need, and selects a route.
- A volunteer can be assigned automatically or can claim a mission from the volunteer experience.
- The pickup is completed and logged.
- Impact totals, donor reliability, volunteer points, tier changes, and rewards update automatically.
- Next.js 16
- React 18
- TypeScript
- Supabase
- Tailwind CSS
The usage of libraries, frameworks, or open-source code in your project is allowed. However, you must credit them in the README.md file and clearly distinguish your contributions.
This project builds on open-source software and hosted services, including but not limited to:
- Next.js, React, TypeScript — application framework and language
- Tailwind CSS, PostCSS, Autoprefixer — styling and build tooling
- Supabase (
@supabase/supabase-js,@supabase/ssr) — database, auth, and realtime - Leaflet & react-leaflet — maps
- FastAPI & Uvicorn — expiry classifier HTTP service
- canvas-confetti, qrcode.react — UI enhancements
- tsx — TypeScript execution for scripts
See package.json and services/expiry-classifier/requirements.txt for full dependency lists and versions. Each package retains its own license; refer to the respective projects for terms.
Everything not covered by the third-party items above—including product design, multi-role workflows (donor, food bank, volunteer, ops), database schema and seed data, API routes and integrations, dashboards and PWA-style volunteer experience, agent/orchestration logic, rewards and impact tracking, and the expiry classifier service wiring—is original work by the RePlate team listed above.
/restaurantRestaurant dashboard for donor profile setup, posting food, editing donor details, and viewing active/completed donations./food-bankFood bank dashboard for profile setup, demand management, urgent needs, accepted food types, and incoming deliveries./volunteerVolunteer hub listing available volunteer profiles and sign up./volunteer/[id]Volunteer profile/dashboard with mission claiming, rescue progress, rewards, impact history, profile editing, delivery confirmation, and tier-upgrade feedback./dashboardOperations dashboard for active pickups, live agent traces, open needs, and donor nudge suggestions.
The current volunteer flow includes:
- Volunteer hub and profile pages
- Availability toggle
- Mission queue for matched pickups
- Mission claim action
- Active route and delivery flow
- Photo upload for proof of delivery
- Points and tier progression
- Coupon redemption
- Reward/tier feedback after completed rescues
The ops dashboard is designed as a live operational view and includes:
- Active pickups
- Open need coverage
- Agent activity logs
- Donors to nudge
When server-side Supabase config is missing, the app falls back to safe demo/fallback data where possible.