Skip to content

Latest commit

Β 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 MeetUp β€” Full-Stack AI-Powered Video Meeting & Conferencing Platform

MeetUp Banner

A Next-Generation, Enterprise-Grade Real-Time Video Conferencing Application built on the PERN Stack (PostgreSQL, Express, React, Node.js) with Peer-to-Peer WebRTC, Socket.io, OpenRouter AI, and Cloudinary Media Management.

License: MIT React Node.js PostgreSQL WebRTC Socket.io Tailwind CSS Cloudinary OpenRouter AI

Live Frontend (Vercel) β€’ Live Backend (Render) β€’ Report Bug β€’ Request Feature


πŸ“– Table of Contents


✨ Key Features

πŸŽ₯ Real-Time Video & Audio

  • HD WebRTC Peer-to-Peer Video: Crystal clear video and spatial audio streams using Google STUN & TURN signaling.
  • Screen Sharing: High-framerate desktop, window, and tab sharing with audio forwarding.
  • Virtual Backgrounds: Real-time canvas segmentation offering Blur, Minimalist Studio, Modern Office, and Custom Image Background uploads.
  • In-Meeting Local Recording: Capture full meeting audio & video directly in-browser with .webm export.
  • Live Closed Captions (CC): Real-time speech-to-text live subtitles displayed dynamically during calls.

πŸ€– Built-In AI Suite (OpenRouter)

  • 🧠 Live In-Meeting AI Co-Pilot: An interactive context-aware assistant answering queries, brainstorming ideas, and looking up data during live discussions.
  • 🌐 Real-Time Chat Multi-Language Translation: Instant one-click message translation across Sinhala, English, Tamil, Japanese, Spanish, Hindi, and German.
  • πŸ“ Automated Meeting Summaries & Action Items: Generate comprehensive executive summaries, key takeaways, decisions, and assigned action item lists from transcripts and chat logs.

🎨 Interactive Collaboration

  • Real-Time Collaborative Whiteboard: Multi-user interactive drawing canvas with brush size presets, multi-color palette, highlighter, eraser, and PNG export.
  • Live Shared Meeting Notes: Real-time synced markdown notepad with collaborative auto-save and .txt file export.
  • Floating Emoji Reactions: Live flying emoji bursts (❀️, πŸ‘, πŸ‘, πŸŽ‰, πŸš€, πŸ”₯) with participant attribution.
  • Raise Hand Queue: Non-disruptive speaking request indicator for organized seminars and lectures.
  • Permanent Cloud File Sharing: Drag-and-drop file sharing in chat backed by Cloudinary cloud storage.

πŸ›‘οΈ Enterprise Host Moderation

  • Waiting Lobby (Doorbell System): Guests wait in a secure lobby until the host explicitly admits or denies entry.
  • One-Click Room Lock: Prevent any new participants from entering confidential sessions.
  • Mute All / Mute Individual: Host authority to mute noisy microphones instantly.
  • Kick Participant: Remove disruptive users from the active session.
  • Instant Email Invitations: Send styled meeting invitation emails with meeting links via Nodemailer SMTP.

☁️ Cloudinary Media & Storage

  • Profile Photo Uploads: Custom profile avatars stored securely on Cloudinary.
  • Chat Attachments: Permanent image and document attachments accessible across devices.
  • Custom Virtual Backgrounds: Upload and apply personalized backdrop imagery.

πŸ“± 100% Mobile & Tablet Responsive

  • Crafted for mobile devices (iPhone SE, Pro Max, iPads, Android) with sliding touch drawers, swipeable horizontal meeting toolbars, and dynamic touch-friendly canvases.

πŸ—οΈ System Architecture

                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                               β”‚       Client Applications         β”‚
                               β”‚   (Desktop, Tablet, Mobile Web)   β”‚
                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                 β”‚
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                        β”‚ HTTPS (REST API)       β”‚ WSS (WebSockets)       β”‚ WebRTC P2P
                        β–Ό                        β–Ό                        β–Ό
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚     Express.js API       β”‚ β”‚  Socket.io Server β”‚ β”‚ Remote Peer Clients  β”‚
         β”‚   Authentication, CRUD   β”‚ β”‚ Signaling & Chat  β”‚ β”‚ Direct Audio / Video β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚                       β”‚
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β–Ό                 β–Ό                       β–Ό                 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  PostgreSQL  β”‚ β”‚  Cloudinary  β”‚     β”‚   OpenRouter AI   β”‚ β”‚  Nodemailer  β”‚
β”‚ Neon (Cloud) β”‚ β”‚ Media Storageβ”‚     β”‚ (LLM & Summaries) β”‚ β”‚ (Email SMTP) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Domain Technology Description
Frontend React 19, Vite 8, Tailwind CSS v4 Ultra-fast SPA with modern glassmorphism aesthetics
Icons & UI Lucide React, React Hot Toast, Canvas API Smooth micro-animations and intuitive responsive UX
Real-Time WebRTC, Socket.io-client Low-latency P2P mesh video calling and signaling
Backend Node.js, Express.js High-performance RESTful API and WebSocket gateway
Database PostgreSQL (Neon Serverless) Relational database with connection pooling
AI Engine OpenRouter API (google/gemini-2.0-flash) Fast intelligent meeting assistants and translation
Media Cloud Cloudinary SDK v2, Multer Cloud storage for user avatars, files, and backgrounds
Email Nodemailer (Gmail SMTP) Instant styled meeting invitation delivery
Hosting Vercel (Frontend), Render (Backend) 24/7 Global serverless & persistent cloud infrastructure

