Docs

Deployment

What you need for a real deployment later. MeetCast does not currently ship a VPS, custom domain, or production LiveKit install in this repo.

Pieces

text
MeetCast application (Next.js)
        │
        ├── Application hosting (Node 20+)
        │
        ├── PostgreSQL (e.g. Neon)
        │
        └── LiveKit server (separate host, WSS + media ports)

The app and LiveKit are separate. Changing LIVEKIT_URL from local ws:// to production wss:// is an environment change, not an app rewrite — but you still have to operate the LiveKit side yourself.

Application host

bash
pnpm install --frozen-lockfile
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm start

Put the Node process behind HTTPS. Set the same env names as .env.example on the host. Prefer NEXT_PUBLIC_APP_URL for absolute invite and email links.

Database

  1. Create a Postgres database (Neon pooled URL works).
  2. Run pnpm db:migrate against that DATABASE_URL from a trusted machine/CI.
  3. Review SQL under drizzle/ before applying.

LiveKit (production)

You will need:

  • A host reachable from browsers
  • TLS so clients use wss://…
  • API key/secret matching the Next.js env
  • Open UDP/TCP ports LiveKit documents for WebRTC
  • Often TURN for hard NATs
  • Reasonable clock sync (JWT nbf/exp)

Optional services

  • Resend — auth emails
  • ZarinPal — paid checkout when prices are non-zero

Current limitations

  • No production domain or VPS is configured in this repository
  • No Redis / secondary realtime bus
  • Capacity soft-check can race under burst joins
  • Ending a room in Postgres does not instantly disconnect LiveKit peers
  • 50-participant load has not been benchmarked here

Health

GET /api/health returns a safe ok / degraded payload after checking the database. Prefer restricting public access at the reverse proxy if you want.