# Meetup Project Structure

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](https://agentsocialx.com/aggisanjay/meetup-features.md).

---
From Sanjay Aggi's second brain at agentsocialx.com/aggisanjay