πŸš€ Quick Start & Installation

Prerequisites

  • Node.js v18.0.0 or higher
  • npm or yarn
  • PostgreSQL database instance (or a free Neon connection string)
  • Free Cloudinary Account
  • OpenRouter API Key

1. Clone Repository

git clone https://github.com/melan-Akash/Meetup_FullStackVideoMeetingApp_PERN-Stack.git
cd Meetup_FullStackVideoMeetingApp_PERN-Stack

2. Backend Setup (server/)

# Navigate to backend directory
cd server

# Install dependencies
npm install

# Create environment configuration file
cp .env.example .env

Fill in the .env configuration (see Environment Variables).

# Start backend server in development mode
npm run dev

Backend will start on http://localhost:5000.


3. Frontend Setup (client/)

# Open a new terminal and navigate to client
cd ../client

# Install dependencies
npm install

# Create frontend environment configuration
cp .env.example .env

Ensure VITE_API_URL and VITE_SOCKET_URL point to http://localhost:5000 for local development.

# Start frontend development server
npm run dev

Frontend will be accessible at http://localhost:5173.


πŸ” Environment Variables Configuration

server/.env

PORT=5000
DATABASE_URL=postgresql://<user>:<password>@<host>/<database>?sslmode=require
JWT_SECRET=your_super_secret_jwt_key_here
CLIENT_URL=http://localhost:5173

# Email SMTP Setup
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_gmail_app_password
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587

# AI Assistant & Summaries
OPENROUTER_KEY=sk-or-v1-your-openrouter-api-key

# Cloudinary Storage
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

client/.env

# For Local Development:
VITE_API_URL=http://localhost:5000/api
VITE_SOCKET_URL=http://localhost:5000

# For Production Deployment:
# VITE_API_URL=https://meetup-backend-gbhg.onrender.com/api
# VITE_SOCKET_URL=https://meetup-backend-gbhg.onrender.com

🌐 Deployment Guide

Deploy Backend on Render

  1. Create a new Web Service on Render and connect this repository.
  2. Configure settings:
    • Root Directory: server
    • Build Command: npm install
    • Start Command: npm start
    • Instance Type: Free
  3. Add the environment variables from server/.env under Environment.
  4. Set CLIENT_URL to your Vercel frontend URL (e.g. https://meetup-ten-lemon.vercel.app).
  5. Click Deploy Web Service.

Deploy Frontend on Vercel

  1. Import this repository into Vercel.
  2. Configure settings:
    • Root Directory: client
    • Framework Preset: Vite
  3. Under Environment Variables, add:
    • VITE_API_URL = https://your-backend.onrender.com/api
    • VITE_SOCKET_URL = https://your-backend.onrender.com
  4. Click Deploy.

πŸ“ Project Folder Structure

meetup/
β”œβ”€β”€ client/                     # Frontend Application (React 19 + Vite)
β”‚   β”œβ”€β”€ public/                 # Static Assets (Logos, Icons, Audio)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ meeting/        # VideoGrid, ControlBar, ChatPanel, Whiteboard, etc.
β”‚   β”‚   β”‚   β”œβ”€β”€ profile/        # User Profile Modal, Avatar Uploader
β”‚   β”‚   β”‚   └── navbar.jsx      # Navigation Bar with Mobile Drawer
β”‚   β”‚   β”œβ”€β”€ config/             # Axios API & Socket.io Instances
β”‚   β”‚   β”œβ”€β”€ context/            # Authentication & State Context
β”‚   β”‚   β”œβ”€β”€ hooks/              # useWebRTC, useChat, useRecording, useAudioLevel
β”‚   β”‚   β”œβ”€β”€ pages/              # Dashboard, MeetingRoom, Login, Sessions, Pricing
β”‚   β”‚   β”œβ”€β”€ App.jsx             # Main Router & Providers
β”‚   β”‚   └── main.jsx            # React DOM Entrypoint
β”‚   β”œβ”€β”€ vercel.json             # Vercel SPA Client Rewrites
β”‚   └── package.json
β”‚
β”œβ”€β”€ server/                     # Backend Application (Node.js + Express + Socket.io)
β”‚   β”œβ”€β”€ config/                 # PostgreSQL (Neon) & Cloudinary SDK Setup
β”‚   β”œβ”€β”€ controllers/            # Auth, Meeting, AI, Email, Upload Controllers
β”‚   β”œβ”€β”€ routes/                 # Express API Endpoint Routes
β”‚   β”œβ”€β”€ services/               # AI Service (OpenRouter) & Email Service (Nodemailer)
β”‚   β”œβ”€β”€ socket/                 # WebRTC Signaling & Room Socket Handlers
β”‚   β”œβ”€β”€ db/schema.sql           # PostgreSQL Table Schemas & Indices
β”‚   β”œβ”€β”€ server.js               # Main HTTP & Socket.io Server Entrypoint
β”‚   └── package.json
β”‚
└── README.md                   # Project Documentation

🀝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

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


Developed with ❀️ by Melan Akash

⭐ Star this repository if you find it helpful!

About

πŸš€ Full-Stack AI-Powered Video Meeting & Conferencing App (PERN Stack) with HD WebRTC, Socket.io, In-Meeting AI Co-Pilot, Live Chat Translation, Collaborative Whiteboard, Cloudinary Storage & Host Moderation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages