Skip to content

thirumani-vihaan/ImpactForge

Repository files navigation

ImpactForge

A modern, scalable, and responsive Volunteer Management & Community Engagement Platform built with Flutter and Firebase.

ImpactForge empowers organizations to coordinate volunteer activities in real-time, verify task submissions securely, and gamify community contributions through progress dashboards and leaderboards. Designed with a clean, responsive layout suited for both web and mobile clients.


🚀 Key Features

  • Secure Authentication: Dual-mode login supporting Email/Password and Google OAuth.
  • Real-time Task Allocation: Interactive task boards for volunteers to discover and join local community drives.
  • Multimedia Evidence Verification: Secure report submission with image uploading for task completion verification.
  • Impact Analytics Dashboard: Real-time charts demonstrating volunteer metrics, hours spent, and overall community impact.
  • Gamification & Leaderboard: Global ranking system based on active points, milestones, and reward badges.
  • Administrative Suite: Dedicated admin dashboard for creating tasks, reviewing submissions, elevating volunteer roles, and monitoring operations.

🛠️ Technology Stack

  • Frontend: Flutter (Dart)
  • State Management & Routing: GetX (reactive state, dependency injection, and clean hash-based web routing)
  • Styling & UI: Material 3 UI design, custom glassmorphic cards, responsive overlays, and custom Google Fonts typography
  • Database: Cloud Firestore (Real-time NoSQL database)
  • Backend Storage: Firebase Storage (Secure hosting for submitted completion images)
  • Security: Attribute-Based Access Control (ABAC) enforced via granular Cloud Firestore Security Rules

🏗️ System Architecture

The project follows a clean architecture separating the presentation layer, reactive state controllers, and the cloud data source layer.

graph TD
    %% Styling
    classDef default fill:#f9f9f9,stroke:#333,stroke-width:1px,color:#111;
    classDef presentation fill:#e1f5fe,stroke:#0288d1,stroke-width:1.5px,color:#0b3c5d;
    classDef controller fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px,color:#0f5112;
    classDef backend fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px,color:#684a01;

    subgraph Presentation [Presentation Layer - Flutter]
        UI[App Shell / Screens]:::presentation
    end

    subgraph State [State & Business Logic - GetX]
        AC[AuthController]:::controller
        TC[TaskController]:::controller
        LC[LeaderboardController]:::controller
    end

    subgraph Cloud [Data Source Layer - Firebase]
        FA[Firebase Authentication]:::backend
        FS[(Cloud Firestore)]:::backend
        FST[(Firebase Storage)]:::backend
    end

    %% Interactions
    UI <--> AC
    UI <--> TC
    UI <--> LC

    AC <--> FA
    TC <--> FS
    LC <--> FS
    
    UI -.-> FST
    FST -.-> FS
Loading

📊 Database Schema (Firestore Collections)

├── users (Key: email)
│   ├── name (String)
│   ├── role (String: 'volunteer' | 'admin')
│   ├── points (Number)
│   └── joinDate (Timestamp)
│
├── tasks (Key: auto-generated ID)
│   ├── title (String)
│   ├── description (String)
│   ├── pointsAwarded (Number)
│   └── deadline (Timestamp)
│
├── active_tasks (Key: auto-generated ID)
│   ├── taskId (String)
│   ├── userEmail (String)
│   ├── status (String: 'ongoing' | 'submitted' | 'verified')
│   └── assignedAt (Timestamp)
│
└── submissions (Key: auto-generated ID)
    ├── taskId (String)
    ├── userEmail (String)
    ├── description (String)
    ├── imageUrl (String)
    └── submittedAt (Timestamp)

📥 Getting Started

Prerequisites

  • Flutter SDK (v3.0.0 or higher)
  • Dart SDK (v3.0.0 to v4.0.0)

Installation & Run

  1. Clone the repository:

    git clone https://github.com/yourusername/impactforge.git
    cd impactforge
  2. Retrieve package dependencies:

    flutter pub get
  3. Configure Firebase:

    • Place your google-services.json inside android/app/ for Android.
    • Web parameters are preconfigured inside lib/constants/app_config.dart.
  4. Build and run locally:

    # Run app in default browser
    flutter run -d chrome

📱 Application Preview

Once you place your captured screenshots in the screenshots/ directory, they will be displayed here in high resolution:

Onboarding & Security

Splash Screen

Splash Screen Preview
Login Screen

Login Screen Preview
Signup Screen

Signup Screen Preview

Volunteer Lifecycle

Home Dashboard

Home Dashboard Preview
Tasks List

Tasks List Preview
Task Details

Task Details Preview

Submissions & Analytics

Task Submission

Task Submission Preview
Impact Analytics

Impact Analytics Preview

User Settings & Profile

Profile Screen

Profile Screen Preview
Edit Profile

Edit Profile Preview
Account Settings

Account Settings Preview

🛡️ License

Distributed under the MIT License. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors