Skip to content

Mass Class - Build a Scalable Virtual Classroom Streaming to YouTube with Interactive Student Experience #305

@A1L13N

Description

@A1L13N

Overview

We’re building Mass Class — a virtual classroom designed to support 100,000+ students watching a single instructor livestream, with real-time interactive features such as:

  • Synchronized whiteboard/slides
  • Live Q&A and chat
  • Real-time polls/quizzes
  • Hand-raising and participation tracking
  • YouTube Live stream as the scalable video backend

The presenter streams using WebRTC (desktop + webcam), bridged to YouTube Live via RTMP. Students join through a web client for interactive engagement in sync with the live stream.


Goals

Teacher Interface

  • Stream both desktop and webcam (merged) via WebRTC.
  • Stream control panel:
    • Start/stop stream
    • Moderate student chat
    • Push polls/quizzes or slide updates

Streaming Pipeline

  • Receive WebRTC from browser
  • Bridge to RTMP using GStreamer or Pion backend
  • Push to YouTube Live ingest endpoint

Student Interface

  • Embedded YouTube Live stream
  • Real-time interactivity:
    • Chat / Q&A (via WebSockets)
    • Synchronized slide/whiteboard
    • Live polls, quizzes
    • "Raise hand" feature for student feedback

Backend

  • Lightweight signaling for SDP/ICE exchange (via Django or FastAPI)
  • Real-time layer with WebSockets + Redis pub/sub
  • Authentication & moderation
  • Scalable WebSocket infrastructure (socket clusters or Channels Layer)

Proposed Stack

Layer Tech/Tooling Purpose
Frontend Vanilla JS Classroom UI
WebRTC getDisplayMedia + getUserMedia Capture screen + webcam
Signaling Server Django + Django Channels (or FastAPI) SDP & ICE handling
Media Bridge GStreamer / Pion / FFmpeg WebRTC → RTMP
Streaming CDN YouTube Live (RTMP) Scalable live video
Interactivity Django Channels, Redis Pub/Sub Chat, Q&A, polls
Auth JWT or Django sessions Login + identity
Storage/Cache PostgreSQL + Redis Poll results, attendance

Milestones

MVP

  • WebRTC stream from teacher (desktop + webcam)
  • Bridge to YouTube Live
  • Student joins stream via embedded YouTube player
  • Real-time chat

Phase 2

  • Add polls, quizzes
  • Hand-raising queue
  • Whiteboard or slide sync

Phase 3

  • Admin dashboard for moderation
  • Attendance, engagement analytics
  • Push notifications

Phase 4

  • Scale to 100K students
  • Redis pub/sub socket layer
  • CDN integration for static assets

Tasks

  • WebRTC front-end (screen + camera)
  • WebRTC → RTMP GStreamer pipeline
  • Django SDP signaling API
  • YouTube Live ingest integration
  • Embed player UI
  • Real-time chat (WebSocket)
  • Polling system
  • Moderator interface
  • Auth system
  • Docker setup for services

Challenges

  • Latency management between YouTube Live and real-time layers
  • Merging desktop + webcam feeds
  • Spam prevention at scale
  • Whiteboard/presentation synchronization
  • Mobile support for large userbase

Get Involved

We’re looking for collaborators who can help with:

  • GStreamer / FFmpeg scripting
  • WebRTC SDP handling
  • Frontend UX/UI
  • WebSocket infrastructure
  • Polling & Q&A logic
  • DevOps (Docker, scaling, monitoring)

Labels

feature streaming real-time education WebRTC interactive frontend backend

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions