LevelChatLevelChat
Use cases/EdTech
EdTech

Live cohort classes that record themselves.

Embed LevelChat into your LMS to run live classrooms — with persistent room links, host controls, and a recorded archive that ships within minutes of the session ending.

A modern classroom with rows of wooden desks lit by soft window light, no people in frame.

The problem

EdTech platforms need a Zoom-shaped meeting (mute-on-entry, raised hand, host controls, recorded archive) without Zoom-shaped per-host pricing. The off-the-shelf options either bill per host (10x your enrolment) or rebuild the entire pedagogy stack.

How LevelChat fits

Mint a host token from your LMS backend, embed @levelchat/web-react in the student page, start a recording when the host arrives, and surface the playback URL via the recording.ready webhook. Recording transcoding runs out-of-band, so the student dashboard shows the replay roughly 60 seconds after the host clicks End.

What we use under the hood

  • Server-side recording with HLS playbackDocs
  • Per-room JWT tokens (host vs student roles)Docs
  • Webhook events on join, leave, recording-readyDocs
  • AV1 + SVC publishers — lower bitrate at the same qualityDocs

Reference architecture

LMS server  ── mint token ──▶  POST /v1/auth/tokens/room
                                  │
                                  ▼
Student browser ◀── join URL ── @levelchat/web-react (LevelChatProvider)
       │                              │
       │                              ▼
       │                       wss://app.levelchat.io/v1/rtc/signal
       │                              │
       ▼                              ▼
   <VideoTile>                  recording-svc  ──── recording.ready ──▶  LMS webhook
                                                                              │
                                                                              ▼
                                                                         playback URL

Integration snippet

Real code against published packages — no phantom imports.

app/classroom/[id]/page.tsx
'use client';
import {
  LevelChatProvider,
  useLocalParticipant,
  useRoom,
  VideoTile,
} from '@levelchat/web-react';

export default function Classroom({ token, isHost }: { token: string; isHost: boolean }) {
  return (
    <LevelChatProvider token={token}>
      <ClassroomSurface isHost={isHost} />
    </LevelChatProvider>
  );
}

function ClassroomSurface({ isHost }: { isHost: boolean }) {
  const { participants, room } = useRoom();
  const { toggleCamera, toggleMic } = useLocalParticipant();

  // Hosts kick off a recording when they arrive; the recording.ready
  // webhook fires on your LMS backend ~60s after the session ends.
  React.useEffect(() => {
    if (!isHost || !room) return;
    void room.record({
      compose: 'speaker',
      format: { output: 'mp4_av1', alsoGenerateHls: true },
    });
  }, [isHost, room]);

  return (
    <div className="grid grid-cols-3 gap-4">
      {participants.map((p) => (
        <VideoTile key={p.id} participant={p} />
      ))}
    </div>
  );
}

Common questions for this vertical

  • How do students see the recording after class?

    The recording.ready webhook fires on your LMS backend with a presigned HLS URL (5-min TTL by default; configurable). Store it on your assignment / lesson row and render an HLS player in the student dashboard.

  • Can we run breakout rooms?

    Breakouts are on the roadmap (Preview, W9.5). Today the supported pattern is: end the main room, mint sub-room tokens client-side from your LMS, and have students rejoin the appropriate sub-room URL. The host can pull everyone back the same way.

  • How much does a 50-student / 90-minute session cost?

    On the Pro tier (50 × 90 = 4,500 participant-minutes), well within the 75,000-minute bundle. The /pricing calculator gives an exact estimate including recording storage.

Building something in this space?
We answer architecture questions on the same day. Sketch what you're working on and we'll send back a one-page LevelChat fit-check.
EdTech — Live cohort classes that record themselves · LevelChat