Platform
FluxyEdu
Classroom on one room. Polls, breakouts, attendance. Video is Cloudflare Realtime SFU.
Console: /edu. The classroom is a normal room. Polls and breakouts go to Worker HTTP, then fan out on the room WebSocket.
| Piece | API |
|---|---|
| Poll | POST /polls, then GET /polls/:id. Close with POST /polls/:id/close. You cannot vote on a poll you created. Typed polls (pollType: typed) take POST /polls/:id/vote with { answer } (voteTypedPoll). |
| Breakout | Create/list/close, plus join, move, end-all, time, broadcast (BBB graphql actions HOW, no SFU) |
| Timer | GET /rooms/:id/timer plus activate / start / stop / reset / deactivate / time / mode. Fan-out edu.timer. Not an SFU clock. |
| Attendance | SDK sendAttendanceHeartbeat → attendance.heartbeat. Snapshot: GET /rooms/:id/capabilities/snapshot |
| Raise hand | SDK setRaiseHand → edu.hand.raised |
| Whiteboard | Yjs on the same room. Collab |
| Grading agent | Draft only. A teacher publishes. |
The live workspace on /edu runs those poll and breakout calls against the room you picked.
Live video is not a FluxyChat SFU. The Worker proxies Cloudflare Realtime SFU (POST /rooms/:id/realtime/sessions). LiveKit is a fallback if you set LIVEKIT_*. FERPA, COPPA, retention, and learner export are workspace settings. They are not defaults.
- Polls
- Vertical industries
- Gallery
--example polls