Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

207 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MeetLite

A modern, enterprise-grade video conferencing and collaboration platform

Node.js React TypeScript License

Features β€’ Architecture β€’ Getting Started β€’ Contributing


πŸ“‹ Table of Contents

🎯 Overview

MeetLite is a comprehensive video conferencing platform designed for modern teams and enterprises. Built with a microservices architecture, it provides high-quality video calls, intelligent scheduling, AI-powered insights, and seamless collaboration tools.

Key Highlights

  • HD Video Conferencing: WebRTC-based, low-latency video calls with screen sharing
  • Smart Scheduling: AI-powered scheduling with calendar integrations (Google, Outlook)
  • Real-time Collaboration: Whiteboard, document collaboration, and workflow management
  • Meeting Intelligence: AI-generated summaries, transcripts, and action items
  • Multi-Organization Management: Create and manage multiple organizations with separate teams, members, and assets
  • Organization & Team Asset Tracking: Track meeting assets (audio recordings, transcripts) at both organization and team levels with granular access control
  • Enterprise Ready: Role-based access control, team management, and comprehensive permissions
  • Secure & Private: End-to-end encryption, secure rooms, and granular access control

✨ Features

Core Features

  • Video Conferencing

    • HD video and audio quality
    • Screen sharing and presentation mode
    • Virtual backgrounds
    • Participant management
    • Waiting rooms and meeting controls
  • Smart Scheduling

    • AI-powered time suggestions
    • Calendar integrations (Google Calendar, Outlook)
    • Timezone-aware scheduling
    • Automatic meeting reminders
    • Recurring meetings
  • Collaboration Tools

    • Real-time whiteboard (Tldraw)
    • Document and simple coding collaboration (Yjs)
    • Workflow management
    • Chat messaging
    • File sharing
  • Meeting Intelligence

    • AI-generated meeting summaries
    • Automatic transcription
    • Action item extraction
    • Sentiment analysis
    • Key topics identification
  • Recording & Asset Management

    • HD meeting recordings with organization and team-level tracking
    • Searchable transcripts stored at organization and team levels
    • AI-powered summaries and insights
    • Granular access control for recordings and transcripts
    • Organization-wide and team-specific asset visibility
    • Shareable recording links with expiration
    • Analytics and insights per organization and team
    • Asset archiving and retention policies
  • Organization & Team Management

    • Multiple Organizations: Create and manage multiple organizations from a single account
    • Team Management: Create multiple teams within each organization
    • Asset Tracking: Track meeting assets (recordings, transcripts) at both organization and team levels
    • Access Control: Granular permissions for organization and team assets
      • Organization-level assets: Accessible to all organization members
      • Team-level assets: Accessible only to team members
      • Private assets: Accessible only to participants
    • Role-based access control (owner, admin, member)
    • Invitation system for organizations and teams
    • Member management across organizations and teams
  • Integrations

    • Google Calendar
    • Outlook Calendar

Subscription Plans

  • Free: Basic meetings, limited features
  • Pro: Advanced features, longer meetings, more participants
  • Enterprise: Unlimited features, custom branding, dedicated support

πŸ—οΈ Architecture

MeetLite follows a microservices architecture with an API Gateway pattern for scalable, maintainable infrastructure.

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Frontend (React)                      β”‚
β”‚                    http://localhost:5174                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    API Gateway (Port 3000)                   β”‚
β”‚              Request Routing & Load Balancing                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚               β”‚               β”‚
            β–Ό               β–Ό               β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Auth Service β”‚ β”‚ Room Service β”‚ β”‚MediaSoup Svc β”‚
    β”‚  (Port 5000) β”‚ β”‚ (Port 5001)  β”‚ β”‚  (Port 3003) β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚               β”‚               β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚      MongoDB Database      β”‚
            β”‚      Redis Cache           β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Service Breakdown

1. API Gateway (api-gateway)

  • Purpose: Single entry point for all client requests
  • Responsibilities:
    • Request routing to appropriate services
    • CORS handling
    • Rate limiting
    • Health monitoring
    • Request/response logging
  • Port: 3000

