Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Classbridge Laravel Package

mohamedhekal/classbridge

View on GitHub
Deep Wiki
Context7

ClassBridge

CI Packagist License: MIT PHP Laravel

White-label live classroom orchestration for Laravel: sessions, waiting rooms, moderation, attendance, polls, breakouts, whiteboards, recordings, and provider abstraction.

Embeddable live classrooms for Laravel and modern education platforms — video meetings, teacher controls, whiteboards, attendance, recordings, polls, breakout rooms, and provider-based WebRTC integrations.

Installation

composer require mohamedhekal/classbridge
php artisan vendor:publish --tag=classbridge-config
php artisan vendor:publish --tag=classbridge-migrations
php artisan migrate

LiveKit provider

composer require mohamedhekal/classbridge-livekit

Configure in .env:

CLASSBRIDGE_DRIVER=livekit
LIVEKIT_URL=wss://your-livekit-host
LIVEKIT_API_KEY=...
LIVEKIT_API_SECRET=...

Frontend packages (optional)

Package Purpose
@classbridge/sdk TypeScript client for session events
@classbridge/whiteboard Yjs collaborative whiteboard
classbridge-vue Vue 3 classroom UI
classbridge-web-components Framework-agnostic <classbridge-room>

Architecture

flowchart TB
    subgraph Host["Laravel host app"]
        API["REST API / Filament"]
        CB["ClassBridgeManager"]
        SVC["Services: Session, Poll, Breakout, Whiteboard, Analytics"]
        DB[(MySQL / SQLite)]
    end

    subgraph Providers["Classroom providers"]
        Fake["Fake driver (tests)"]
        LK["LiveKit driver"]
    end

    subgraph Clients["Clients"]
        Vue["classbridge-vue"]
        WC["classbridge-web-components"]
        WB["@classbridge/whiteboard"]
    end

    API --> CB
    CB --> SVC
    SVC --> DB
    CB --> Fake
    CB --> LK
    Vue --> API
    WC --> API
    WB --> API
    LK -. webhooks .-> API

Quick start

use Hekal\ClassBridge\DTOs\CreateSessionData;
use Hekal\ClassBridge\Facades\ClassBridge;

$session = ClassBridge::forTenant('org-1')->session()->create(new CreateSessionData(
    title: 'Intro to Algebra',
    tenantId: 'org-1',
    teacherDisplayName: 'Ms. Smith',
    startsAt: now()->addHour(),
));

ClassBridge::session()->schedule($session, now()->addHour());
ClassBridge::session()->openWaiting($session);
ClassBridge::session()->start($session);

$poll = ClassBridge::polls()->createPoll($session, 'Ready to begin?', ['Yes', 'Not yet']);
ClassBridge::polls()->start($poll);

ClassBridge::session()->end($session);

Default driver is fake (in-memory). Register LiveKit or custom drivers via ClassBridge::extend().

Features

  • Session lifecycle state machine (draft → scheduled → waiting → live → ended)
  • Waiting room admit/reject flows
  • Signed one-time join tokens
  • Role-based moderation (mute, remove, lock, promote)
  • Attendance rules and finalization
  • Polls, Q&A, breakout rooms, collaborative whiteboards
  • Session analytics summary
  • Recording start/stop/publish via provider contract
  • Multi-tenant session scoping
  • Optional REST API under api/classbridge
  • Optional iframe embed mode (CLASSBRIDGE_EMBED=true)
  • Optional Filament admin stub (when Filament is installed)

Documentation

Testing

composer test
composer analyse
composer format

License

MIT © Mohamed Hekal


Product Vision

ClassBridge brings live teaching, collaboration, engagement, and replay into any education platform—without giving up its brand or learner experience.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
roundly-consulting/kubernetes-api-for-laravel
roundly-consulting/plausible-for-laravel
gvp/gvp-laravel-template
metasyncsite/laravel-metasync-client
roundly-consulting/onboarding-for-laravel
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo