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:
15
src/types/index.ts
Normal file
15
src/types/index.ts
Normal 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";
|
||||
Reference in New Issue
Block a user