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

  1. User registers as donor
  2. Logs in to donor portal
  3. Selects “Make Donation”
  4. Chooses amount and purpose (e.g., “Education Fund”)
  5. Selects payment method (bKash)
  6. Completes payment
  7. Receives confirmation email with receipt
  8. Donation appears in dashboard

Use Case 2: Volunteer Registers for Event

  1. User registers as volunteer
  2. Browses available events
  3. Finds “Winter Clothing Distribution” event
  4. Clicks “Register”
  5. System checks capacity
  6. Confirms registration
  7. Receives event details via email
  8. Volunteer shows up and logs hours

Use Case 3: Beneficiary Requests Help

  1. User registers as beneficiary
  2. Fills assistance request form (financial aid for education)
  3. Uploads documents (school admission letter)
  4. Submits request
  5. Admin reviews and verifies
  6. Request approved
  7. Beneficiary receives notification
  8. Aid disbursed
  9. 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