Michelle 1e19aa24dd
All checks were successful
Build & Push Docker Image / build (push) Successful in 1m10s
Use create call instead of join call with loginURL
2026-02-26 09:20:41 +01:00
2026-02-24 18:18:32 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 19:43:59 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 20:36:10 +01:00
2026-02-24 20:36:10 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 18:14:16 +01:00
2026-02-24 18:14:16 +01:00

🔴 Redlight

A modern, self-hosted BigBlueButton frontend with beautiful themes and powerful features.

Node.js React License BigBlueButton

Features

Core Features

  • 🎥 Video Conferencing Integrated BigBlueButton support for professional video meetings
  • 🎨 15+ Themes Dracula, Nord, Catppuccin, Rosé Pine, Gruvbox, and more
  • 📝 Room Management Create unlimited rooms with custom settings and access codes
  • 🔐 User Management Registration, login, role-based access control (Admin/User)
  • 📹 Recording Management View, publish, and delete meeting recordings per room
  • 🌍 Multi-Language Support German (Deutsch) and English built-in, easily extensible
  • ✉️ Email Verification Optional SMTP-based email verification for user registration
  • 👤 User Profiles Customizable avatars, themes, and language preferences
  • 📱 Responsive Design Works seamlessly on mobile, tablet, and desktop

Admin Features

  • 👥 User Administration Manage users and roles
  • 🏢 Branding Customization Custom app name and logos
  • 📊 Dashboard Overview of system statistics
  • 🔧 Settings Management System-wide configuration

Room Features

  • 🔑 Access Codes Restrict room access with optional passwords
  • 🚪 Guest Access Allow unauthenticated users to join meetings
  • ⏱️ Max Participants Set limits on concurrent participants
  • 🎤 Mute on Join Automatically mute new participants
  • Approval Mode Require moderator approval for participants
  • 🎙️ Anyone Can Start Allow participants to start the meeting
  • 📹 Recording Settings Control whether meetings are recorded

Developer Features

  • 🐳 Docker Support Easy deployment with Docker Compose
  • 🗄️ Database Flexibility SQLite (default) or PostgreSQL support
  • 🔌 REST API Comprehensive API for custom integrations
  • 📦 Open Source Full source code transparency
  • 🛠️ Self-Hosted Complete data privacy and control

📊 Comparison: Redlight vs Greenlight

Feature Redlight Greenlight
Theme System 15+ customizable themes Limited theming
Language Support Multi-language ready Multi-language ready
UI Framework React + Tailwind (Modern) Rails-based (Traditional)
User Preferences Theme, language, avatar Limited customization
Database Options SQLite / PostgreSQL PostgreSQL only
Docker Supported Supported
Admin Dashboard Modern React UI Legacy Rails interface
Room Sharing Share rooms with users Supported
Recording Management Full control per room Standard management
API RESTful JSON API RESTful API
Setup Complexity Simple (5 min) Moderate (10-15 min)
Customization Easy (Tailwind CSS) Requires Ruby/Rails
Community doesn't exist lol Established

🚀 Quick Start

Prerequisites

  • Docker & Docker Compose
  • BigBlueButton server (with API access)
  • SMTP server (optional, for email verification)

Installation

  1. Clone the repository

    git clone https://git.scrunkly.cat/Michelle/redlight
    cd redlight
    
  2. Configure environment

    cp .env.example .env
    

    Edit .env with your settings:

    BBB_URL=https://your-bbb-server.com/bigbluebutton/api/
    BBB_SECRET=your-bbb-shared-secret
    JWT_SECRET=your-secret-key
    DATABASE_URL=postgres://user:password@postgres:5432/redlight
    
    POSTGRES_USER=redlight
    POSTGRES_PASSWORD=redlight
    POSTGRES_DB=redlight
    
    # Optional: Email verification
    SMTP_HOST=smtp.gmail.com
    SMTP_PORT=587
    SMTP_USER=your-email@gmail.com
    SMTP_PASS=your-app-password
    
  3. Start the application

    docker-compose up -d
    
  4. Access the application

    • Open http://localhost:3001 in your browser
    • Default admin: admin@example.com / admin123
    • Change password immediately!

🛠️ Development

Local Setup

  1. Install dependencies

    npm install
    
  2. Start development server

    npm run dev
    
  3. Build for production

    npm run build
    npm run preview
    

Tech Stack

  • Frontend: React 18, Tailwind CSS, React Router, Lucide Icons
  • Backend: Node.js, Express, JWT, Bcrypt
  • Database: SQLite / PostgreSQL with better-sqlite3 / pg
  • Email: Nodemailer
  • Build: Vite

