feat: LiveServer-M1 v1 — educational video conferencing platform

Full MVP implementation:
- Next.js 16 + React 19 + TypeScript + Tailwind CSS v4
- LiveKit integration (rooms, tokens, webhooks, moderation)
- better-auth (email/password, sessions, roles)
- Prisma 7 + PostgreSQL (9 models, 3 enums)
- 15 API routes (auth, rooms, lobby, chat, files, moderation, hand-raise)
- 7 pages (landing, auth, dashboard, join, video room)
- SSE-based waiting room with host approval flow
- Security: PIN rate limiting, session fingerprint bans, chat/files auth
- Python AI Agent (Deepgram STT + OpenAI summarization)
- Docker Compose (local + production with Traefik + Let's Encrypt)
- Interactive setup script (setup.sh)
- Dev protection middleware (DEV_ACCESS_KEY, ALLOWED_IPS)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-22 13:57:53 +03:00
parent e5bb4c99ec
commit 3846e3e00d
59 changed files with 12792 additions and 240 deletions

15
src/types/index.ts Normal file
View File

@@ -0,0 +1,15 @@
export type RoomSecuritySettings = {
lobbyEnabled: boolean;
pinHash: string | null;
webinarMode: boolean;
isLocked: boolean;
};
export type LobbyAction = "APPROVED" | "REJECTED";
export type SSELobbyEvent = {
status: "PENDING" | "APPROVED" | "REJECTED";
token?: string; // LiveKit token, only on APPROVED
};
export type ModerationAction = "kick" | "ban" | "mute_all" | "grant_publish" | "revoke_publish";