foodlink
Food-rescue coordination platform connecting donors, receivers, and volunteers through one tracked delivery workflow.

overview
FoodLink helps businesses and individuals redirect safe surplus food to charities, shelters, families, and community organizations. Donors list food, volunteers match it with receivers, both parties approve the proposal, then the volunteer completes pickup and delivery.
Seeded role accounts make the complete workflow explorable without registration.
key features
donor
- listingsPublish food quantity, expiry, pickup location, and image.
- approvalAccept or reject volunteer-created delivery proposals.
- trackingFollow matched donations through pickup and delivery.
receiver
- availabilityAppear as a destination for suitable donations.
- approvalIndependently accept or reject proposed deliveries.
- coordinationReceive live notifications and chat updates.
volunteer
- matchingPair available donations with suitable receivers.
- deliveryMove pickups through assigned, picked-up, and delivered states.
- navigationCompare locations on a map, then hand off to Google Maps.
platform
- role isolationGate dashboards and actions by JWT-backed user role.
- two-party consentCreate pickups only after donor and receiver approval.
- live updatesStream notifications and chat through Server-Sent Events.
technology stack
- interface
- Next.js
- TypeScript
- Tailwind CSS
- services
- Go
- GORM
- OpenAPI
- data
- PostgreSQL
- Cloudinary
- delivery
- AWS
- Terraform
- Vercel
- GitHub Actions
engineering highlights
multi-party workflow
Explicit donation, proposal, and pickup states enforce role permissions, valid transitions, and independent donor and receiver approval.
real-time coordination
Server-Sent Events deliver notification and chat updates without adding a more complex bidirectional transport to a primarily server-driven workflow.
contract-driven delivery
OpenAPI generates Go types and handlers from a shared contract. Docker, CI, and Terraform carry the same system from local development to AWS and Vercel.