📁 Project Structure

redlight/
├── server/                 # Node.js/Express backend
│   ├── config/            # Database & mailer config
│   ├── middleware/        # JWT authentication
│   ├── routes/            # API endpoints
│   └── index.js           # Server entry point
├── src/                   # React frontend
│   ├── components/        # Reusable components
│   ├── contexts/          # React context (Auth, Language, Theme, Branding)
│   ├── i18n/              # Translations (DE, EN)
│   ├── pages/             # Page components
│   ├── services/          # API client
│   ├── themes/            # Tailwind theme config
│   └── main.jsx           # Frontend entry point
├── public/                # Static assets
├── uploads/               # User avatars (runtime)
├── compose.yml            # Docker Compose configuration
├── Dockerfile             # Container image definition
└── package.json           # Dependencies

🔐 Security

  • JWT Authentication Secure token-based auth with 7-day expiration
  • HTTPS Ready Configure behind reverse proxy (nginx, Caddy)
  • Password Hashing bcryptjs with salt rounds 12
  • Email Verification Optional SMTP-based email verification
  • CORS Protection Configurable CORS settings
  • Admin Isolation Role-based access control

📦 API Endpoints

Authentication

  • POST /api/auth/register Register new user
  • POST /api/auth/login Login user
  • GET /api/auth/verify-email?token=... Verify email with token
  • POST /api/auth/resend-verification Resend verification email
  • GET /api/auth/me Get current user info
  • PUT /api/auth/profile Update profile
  • PUT /api/auth/password Change password
  • POST /api/auth/avatar Upload avatar image

Rooms

  • GET /api/rooms List user's rooms
  • POST /api/rooms Create new room
  • GET /api/rooms/:uid Get room details
  • PUT /api/rooms/:uid Update room
  • DELETE /api/rooms/:uid Delete room
  • POST /api/rooms/:uid/start Start meeting

Recordings

  • GET /api/recordings/:roomUid List room recordings
  • PUT /api/recordings/:recordingId Publish/unpublish recording
  • DELETE /api/recordings/:recordingId Delete recording

Admin

  • GET /api/admin/users List all users
  • GET /api/admin/stats System statistics
  • PUT /api/admin/users/:id Update user
  • DELETE /api/admin/users/:id Delete user

Branding

  • GET /api/branding Get branding settings
  • PUT /api/branding Update branding (admin only)

🌍 Internationalization (i18n)

Redlight comes with built-in support for multiple languages. Currently supported:

  • 🇩🇪 Deutsch (German)
  • 🇬🇧 English

Adding a new language

  1. Create src/i18n/xx.json (e.g., fr.json for French)
  2. Copy structure from de.json or en.json
  3. Translate all strings
  4. Update src/i18n/index.js to include the new language

🎨 Themes

Redlight includes the following themes:

  • 🌙 Dracula
  • ❄️ Nord
  • 🐱 Catppuccin
  • 🌹 Rosé Pine
  • 🍂 Gruvbox (Dark, Light)
  • 💜 One Dark
  • 🌊 Tokyo Night
  • And more...

Themes are fully customizable by editing src/themes/index.js.


🐳 Docker Deployment

docker-compose up -d

Services:

  • redlight Node.js application
  • postgres PostgreSQL database

Production Deployment

Behind a reverse proxy (nginx example):

upstream redlight {
  server localhost:3001;
}

server {
  listen 443 ssl http2;
  server_name your-domain.com;
  
  ssl_certificate /path/to/cert.pem;
  ssl_certificate_key /path/to/key.pem;
  
  client_max_body_size 5M;

  location / {
    proxy_pass http://redlight;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

🐛 Troubleshooting

Issue: "Email verification not working"

Solution: Ensure SMTP is configured in .env. If SMTP_HOST is not set, email verification is disabled.

Issue: "BigBlueButton API error"

Solution: Verify BBB_URL and BBB_SECRET are correct. Test the connection with:

curl "https://your-bbb-server/bigbluebutton/api/getMeetings?checksum=..."

Issue: "Database connection failed"

Solution: Check DATABASE_URL format. For PostgreSQL: postgres://user:password@host:5432/redlight

Issue: "Theme not applying"

Solution: Clear browser cache (Ctrl+Shift+Del) or restart dev server with npm run dev.


📝 License

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


🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create a 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
2.1.2 Latest
2026-03-26 09:47:59 +01:00
Languages
JavaScript 95.7%
CSS 4%
Dockerfile 0.2%
HTML 0.1%