Skip to content

naikmubashir/aechan-huend-gaash-web

Repository files navigation

Aechan Huend Gaash - Visual Assistance Platform

A comprehensive web-based platform that connects blind and low-vision users with sighted volunteers and AI assistance for real-time visual support. Built with Next.js 15, this accessible application enables video calls between users and volunteers, plus AI-powered image descriptions with advanced sound notifications.

πŸ”— Live Demo

Visit the Live Application

🌟 Features

  • Two User Roles: VI Users (visually impaired) and Volunteers with role-based dashboards
  • Real-time Video Calls: WebRTC-powered two-way video and audio communication
  • AI Assistant: Google Gemini-powered image analysis with text-to-speech capabilities
  • Smart Sound System: Audio notifications for call events (incoming, outgoing, connected, ended)
  • Volunteer Matching: Real-time broadcast system for connecting available volunteers
  • Session Management: Persistent call sessions with reconnection support
  • User Statistics: Call tracking, duration monitoring, and volunteer activity metrics
  • Multi-language Support: Interface and audio descriptions in 10+ languages
  • Full Accessibility: WCAG 2.1 AA compliance with screen reader support
  • Secure Authentication: NextAuth.js with role-based access control

οΏ½ Screenshots

Welcome Page

The main landing page where users choose their path - either seeking visual assistance or volunteering to help others. This accessible interface clearly presents both options with descriptive text.

Welcome Page

User Registration

Role-based signup pages tailored for each user type, ensuring the registration process is optimized for the specific needs of VI users and volunteers.

VI User Signup

VI User Signup

Volunteer Signup

Volunteer Signup

User Authentication

Accessible signin pages designed for each user role with clear navigation and form validation.

VI User Signin

VI User Signin

Volunteer Signin

Volunteer Signin

VI User Dashboard

The dashboard for visually impaired users provides quick access to essential features including starting video calls with volunteers and using the AI assistant for image analysis.

VI User Dashboard

Volunteer Dashboard

Volunteers can toggle their availability, view incoming call requests, and track their volunteer statistics through this dedicated interface.

Volunteer Dashboard

User Profile

A comprehensive profile management interface where users can update their preferences, change passwords, and manage account settings with full accessibility support.

User Profile

Video Call Interface

The real-time video call interface connecting VI users with volunteers, featuring accessible controls and clear visual indicators for call status.

Video Call Interface

πŸš€ Getting Started

Prerequisites

  • Node.js 18+: Latest LTS version recommended
  • MongoDB: Local instance or MongoDB Atlas cloud database
  • Google Gemini API Key: For AI image analysis functionality
  • Modern Browser: Chrome, Firefox, Safari, or Edge with WebRTC support

Installation

  1. Clone the repository

    git clone <repository-url>
    cd aechan-huend-gaash
  2. Install dependencies

    npm install
  3. Environment Configuration Create .env.local with your configuration:

    # Database
    MONGODB_URI=mongodb://localhost:27017/aechan-huend-gaash
    
    # Authentication
    NEXTAUTH_URL=http://localhost:3000
    NEXTAUTH_SECRET=your-secure-secret-key-minimum-32-characters
    
    # AI Services
    GOOGLE_API_KEY=your-google-gemini-api-key
  4. Start the development server

    npm run dev
  5. Access the application Open http://localhost:3000 in your browser

Available Scripts

  • npm run dev - Start development server with hot reload
  • npm run build - Build production application
  • npm start - Start production server
  • npm run lint - Run ESLint for code quality checks

πŸ“± Usage Guide

For VI Users (Visually Impaired)

  1. Account Setup: Click "I need visual assistance" β†’ Create account and select language
  2. Dashboard Features: Call volunteers, use AI assistant, manage profile, view history
  3. During Calls: Enable camera to share view, use audio to describe needs

For Volunteers

  1. Account Setup: Click "I would like to volunteer" β†’ Create account and set availability
  2. Dashboard Features: Toggle availability, accept calls, view statistics
  3. During Calls: Provide clear descriptions, ask clarifying questions, be supportive

AI Assistant Usage

  • Upload images or use camera capture
  • Receive detailed text descriptions with audio playback
  • Re-analyze images with different perspectives

πŸ—οΈ Technology Stack

  • Frontend: Next.js 15, React 19, Tailwind CSS, Radix UI
  • Backend: Next.js API Routes, Socket.IO, NextAuth.js v5
  • Database: MongoDB with Mongoose ODM
  • Real-time: WebRTC for video calls, Socket.IO for signaling
  • AI: Google Gemini API for image analysis
  • Audio: Web Audio API for sound notifications

πŸ“‚ Project Structure

