Skip to content
Notifications You must be signed in to change notification settings

devaforgestudios-afk/HangO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0e49e20Β Β·Β Β· Oct 10, 2025

History

22 Commits
Oct 6, 2025
Oct 6, 2025
Oct 10, 2025
Sep 29, 2025
Oct 10, 2025
Oct 6, 2025
Sep 11, 2025
Oct 6, 2025
Oct 10, 2025
Sep 29, 2025
Oct 6, 2025
Oct 10, 2025
Sep 29, 2025
Oct 6, 2025
Sep 26, 2025
Oct 10, 2025
Sep 29, 2025

Repository files navigation

πŸŽ₯ HangO - Modern Video Meeting Platform

HangO is a feature-rich, real-time video conferencing platform that enables seamless audio/video calls, screen sharing, and collaborative meetings with an intuitive user interface.

✨ Features

πŸ” Authentication System

  • Multiple Login Options: Email/Password, GitHub OAuth, Google OAuth
  • Account Management: User registration with email verification
  • Profile Management: Avatar upload, username editing, phone number support
  • Session Management: Persistent login sessions across browser restarts
  • Password Recovery: Secure password reset via email

πŸŽ₯ Video Conferencing

  • Real-time Media: SFU-based media using LiveKit (recommended). The project previously used a P2P mesh but has migrated to an SFU for scalability and reliability.
  • Screen Sharing: Share your entire screen or specific applications
  • Meeting Controls: Mute/unmute audio, enable/disable video, toggle screen share
  • Multi-participant Support: Join meetings with multiple users simultaneously
  • Responsive UI: Works seamlessly on desktop and mobile devices

πŸ’¬ Communication Features

  • Live Chat: Real-time messaging during meetings
  • Chat History: Persistent message history for each meeting
  • User Presence: See who's online and their media status
  • Meeting Notifications: Audio/visual notifications for participant actions

🏒 Meeting Management

  • Easy Meeting Creation: Generate unique meeting codes instantly
  • Pre-meeting Lobby: Join meetings with device testing capabilities
  • Meeting Analytics: Track meeting duration, participants, and engagement
  • Meeting History: View past meetings and statistics in dashboard

🎨 User Experience

  • Modern UI: Clean, gradient-based design with smooth animations
  • Dark Theme: Eye-friendly dark interface with neon accents
  • Responsive Design: Optimized for all screen sizes and devices
  • Interactive Elements: Hover effects, smooth transitions, and intuitive controls
  • Accessibility: Keyboard navigation and screen reader support

πŸ› οΈ Technology Stack

Backend

  • Node.js - Runtime environment
  • Express.js - Web application framework
  • Socket.IO - Real-time bidirectional communication
  • Passport.js - Authentication middleware
  • bcrypt - Password hashing and security

Frontend

  • WebRTC (SFU) - Media handled via LiveKit (SFU) by default for scalability; client uses public/livekit-client.js as a helper.
  • Vanilla JavaScript - Core functionality
  • CSS3 - Modern styling with gradients and animations
  • HTML5 - Semantic markup

Database & Servicesices

  • Airtable - Cloud database for user and meeting data
  • Nodemailer - Email service for verification and notifications
  • UUID - Unique identifier generation

Authentication Providers

  • GitHub OAuth - GitHub account integration
  • Google OAuth - Google account integration
  • Email/Password - Traditional authentication

πŸ“‹ Prerequisites

Before running HangO, ensure you have:

  • Node.js (v14 or higher)
  • npm or yarn package manager
  • Airtable Account (for database)
  • Email Service (Gmail, SendGrid, etc.)
  • OAuth Apps (GitHub and/or Google - optional)

πŸš€ Installation & Setupetup

1. Clone Repository

git clone https://github.com/your-username/hango.git

cd hango

2. Install Dependencies

npm install

3. Environment Configuration

Create a .env file in the root directory:

# Server Configuration

PORT=3000

NODE_ENV=development

SESSION_SECRET=your-super-secret-session-key


# Airtable Configuration

AIRTABLE_API_KEY=your-airtable-api-key

AIRTABLE_BASE_ID=your-airtable-base-id


# Email Configuration 

EMAIL_USER=[email protected]

EMAIL_PASS=your-app-password

EMAIL_FROM=[email protected]


# GitHub OAuth

GITHUB_CLIENT_ID=your-github-client-id

GITHUB_CLIENT_SECRET=your-github-client-secret

GITHUB_CALLBACK_URL=http://localhost:3000/auth/github/callback


# Google OAuth (Optional)

GOOGLE_CLIENT_ID=your-google-client-id

GOOGLE_CLIENT_SECRET=your-google-client-secret

GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google/callback


# Google Calender Auth

GOOGLE_CALENDAR_CLIENT_ID=your_calendar_client_id_here

GOOGLE_CALENDAR_CLIENT_SECRET=your_calendar_client_secret_here

4. Airtable Setup

Create an Airtable base with a Users table containing these fields:

  • full_name (Single line text)
  • username (Single line text)
  • email (Email)
  • phone (Phone number)
  • password_hash (Single line text)
  • is_verified (Checkbox)
  • verification_token (Single line text)
  • reset_token (Single line text)
  • reset_token_expires (Date)
  • provider (Single line text)
  • provider_id (Single line text)
  • avatar_url (URL)
  • created_at (Date)
  • updated_at (Date)

