Skip to main content
bthebigclass
Back to home
Live classes

Live classes that don't end when you say "bye for now".

Built-in cloud room — no third-party video-conferencing seat needed for you or your students. Cloud recording uploads straight to your CDN. We send the invites, mark attendance, stitch the recap, and email everyone when the recording is ready. Zero infra to host.

Built-in cloud room. No third-party seat. Recording included.

Click Start instant class and the room is live. Students open the join link, set a name once, and they're in — no account, no app install. The whole stack runs on LiveKit Cloud, so media is rock-solid even with 30+ participants. Already paying for a video-conferencing seat? Flip to Advanced and paste your room URL — we’ll auto-detect the provider.
  • In-house room runs on LiveKit Cloud — no XMPP, no UDP forwarding
  • Students join with a display name, no signup, no app
  • Adaptive 1080p simulcast — weak networks downgrade gracefully
  • Or paste a third-party meeting URL — provider auto-detected
dashboard › classes › new
RepeatsDoesn't repeatDailyWeeklyEvery 3 daysCustom

May → June 2026

session in series
M
T
W
T
F
S
S
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S1
19
20
21
22
23
24
25
S2
26
27
28
29
30
31
1
S3
2
3
4
5
6
7
8
S4
9
10
11
12
13
14

4 sessions will be created

First Mon May 18 · last Mon Jun 8 · 7:00 pm IST · 60 min

Ready

One click → cloud recording → your CDN.

Hit Start recordinginside the host view. LiveKit's egress workers capture the full composited room, encode 1080p / 30fps MP4, and upload directly to your Cloudflare R2 bucket — never touches your server. The instructor gets an email the moment the file lands. Students see a Watch button on the class detail page.
  • Server-side recording — keeps running if you close your browser
  • 1080p / 30fps H.264 MP4, screen share at 1440p
  • Direct upload to Cloudflare R2 (your bucket, your CDN, your cost basis)
  • Watch button opens an inline player dialog — no new-tab navigation
  • /dashboard/recordings index lists every class with a recording
