Michelle 1e19aa24dd
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.5.1
Latest
2026-08-23 17:04:33 +02:00
Languages
JavaScript 96%
CSS 3.7%
Dockerfile 0.2%