aechan-huend-gaash/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ sounds/                 # Audio notification files
β”‚   β”‚   β”œβ”€β”€ incoming-call.mp3   # Volunteer incoming call alert
β”‚   β”‚   β”œβ”€β”€ outgoing-call.mp3   # VI user connection sound
β”‚   β”‚   β”œβ”€β”€ call-connected.mp3  # Success notification
β”‚   β”‚   └── call-ended.mp3      # Call termination sound
β”‚   └── [static files]          # Icons, images, favicon
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                    # Next.js App Router pages
β”‚   β”‚   β”œβ”€β”€ api/                # API routes
β”‚   β”‚   β”‚   β”œβ”€β”€ ai/             # AI image analysis endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/           # Authentication routes
β”‚   β”‚   β”‚   β”œβ”€β”€ user/           # User management APIs
β”‚   β”‚   β”‚   └── volunteer/      # Volunteer-specific APIs
β”‚   β”‚   β”œβ”€β”€ auth/               # Authentication pages
β”‚   β”‚   β”œβ”€β”€ call/               # Video call interface
β”‚   β”‚   β”œβ”€β”€ dashboard/          # User dashboards
β”‚   β”‚   β”‚   β”œβ”€β”€ vi-user/        # VI User dashboard
β”‚   β”‚   β”‚   └── volunteer/      # Volunteer dashboard
β”‚   β”‚   β”œβ”€β”€ ai-assistant/       # AI image analysis interface
β”‚   β”‚   β”œβ”€β”€ profile/            # User profile management
β”‚   β”‚   └── [layout & global files]
β”‚   β”œβ”€β”€ components/             # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ providers/          # Context providers
β”‚   β”‚   └── ui/                 # Base UI components
β”‚   β”œβ”€β”€ contexts/               # React contexts (if any)
β”‚   β”œβ”€β”€ hooks/                  # Custom React hooks
β”‚   β”‚   └── useSocket.js        # Socket.IO connection hook
β”‚   β”œβ”€β”€ lib/                    # Utility libraries
β”‚   β”‚   β”œβ”€β”€ auth.js             # NextAuth configuration
β”‚   β”‚   β”œβ”€β”€ db.js               # Database connection
β”‚   β”‚   β”œβ”€β”€ env.js              # Environment validation
β”‚   β”‚   β”œβ”€β”€ utils.js            # General utilities
β”‚   β”‚   └── sounds.js           # Audio management system
β”‚   └── models/                 # Database schemas
β”‚       β”œβ”€β”€ User.js             # User data model
β”‚       β”œβ”€β”€ Call.js             # Call session model
β”‚       └── Session.js          # Session management
β”œβ”€β”€ server.js                   # Custom server with Socket.IO
β”œβ”€β”€ next.config.mjs             # Next.js configuration
β”œβ”€β”€ tailwind.config.js          # Tailwind CSS configuration
β”œβ”€β”€ eslint.config.mjs           # ESLint configuration
└── [config files]             # Package.json, etc.

πŸ”§ API Reference

Authentication Endpoints

  • POST /api/auth/register - User registration
  • POST /api/auth/signin - User authentication
  • GET /api/auth/session - Session validation

User Management

  • GET /api/user/profile - Get user profile
  • PUT /api/user/profile - Update user profile
  • POST /api/user/change-password - Change password
  • GET /api/user/stats - Get user statistics

Volunteer Management

  • PUT /api/volunteer/availability - Toggle availability status

AI Services

  • POST /api/ai/analyze - Analyze uploaded images

Socket Events

Client β†’ Server

  • join - User joins with role and profile data
  • start_call - VI user requests assistance
  • accept_call - Volunteer accepts call request
  • end_call - Either party ends the call
  • joinRoom - Join specific call room
  • offer, answer, ice-candidate - WebRTC signaling

Server β†’ Client

  • incoming_call - Notify volunteers of call requests
  • call_connected - Notify both parties of successful connection
  • call_ended - Notify call termination
  • call_taken - Notify call was accepted by another volunteer
  • user_reconnected - Notify of reconnection events

πŸ› οΈ Development

Development Setup

For detailed development setup, see the Getting Started section above.

Code Standards

  • JavaScript: ES6+ with proper error handling
  • CSS: Tailwind utilities with semantic class names
  • Accessibility: WCAG 2.1 AA compliance required
  • Performance: Optimize images, lazy load components
  • Security: Validate all inputs, sanitize data

πŸ†˜ Support

  • Issues: Report bugs via GitHub Issues
  • Documentation: Check inline code comments
  • Support: Contact maintainers for critical issues

Built with ❀️ for accessibility and inclusion by Naik Mubashir

About

Connects blind and low-vision users with sighted volunteers and AI assistance for real-time visual support

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published