Connecting Donors, NGOs, and Volunteers to Reduce Food Waste
- About the Project
- Key Features
- How AhaarBonton Works
- Project Structure
- Tech Stack
- Getting Started
- User Roles
- Contributing
AhaarBonton (ΰ¦ΰ¦Ήΰ¦Ύΰ¦° বণΰ§ΰ¦ΰ¦¨) is a web-based surplus food redistribution platform built specifically for the context of Bangladesh. Every day, significant amounts of food go to waste at restaurants, weddings, corporate events, and households, while many people struggle to meet their daily nutritional needs.
This platform provides a structured, community-driven solution to that contradiction. Donors can post surplus food listings, NGOs can claim and coordinate pickups, and volunteers can register to assist with deliveries β all through a single, unified platform designed to work within Bangladesh's existing social and organizational fabric.
"Ahaar" (ΰ¦ΰ¦Ήΰ¦Ύΰ¦°) means food, and "Bonton" (বণΰ§ΰ¦ΰ¦¨) means distribution β together, a name that speaks for itself.
- π₯ Food Donation Listings β Donors post surplus food with title, quantity, category, image, and GPS-based pickup location
- π’ Priority-Sorted NGO Dashboard β NGOs browse available food sorted by expiry urgency, with category filters and live countdowns
- π΄ Volunteer Delivery System β Volunteers accept open delivery jobs and manage pickups/drop-offs from their dashboard
- π€ Flexible Authentication β Register and log in using either Email or Phone Number, with full Forgot Password support
- π Dual OTP Delivery Verification β Two separate OTPs (Pickup OTP from Donor, Delivery OTP from NGO) ensure food is verifiably picked up and delivered β not just claimed
- π GPS Auto-Location β One-tap location detection auto-fills addresses using the browser's GPS and OpenStreetMap Nominatim
- πΊοΈ Interactive Food Map & Heatmap β View all available donations on a live map, or see donation density by area (Leaflet.js + OpenStreetMap)
- β Trust Score System β Both Donors and Volunteers build a 0β100 trust score based on successful, on-time deliveries
- π Community Leaderboard β Dual-view leaderboard ranking top Donors & Volunteers by Activity (donations/deliveries) or by Trust Score
- π¬ Ratings & Reviews β NGOs rate Donors & Volunteers, Donors rate Volunteers β visible on public profiles
- π© Report System β Users can report inappropriate food posts or fraudulent accounts for Admin review
- π Transparency Dashboard β A public-facing impact page with real-time statistics on food saved, deliveries completed, and communities served
- πΌοΈ Image Uploads β Food listings and user profiles support photo uploads via Pillow
- πΆ Basic Offline Support (PWA) β Service Worker caches key pages for smoother reloads on unstable connections
- π οΈ Custom Admin Panel β A dedicated dashboard for monitoring users, food posts, and platform-wide statistics
AhaarBonton follows a simple, transparent, and verified flow from food surplus to final delivery.
A donor (restaurant, household, or event organizer) logs in and creates a food post with:
- Food title, description, and quantity
- Category (Cooked / Raw / Packaged / Bakery)
- Pickup location (auto-filled via GPS)
- Expiry date and time
- Optional food image
The post immediately becomes visible to all registered NGOs on their dashboard.
NGOs browse available food sorted by expiry priority (soonest expiring first). They can filter by category and see a live expiry countdown on each card.
When an NGO finds suitable food, they send a collection request with an optional message to the donor.
The donor reviews incoming requests and approves or rejects them.
On approval, the system automatically:
- Marks the food post as Claimed
- Creates a Delivery record
- Generates two unique 6-digit OTPs:
Pickup OTPβ visible to the Donor (given to Volunteer at pickup)Delivery OTPβ sent to the NGO via email (given to Volunteer at delivery)
Volunteers browse open delivery jobs and accept one.
Each job shows:
- Pickup location (Donor's address)
- Drop-off location (NGO name)
- Food quantity and expiry time
The volunteer visits the donor and collects the food. The Donor shares the Pickup OTP with the volunteer.
The volunteer enters the Pickup OTP in their dashboard:
- β Correct OTP β Pickup confirmed, status updates to Picked Up
- β Wrong OTP β Error shown, volunteer must try again
At this point, the NGO receives an email notification: "Food is on the way! Your Delivery OTP: XXXXXX"
The volunteer arrives at the NGO and hands over the food. The NGO shares the Delivery OTP with the volunteer.
The volunteer enters the Delivery OTP in their dashboard:
- β Correct OTP β Delivery confirmed, status updates to Delivered
- β Wrong OTP β Error shown
Once delivery is confirmed, the system automatically updates:
| What | Result |
|---|---|
| Food Post Status | Delivered |
| Food Request Status | Completed |
| Donor & Volunteer Trust Score | +5 Points |
| Leaderboard & Transparency Dashboard | Updated With New Delivery |
| Donor Notification | Email Confirmation Sent |
AhaarBonton follows a multi-app Django architecture β functionality is split into four focused apps (core, users, food, delivery) instead of one monolithic app, keeping models and services organized by domain.
Ahaar_Bonton/
β
βββ ahaarbonton/ # Django project package (config)
β βββ __init__.py
β βββ settings.py
β βββ urls.py
β βββ asgi.py
β βββ wsgi.py
β
βββ core/ # Shared models, views & core logic
β βββ admin.py
β βββ backends.py
β βββ forms.py
β βββ models.py
β βββ urls.py
β βββ views.py
β βββ migrations/
β βββ services/
β β βββ matching.py
β β βββ notification.py
β βββ management/
β βββ commands/
β βββ expire_food.py
β
βββ users/ # Authentication & account app
β βββ backends.py
β βββ forms.py
β βββ models.py
β βββ services/
β
βββ food/ # Food listings & donation app
β βββ forms.py
β βββ models.py
β βββ services/
β βββ matching.py
β
βββ delivery/ # Delivery & logistics app
β βββ models.py
β βββ services/
β βββ notification.py
β
βββ templates/
β βββ base.html
β βββ home.html
β βββ transparency.html
β βββ leaderboard.html
β βββ food_map.html
β βββ heatmap.html
β βββ offline.html
β βββ 403.html
β βββ 404.html
β βββ auth/
β β βββ login.html
β β βββ register.html
β β βββ profile.html
β β βββ password_reset.html
β β βββ password_reset_done.html
β β βββ password_reset_confirm.html
β β βββ password_reset_complete.html
β β βββ password_reset_email.html
β β βββ password_reset_subject.txt
β βββ donor/
β β βββ dashboard.html
β β βββ add_food.html
β β βββ edit_food.html
β β βββ requests.html
β βββ ngo/
β β βββ dashboard.html
β β βββ my_requests.html
β β βββ request_confirm.html
β βββ volunteer/
β β βββ dashboard.html
β βββ admin_panel/
β β βββ dashboard.html
β βββ profiles/
β β βββ user_profile.html
β βββ reports/
β β βββ report_post.html
β β βββ report_user.html
β βββ partials/
β βββ rating_form.html
β
βββ static/
β βββ manifest.json
β βββ css/
β β βββ style.css
β βββ js/
β β βββ main.js
β β βββ service-worker.js
β βββ img/
β βββ favicon/
β
βββ media/ # User-uploaded files (food images, profile pics)
βββ Assets/ # README banners & screenshots
β
βββ db.sqlite3
βββ manage.py
βββ requirements.txt
βββ .gitignore
βββ README.md
| Layer | Technology |
|---|---|
| Backend Framework | Django 6.0.5 |
| Language | Python 3.13.0 |
| Database | SQLite (default) |
| Frontend | HTML5, CSS3, JavaScript |
| Maps | OpenStreetMap + Leaflet.js (Free, no API key) |
| Image Handling | Pillow |
| Templating | Django Templates |
| Offline Support | Service Worker (PWA) |
- Python 3.10 or higher
- pip
1. Clone the repository
git clone https://github.com/TajkirHossen-14/AhaarBonton.git
cd Ahaar_Bonton2. Create and activate a virtual environment
# Windows
python -m venv venv
venv\Scripts\activate
# Linux / macOS
python -m venv venv
source venv/bin/activate3. Install dependencies
pip install -r requirements.txt4. Apply migrations
python manage.py migrate5. Create a superuser (Optional)
python manage.py createsuperuser6. Run the development server
python manage.py runserverNow open your browser and visit http://127.0.0.1:8000 π
| Role | Description |
|---|---|
| π€ Donor | Individuals, restaurants, or businesses that post surplus food |
| π’ NGO | Organizations that claim food donations and manage distribution |
| π΄ Volunteer | Individuals who help with pickup and delivery of food |
| π οΈ Admin | Manages users, monitors food posts, and oversees platform activity |
Contributions are welcome! If you'd like to improve the platform:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request

