A DBMS Mini Project built with Go Fiber (Backend) + React TypeScript (Frontend)
The Leftover Food Distribution Website is a platform designed to reduce food wastage by connecting donors (individuals, restaurants, organizations) with recipients who need food. Donors can list surplus food, and recipients can browse, request, and receive food efficiently.
This project includes:
- Backend: Go Fiber
- Frontend: React + TypeScript + TailwindCSS
- Database: PostgreSQL
VITE_API_URL=http://localhost:42069/api/v1/
DSN=<your_postgres_dsn> JWT_SECRET=<your_jwt_secret>
git clone https://github.com/Risbern21/food_distribution.git
#setup the frontend
cd frontend
npm i
npm run dev
cd ..
#setup the backend
cd backend
go mod tidy
go run cmd/main.go- JWT-based authentication
- Roles: Donor, Recipient, Admin
- Create + manage food donations
- Add quantity, description, expiry, pickup time
- Status updates (Available, Picked, Expired)
- Real-time search and category filtering
- Visibility of food based on expiry time
- Recipients can request donations
- Donors/Admin can accept or reject
- Track pickup and delivery status
- Confirmation logs
- Ratings after successful delivery
- Comments for transparency and trust
- React (TypeScript)
- TailwindCSS (no PostCSS)
- Vite
- Go (Golang)
- Fiber Framework
- RESTful APIs
- JWT Authentication
- PostgreSQL
- AWS support for deployment
- Docker support for deployment
| Field | Description |
|---|---|
| user_id | Primary key |
| username | User name |
| Unique email | |
| hashed_password | Encrypted password |
| phone | Contact no. |
| address | User address |
| user_type | donor / recipient / admin |
| donation_id | donor_id | title | description | quantity | units | pickup_time | expiry_time | status |
| distribution_id | donation_id | recipient_id | delivery_status | delivered_at | pickup_confirmed |
| feedback_id | distribution_id | user_id | rating | comments | created_at |