2. Auth Service (auth-service)

  • Purpose: Authentication, authorization, and user management
  • Responsibilities:
    • User authentication (JWT)
    • Organization management
    • Team management
    • Invitation system
    • Plan management
    • Payment processing (Stripe)
    • Email notifications
  • Port: 5000
  • API Prefix: /api/v1/*

3. Room Service (room-service)

  • Purpose: Meeting and room management
  • Responsibilities:
    • Meeting CRUD operations
    • Meeting scheduling
    • Calendar integration
    • Recording management
    • AI services integration
    • Analytics
  • Port: 5001
  • API Prefix: /api/v1/*

4. MediaSoup Service (mediasoup-service)

  • Purpose: WebRTC media handling and real-time collaboration
  • Responsibilities:
    • WebRTC signaling (Socket.IO)
    • Media streaming (audio/video)
    • Screen sharing
    • Tldraw collaboration (whiteboard)
    • Yjs document synchronization
    • File uploads
  • Port: 3003
  • WebSocket: /socket.io, /connect

5. Shared Models (shared-models)

  • Purpose: Shared data models and utilities
  • Responsibilities:
    • Mongoose schemas
    • Common utilities
    • Plan configurations
    • Constants

Data Flow

  1. Client Request β†’ API Gateway (port 3000)
  2. Gateway β†’ Routes to appropriate service based on path
  3. Service β†’ Processes request, interacts with MongoDB/Redis
  4. Service β†’ Returns response through gateway
  5. Gateway β†’ Returns response to client

WebSocket Flow

  1. Client β†’ Connects to MediaSoup service via gateway
  2. MediaSoup β†’ Handles WebRTC signaling and media streams
  3. MediaSoup β†’ Manages collaboration state (Tldraw, Yjs)

πŸ› οΈ Tech Stack

Frontend

  • Framework: React 18+ with TypeScript
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • UI Components: Shadcn/ui
  • State Management: Zustand
  • Routing: React Router v6
  • WebRTC: MediaSoup client
  • Real-time: Socket.IO Client
  • Collaboration: Tldraw, Yjs
  • Forms: React Hook Form
  • Notifications: Sonner
  • Icons: Lucide React

Backend

  • Runtime: Node.js 20+
  • Framework: Express.js
  • Database: MongoDB (Mongoose)
  • Cache: Redis
  • Authentication: JWT
  • WebRTC: MediaSoup
  • Real-time: Socket.IO
  • Email: Nodemailer
  • Payment: Stripe
  • File Storage: Local filesystem (configurable)

DevOps & Tools

  • API Gateway: Custom Express proxy
  • Load Testing: K6
  • Development: Concurrently
  • Package Management: npm workspaces

πŸš€ Getting Started

Prerequisites

  • Node.js: v20.0.0 or higher
  • MongoDB: v6.0 or higher
  • Redis: v7.0 or higher (optional, for caching)
  • npm: v9.0 or higher

Installation

  1. Clone the repository:
git clone https://github.com/YOUR_USERNAME/meetlite.git
cd meetlite
  1. Install dependencies:
# Install root dependencies
npm install

# Install all workspace dependencies
npm run install:all
  1. Set up environment variables:

Create .env files in each service directory:

backend/packages/api-gateway/.env:

PORT=3000
NODE_ENV=development
FRONTEND_URL=http://localhost:5174

AUTH_SERVICE_URL=http://localhost:5000
ROOM_SERVICE_URL=http://localhost:5001
MEDIASOUP_SERVICE_URL=http://localhost:3003

backend/packages/auth-service/.env:

PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/meetlite
JWT_SECRET=your-jwt-secret-key
FRONTEND_URL=http://localhost:5174
# ... (see backend/packages/auth-service/.env.example)

backend/packages/room-service/.env:

PORT=5001
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/meetlite
# ... (see backend/packages/room-service/.env.example)

backend/packages/mediasoup-service/.env:

PORT=3003
NODE_ENV=development
# ... (see backend/packages/mediasoup-service/.env.example)

client/.env:

VITE_API_URL=http://localhost:3000
# ... (see client/.env.example)
  1. Start MongoDB and Redis:
# MongoDB (if not running as service)
mongod

# Redis (if not running as service)
redis-server

Development

  1. Start all backend services:
cd backend
npm run dev:all

This starts:

  • API Gateway (port 3000)
  • Auth Service (port 5000)
  • Room Service (port 5001)
  • MediaSoup Service (port 3003)
  1. Start the frontend (in a new terminal):
cd client
npm run dev
  1. Access the application:

Production Build

# Build frontend
npm run build:client

# Build backend (if applicable)
npm run build:backend

πŸ“ Project Structure

meetlite/
β”œβ”€β”€ client/                          # React frontend application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/              # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/               # Authentication components
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/          # Dashboard components
β”‚   β”‚   β”‚   β”œβ”€β”€ meeting/            # Meeting components
β”‚   β”‚   β”‚   β”œβ”€β”€ room/               # Video room components
β”‚   β”‚   β”‚   β”œβ”€β”€ organization/      # Organization management
β”‚   β”‚   β”‚   β”œβ”€β”€ teams/              # Team management
β”‚   β”‚   β”‚   └── ui/                 # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ contexts/               # React contexts
β”‚   β”‚   β”œβ”€β”€ hooks/                  # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ pages/                  # Page components
β”‚   β”‚   β”œβ”€β”€ services/               # API service clients
β”‚   β”‚   β”œβ”€β”€ stores/                 # Zustand stores
β”‚   β”‚   β”œβ”€β”€ types/                  # TypeScript types
β”‚   β”‚   └── utils/                  # Utility functions
β”‚   β”œβ”€β”€ public/                     # Static assets
β”‚   └── package.json
β”‚
β”œβ”€β”€ backend/                        # Backend microservices
β”‚   β”œβ”€β”€ packages/
β”‚   β”‚   β”œβ”€β”€ api-gateway/            # API Gateway service
β”‚   β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ config/         # Configuration
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ middleware/     # Express middleware
β”‚   β”‚   β”‚   β”‚   └── routes/         # Service routing
β”‚   β”‚   β”‚   └── package.json
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ auth-service/           # Authentication service
β”‚   β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ controllers/    # Request handlers
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ services/       # Business logic
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ routes/         # API routes
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ middleware/     # Auth middleware
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ templates/      # Email templates
β”‚   β”‚   β”‚   β”‚   └── utils/           # Utilities
β”‚   β”‚   β”‚   └── package.json
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ room-service/           # Room/Meeting service
β”‚   β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”‚   β”‚   └── templates/
β”‚   β”‚   β”‚   └── package.json
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ mediasoup-service/     # WebRTC service
β”‚   β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”‚   └── handlers/
β”‚   β”‚   β”‚   └── package.json
β”‚   β”‚   β”‚
β”‚   β”‚   └── shared-models/          # Shared models
β”‚   β”‚       β”œβ”€β”€ src/
β”‚   β”‚       β”‚   β”œβ”€β”€ models/         # Mongoose schemas
β”‚   β”‚       β”‚   β”œβ”€β”€ config/         # Shared config
β”‚   β”‚       β”‚   └── utils/          # Shared utilities
β”‚   β”‚       └── package.json
β”‚   β”‚
β”‚   └── README.md                   # Backend documentation
β”‚
β”œβ”€β”€ k6/                             # Load testing
β”‚   β”œβ”€β”€ backend/                    # Backend load tests
β”‚   β”œβ”€β”€ frontend/                   # Frontend load tests
β”‚   └── config/                     # Test configuration
β”‚
β”œβ”€β”€ package.json                    # Root package.json (workspaces)
└── README.md                       # This file

🀝 Contributing

We welcome contributions to MeetLite! Please see our Contributing Guide for detailed information on:

  • How to contribute
  • Coding standards and guidelines
  • Pull request process
  • Issue reporting
  • Development best practices

For a quick start, fork the repository, create a feature branch, make your changes, and open a pull request.

πŸ“„ License

This project is licensed under the ISC License.


Built with ❀️ by the MeetLite team

Documentation β€’ API Reference β€’ Changelog

About

Meetlite is a light weight AI supported, collaborative video conferencing application for teams and organizations, with smart schedule and calendar imports

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages