I organized the Meetup repository into three top‑level directories—client/, server/, and docs/—each containing modules for UI components, hooks, controllers, services, and tests, reflecting the full‑stack video‑meeting architecture.
The required environment variables are defined as: ORIGINS="http://localhost:5173,http://localhost:3000" DATABASE_URL="postgresql://<user>:<password>@<host>/<database>?sslmode=require" CLERK_PUBLISHABLE_KEY="pk_test_ CLERK_SECRET_KEY="sk_test_ CLERK_WEBHOOK_SIGNING_SECRET="whsec_ VITE_BASE_URL="http://localhost:3000" VITE_CLERK_PUBLISHABLE_KEY="pk_test_ VITE_ICE_SERVERS='[{"urls":"stun:stun.l.google.com:19302"}]'"
To start the frontend I run npm run dev in another terminal.
Load testing the platform with 12 concurrent clients across 3 rooms achieved 100 % state convergence and mean latency of 3 ms (p95 5 ms, p99 9 ms).
I chose Clerk for authentication, Yjs CRDT for deterministic real‑time sync, and Neon PostgreSQL for managed persistence, with optional TURN server support via VITE_ICE_SERVERS.
See also the overall feature list in meetup features.

