This monorepo contains the MediaSoup-based live classroom platform and supporting services.
| Service | Path | What it owns |
|---|---|---|
| Web client | apps/web |
Next.js UI, NextAuth auth routes, and the Creator Studio front-end experience. |
| API | apps/api |
REST endpoints for rooms, sessions, recordings, participants, and system health. |
| Signaling | apps/signaling |
Socket.IO signaling, presence, chat events, and MediaSoup capability discovery. |
| Media worker | apps/media-worker |
MediaSoup SFU workers, routers per room, and RTP capability exposure. |
| Background worker | apps/worker |
BullMQ processing for recordings/uploads and async jobs. |
- packages/ui: shared shadcn/ui components.
- packages/config: shared lint/format/TS config.
- Copy
.env.exampleto.envand fill in credentials. - Install dependencies.
- Run
npm run devfrom the repo root to start the Turborepo pipeline.
- Creator Studio UI and landing experience.
- NextAuth-powered auth routes.
- Client-side room workflow (create/join, live status, participant roster).
GET /healthandGET /statssystem endpoints.- Room lifecycle (
/rooms,/rooms/:roomId). - Session lifecycle (
/rooms/:roomId/sessions,/sessions/:sessionId). - Recording metadata (
/sessions/:sessionId/recordings,/recordings/:recordingId). - Participants (
/rooms/:roomId/participants).
- Socket.IO events:
room:join,room:leave,room:peer-joined,room:peer-left. - Room roster and hand-raise events.
- Optional MediaSoup RTP capability discovery for joining clients.
- MediaSoup worker pool (one per CPU by default).
- Room router creation and RTP capability exposure.
- HTTP control surface for room lifecycle (
POST /rooms,GET /rooms/:roomId).
- BullMQ queues for recordings and uploads.
- Async job handlers with completion/failure logging.