session › Hooks Deep-Dive › recap
Class held · 24 of 24 joinedTue, May 13 · 7:00 pm IST
Recording · 58:14 Open
function useTimer(ms) {
const [t, setT] = useState(0)
useEffect(() => {
const id = setInterval(
() => setT(t => t+1), ms
)
return () => clearInterval(id)
}, [ms])
MR
19:24 / 58:14
Tue

What we covered

Built a custom useTimer hook. Discussed cleanup, deps, and when abstracting a hook is too eager.

Quiz

Hooks check · 6 q

Auto-grade · 60% to pass

Homework

Build a custom hook

Brief link · due Fri

Open brief
MaterialsCanva slideshooks.tsxuseTimer.pdfNote from Maya

Schedule a one-off — or a 12-week cohort — in the same form.

The schedule form defaults to Simple — title, when, duration, done. Flip to Advanced for Repeats: daily, weekly, every 2/3/4 days, or a custom interval. End after N sessions or by a date. Each instance gets its own attendance, recap, and follow-up.
  • Simple / Advanced mode — sensible defaults visible, decisions opt-in
  • One link reused across the whole series
  • Edit one instance without breaking the rest
  • Bulk-cancel, bulk-delete, bulk-notify from the list
  • WhatsApp + email + in-app reminders fire once per series
dashboard › classes › new
RepeatsDoesn't repeatDailyWeeklyEvery 3 daysCustom

May → June 2026

session in series
M
T
W
T
F
S
S
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S1
19
20
21
22
23
24
25
S2
26
27
28
29
30
31
1
S3
2
3
4
5
6
7
8
S4
9
10
11
12
13
14

4 sessions will be created

First Mon May 18 · last Mon Jun 8 · 7:00 pm IST · 60 min

Ready

Reminders that actually land.

Three windows fire automatically — T-3h, T-1h, T-15m — across the channels each student opted into. In-app bell, email, WhatsApp. Each delivery shows up in the student's inbox under the right channel tab so they can see we tried even if their inbox was full. Re-send manually from the session card; we stamp markers so you can't accidentally double-ping.
  • Automatic T-3h / T-1h / T-15m windows (no cron to configure)
  • Channel-respecting — honours each student's notification prefs
  • Every dispatch is logged to the student inbox (in-app + email + WhatsApp tabs)
  • Resend or bulk-notify from the session card
session › Hooks Deep-Dive › notify
In-app

24 students on file

Email

22 of 24 on file

WhatsApp

20 of 24 on file

Maya R. · Hooks Class

📚 Hooks Deep-Dive starts in 30 min. Tap to join the room.

meet.google.com/abc-defg-hij

6:30 pm ✓✓

Inbox · class reminders

Reminder: Hooks Deep-Dive · 7:00 pm IST

from Maya R. · hello@thebigclass.com

Hi Aanya,

Reminder that Hooks Deep-Dive (Cohort 4, session 3 of 8) starts in 30 minutes.

Join meeting
studio.thebigclass.com / dashboard

Hooks Deep-Dive starts in 30 min

Click to open the join link · Cohort 4 · session 3 of 8

The class ends. The class card doesn't.

Mark the session as held, drop the recording URL, paste the summary, and attach materials — slides, Canva embeds, PDFs, screenshots, even a follow-up quiz or homework brief. Students who attended (and the ones who didn't) come back to one page with everything.
  • Embed recordings from any common video host or direct MP4 URL
  • Attach quizzes with one click — students take them in-app
  • Assign homework with a due date and an optional brief
  • Past Classes archive surfaces sessions missing a recap
  • Class chat history persists alongside the recording
  • AI-draft button on the wrap-wizard summary
session › Hooks Deep-Dive › recap
Class held · 24 of 24 joinedTue, May 13 · 7:00 pm IST
Recording · 58:14 Open
function useTimer(ms) {
const [t, setT] = useState(0)
useEffect(() => {
const id = setInterval(
() => setT(t => t+1), ms
)
return () => clearInterval(id)
}, [ms])
MR
19:24 / 58:14
Tue

What we covered

Built a custom useTimer hook. Discussed cleanup, deps, and when abstracting a hook is too eager.

Quiz

Hooks check · 6 q

Auto-grade · 60% to pass

Homework

Build a custom hook

Brief link · due Fri

Open brief
MaterialsCanva slideshooks.tsxuseTimer.pdfNote from Maya

Inside the live room

Engagement primitives every class needs.

Six features that used to require third-party plugins or separate tools — all native, all persisted to the recording.

Live polls

2–4 option polls with a launch composer in the host rail and a vote card on every student's stage. Results update live. Launch and result broadcasts fan out as notifications to every invited participant — even the ones who weren't in the room.

Notifications hit students + co-instructors

Raised-hand queue

Students raise hands without unmuting. The host sees them ordered by raise time with Answer / Lower buttons. The button pulses primary the moment any hand goes up so the host doesn't need the panel open to know.

Live #N in queue badge for students

Mark agenda done

The agenda you set pre-class becomes a host checklist mid-class. Tap ✓ to mark done, ⏭ to skip — each with a timestamp. Late joiners see real coverage instead of time-inferred guesses.

Header chip shows 3/7 covered

Waiting-room presence

The host preflight shows 'N waiting now' and the first 5 names live as students arrive in the lobby. No more guessing whether to open the room with only one student visible.

3s polling, 15s staleness window

Time-left pill

Host-only in-call indicator that shows 'Time left: 18m' while in window, flips to amber (+7m over) past the planned end, and red after +15 min. Wrap-up cues without checking the clock.

30s tick, no CPU burn

Chat persists to recording

The class chat doesn't evaporate when the room closes. Every message is buffered live, flushed to the session record on End, and rendered alongside the video so re-watchers get the side-channel context.

Session.chatTranscript field

Free to start

Ready to launch your own?

Pick your subdomain, drop in your logo, and you're live. No demo call. No credit card.