Create a Meetings table with:

  • meeting_code (Single line text)
  • title (Single line text)
  • created_by_user_id (Single line text)
  • created_by_name (Single line text)
  • is_anonymous (Checkbox)
  • participants (Long text)
  • settings (Long text)
  • created_at (Date)
  • ended_at (Date)
  • status (Single select: active, ended)

5. OAuth Setup (Optional)

GitHub OAuth:

  1. Go to GitHub Settings > Developer settings > OAuth Appsh Apps
  2. Create new OAuth App with callback: http://localhost:3000/auth/github/callback
  3. Add client ID and secret to .env

Google OAuth:

  1. Go to Google Cloud Console > APIs & Services > Credentialsredentials
  2. Create OAuth 2.0 Client ID
  3. Add authorized redirect URI: http://localhost:3000/auth/google/callback
  4. Add client ID and secret to .env

🎯 Usage

Starting the Application

npm run dev

npm startrt

Accessing HangO

  • Open browser to http://localhost:3000
  • Create an account or login with existing credentials
  • Navigate to dashboard to create or join meetings

Creating a Meeting

  1. Login to your account
  2. Go to Dashboard
  3. Click "Start Meeting" to create a new meeting
  4. Share the meeting code with participants
  5. Enjoy your video conference!

Joining a Meeting

  1. Click "Join Meeting" on homepage or dashboard
  2. Enter the meeting code provided by the host
  3. Test your camera and microphone in the pre-meeting lobby
  4. Click "Join Now" to enter the meeting

πŸ“ Project Structure

hango/
β”œβ”€β”€ server.js                 # Main server file
β”œβ”€β”€ package.json             # Dependencies and scripts
β”œβ”€β”€ .env                     # Environment variables
β”œβ”€β”€ public/                  # Static frontend files
β”‚   β”œβ”€β”€ index.html          # Homepage
β”‚   β”œβ”€β”€ auth.html           # Authentication page
β”‚   β”œβ”€β”€ dashboard.html      # User dashboard
β”‚   β”œβ”€β”€ premeeting.html     # Pre-meeting lobby
β”‚   β”œβ”€β”€ meet-webrtc.html    # Main meeting interface
β”‚   β”œβ”€β”€ styles.css          # Main stylesheet
β”‚   └── app.js              # Frontend JavaScript
β”œβ”€β”€ routes/                 # Express routes
β”‚   └── auth.js             # Authentication routes
β”œβ”€β”€ services/               # Backend services
β”‚   β”œβ”€β”€ AirtableService.js  # Database operations
β”‚   β”œβ”€β”€ EmailService.js     # Email functionality
β”‚   └── MeetingService.js   # Meeting management
└── README.md              # This file
      # This file

πŸ”§ API Endpoints

Authentication

  • POST /api/user/register - User registration
  • POST /api/user/login - User login
  • GET /api/user/session - Get current session
  • POST /api/user/logout - User logout
  • POST /api/user/update-profile - Update user profile
  • GET /api/user/verify - Email verification
  • POST /api/user/forgot-password - Password reset request
  • POST /api/user/reset-password - Password reset

OAuth

  • GET /auth/github - GitHub OAuth login
  • GET /auth/github/callback - GitHub OAuth callback
  • GET /auth/google - Google OAuth login
  • GET /auth/google/callback - Google OAuth callback

Meetings

  • POST /api/meeting/create - Create new meeting
  • GET /api/meeting/:code - Get meeting details
  • POST /api/meeting/join - Join existing meeting

🎨 Customization

Styling

  • Edit public/styles.css for visual customization
  • Modify CSS variables for color scheme changes
  • Update animations and transitions in the stylesheet

Features

  • Add new routes in routes/ directory
  • Extend database schema in services/AirtableService.js
  • Implement additional OAuth providers in routes/auth.js

πŸ”’ Security Features

  • Password Security: bcrypt hashing with 12 salt rounds
  • Session Management: Secure session cookies with configurable expiration
  • Input Validation: Comprehensive validation on both frontend and backend
  • CORS Protection: Configured CORS policies for API security
  • Environment Variables: Sensitive data stored in environment variables
  • OAuth Security: Secure OAuth implementation with provider validation

πŸš€ Deployment

Production Environment Variables

NODE_ENV=production

SESSION_SECRET=super-secure-production-secret

Deployment Platforms

  • Heroku: Add buildpack and configure environment variables
  • Vercel: Use serverless functions for API routes
  • DigitalOcean: Deploy on droplet with PM2 for process management

πŸ› Troubleshooting

Common Issues

  1. WebRTC Connection Fails: Check firewall settings and STUN/TURN server configuration
  2. Database Connection Error: Verify Airtable API key and base ID
  3. Email Not Sending: Check email service credentials and app passwords
  4. OAuth Login Issues: Verify OAuth app configuration and callback URLs

Debug Mode

Enable debug logging by setting NODE_ENV=development in .env

🀝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published