Help The Needy
Online donation and volunteer coordination platform for social welfare in Bangladesh
Overview
Help The Needy is a comprehensive web-based platform designed to connect donors, volunteers, and beneficiaries for social welfare initiatives in Bangladesh. The system facilitates monetary donations, clothing distribution, volunteer recruitment, and transparency in charitable activities.
💻 GitHub: Help-The-Needy
🌐 Tech: PHP, MySQL, Bootstrap
🎯 Mission: Streamline charitable giving and volunteer coordination
Problem Statement
Challenges in Traditional Charity:
- ❌ Lack of Transparency: Donors unsure where funds go
- ❌ Fragmented Systems: Multiple platforms for different needs
- ❌ Volunteer Coordination: Difficult to organize and track volunteers
- ❌ Donation Tracking: No centralized record of contributions
- ❌ Trust Issues: Beneficiaries may not receive timely help
Solution: Unified platform with transparency, tracking, and accountability
Key Features
1. User Management
Three User Roles:
Donors
- Register and create donor profiles
- Make one-time or recurring donations
- Track donation history
- Receive tax receipts (for formal donations)
- View impact reports
Volunteers
- Sign up for volunteer opportunities
- Register for specific events/drives
- Log volunteer hours
- Receive certificates of participation
- Track contribution history
Beneficiaries
- Request assistance (financial, clothing, food)
- Submit need-based applications
- Receive notifications on approved aid
- Provide feedback on services
2. Donation System
Monetary Donations
// Donation processing
function process_donation($donor_id, $amount, $purpose) {
global $db;
// Payment gateway integration (bKash, Nagad, Rocket)
$payment_status = initiate_payment($amount);
if ($payment_status == 'SUCCESS') {
// Record donation
$query = "INSERT INTO donations
(donor_id, amount, purpose, date, status)
VALUES (?, ?, ?, NOW(), 'completed')";
$stmt = $db->prepare($query);
$stmt->bind_param('ids', $donor_id, $amount, $purpose);
$stmt->execute();
// Send receipt
send_receipt_email($donor_id, $amount);
return "Donation successful! Thank you.";
}
}
Payment Methods:
- bKash Mobile Banking
- Nagad
- Rocket
- Credit/Debit Cards
- Bank Transfer
Clothing Donations
- Schedule pickup for clothing items
- Categorize by type (men, women, children)
- Track distribution to beneficiaries
3. Volunteer Coordination
Event Management
// Create volunteer event
function create_event($title, $description, $date, $location, $volunteers_needed) {
global $db;
$query = "INSERT INTO events
(title, description, event_date, location, volunteers_needed, status)
VALUES (?, ?, ?, ?, ?, 'open')";
$stmt = $db->prepare($query);
$stmt->bind_param('ssssi', $title, $description, $date, $location, $volunteers_needed);
$stmt->execute();
// Notify registered volunteers
notify_volunteers($title, $date, $location);
}
Event Types:
- Food distribution drives
- Clothing donation camps
- Education support programs
- Disaster relief coordination
- Blood donation campaigns
Volunteer Registration
// Register for event
function register_volunteer($volunteer_id, $event_id) {
global $db;
// Check capacity
$capacity = check_event_capacity($event_id);
if ($capacity > 0) {
$query = "INSERT INTO event_volunteers (volunteer_id, event_id, status)
VALUES (?, ?, 'registered')";
$stmt = $db->prepare($query);
$stmt->bind_param('ii', $volunteer_id, $event_id);
$stmt->execute();
send_confirmation_email($volunteer_id, $event_id);
return "Registration successful!";
} else {
return "Event is full. Please check other events.";
}
}
4. Beneficiary Management
Request Assistance
- Submit need assessment form
- Upload supporting documents (optional)
- Specify assistance type (financial, food, clothing, education)
- Track application status
Verification Process
// Verify beneficiary request
function verify_request($request_id, $admin_id, $status, $comments) {
global $db;
$query = "UPDATE assistance_requests
SET status = ?, verified_by = ?, verification_date = NOW(),
admin_comments = ?
WHERE request_id = ?";
$stmt = $db->prepare($query);
$stmt->bind_param('sisi', $status, $admin_id, $comments, $request_id);
$stmt->execute();
// Notify beneficiary
notify_beneficiary($request_id, $status);
}
5. Transparency Dashboard
Donor Dashboard:
- Total donations made
- Breakdown by category (education, food, healthcare)
- Impact metrics (e.g., “Your $100 fed 20 families”)
- Leaderboard (optional, gamification)
Public Statistics:
- Total funds raised
- Number of beneficiaries helped
- Active volunteers
- Ongoing projects
6. Admin Panel
Administrative Functions:
- Approve/reject donation requests
- Verify beneficiary applications
- Manage volunteer events
- Generate reports (monthly, yearly)
- Export data (Excel, PDF)
- Monitor platform activity
System Architecture
Database Schema
-- Users table
CREATE TABLE users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role ENUM('donor', 'volunteer', 'beneficiary', 'admin') NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Donations table
CREATE TABLE donations (
donation_id INT PRIMARY KEY AUTO_INCREMENT,
donor_id INT,
amount DECIMAL(10, 2),
purpose VARCHAR(255),
payment_method VARCHAR(50),
status ENUM('pending', 'completed', 'failed'),
donation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (donor_id) REFERENCES users(user_id)
);
-- Events table
CREATE TABLE events (
event_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
description TEXT,
event_date DATE,
location VARCHAR(255),
volunteers_needed INT,
volunteers_registered INT DEFAULT 0,
status ENUM('open', 'closed', 'completed'),
created_by INT,
FOREIGN KEY (created_by) REFERENCES users(user_id)
);
-- Assistance Requests table
CREATE TABLE assistance_requests (
request_id INT PRIMARY KEY AUTO_INCREMENT,
beneficiary_id INT,
assistance_type ENUM('financial', 'food', 'clothing', 'education'),
description TEXT,
status ENUM('pending', 'approved', 'rejected', 'fulfilled'),
verified_by INT,
request_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (beneficiary_id) REFERENCES users(user_id),
FOREIGN KEY (verified_by) REFERENCES users(user_id)
);
Tech Stack
Backend: PHP 7.4+
Database: MySQL 8.0
Frontend: HTML5, CSS3, Bootstrap 4
JavaScript: jQuery, AJAX
Payment: bKash API, Nagad API
Email: PHPMailer
Server: Apache
User Interface
Homepage
- Hero section with mission statement
- Live donation counter
- Featured campaigns
- Success stories
- Call-to-action buttons (Donate, Volunteer, Get Help)
Donor Portal
- Personal dashboard
- Donation form (amount, purpose, payment method)
- Transaction history
- Tax receipts download
- Impact visualization (charts)
Volunteer Portal
- Available events calendar
- Registration forms
- My Events (registered, completed)
- Volunteer hours tracker
- Downloadable certificates
Admin Dashboard
// Admin analytics
function get_admin_stats() {
global $db;
$stats = [];
// Total donations
$query = "SELECT SUM(amount) as total FROM donations WHERE status='completed'";
$result = $db->query($query);
$stats['total_donations'] = $result->fetch_assoc()['total'];
// Active volunteers
$query = "SELECT COUNT(DISTINCT volunteer_id) as count
FROM event_volunteers WHERE status='registered'";
$result = $db->query($query);
$stats['active_volunteers'] = $result->fetch_assoc()['count'];
// Pending requests
$query = "SELECT COUNT(*) as count FROM assistance_requests WHERE status='pending'";
$result = $db->query($query);
$stats['pending_requests'] = $result->fetch_assoc()['count'];
return $stats;
}
Security Features
Authentication
// Secure login
function authenticate_user($username, $password) {
global $db;
$query = "SELECT user_id, password_hash, role FROM users WHERE username = ?";
$stmt = $db->prepare($query);
$stmt->bind_param('s', $username);
$stmt->execute();
$result = $stmt->get_result();
if ($user = $result->fetch_assoc()) {
if (password_verify($password, $user['password_hash'])) {
// Start session
$_SESSION['user_id'] = $user['user_id'];
$_SESSION['role'] = $user['role'];
return true;
}
}
return false;
}
Security Measures:
- Password hashing (bcrypt)
- SQL injection prevention (prepared statements)
- XSS protection (input sanitization)
- CSRF tokens for forms
- HTTPS enforcement
Sample Use Cases
Use Case 1: Donor Makes Donation
- User registers as donor
- Logs in to donor portal
- Selects “Make Donation”
- Chooses amount and purpose (e.g., “Education Fund”)
- Selects payment method (bKash)
- Completes payment
- Receives confirmation email with receipt
- Donation appears in dashboard
Use Case 2: Volunteer Registers for Event
- User registers as volunteer
- Browses available events
- Finds “Winter Clothing Distribution” event
- Clicks “Register”
- System checks capacity
- Confirms registration
- Receives event details via email
- Volunteer shows up and logs hours
Use Case 3: Beneficiary Requests Help
- User registers as beneficiary
- Fills assistance request form (financial aid for education)
- Uploads documents (school admission letter)
- Submits request
- Admin reviews and verifies
- Request approved
- Beneficiary receives notification
- Aid disbursed
- Beneficiary provides feedback
Impact Metrics (Hypothetical)
📊 Platform Stats:
- 5,000+ Registered Users
- $50,000+ Donated (BDT 50 Lakhs)
- 2,000+ Volunteer Hours logged
- 500+ Families helped
- 20+ Active Campaigns
Future Enhancements
🚀 Planned Features:
- Mobile app (Android/iOS)
- SMS notifications
- Multi-language support (Bangla + English)
- Blockchain for donation transparency
- AI-based beneficiary need prediction
- Integration with government welfare programs
Status: Academic/Community Project
Target: Bangladesh Social Welfare
License: MIT
Contributors: Open source