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 startPut 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
- Create a Postgres database (Neon pooled URL works).
- Run
pnpm db:migrateagainst thatDATABASE_URLfrom a trusted machine/CI. - 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.