Docs

Getting started

Clone the repo, set env vars, migrate the database, point MeetCast at a LiveKit server, and run the app.

Requirements

  • Node.js 20+
  • pnpm 12.6 (see packageManager in package.json)
  • PostgreSQL (Neon pooled URL works out of the box)
  • A LiveKit server you can reach (local SFU or LiveKit Cloud). This repo does not ship a VPS or production LiveKit install.

Install

bash
git clone <your-fork-or-clone-url>
cd meetcast
pnpm install
cp .env.example .env.local

Environment

Minimum for local development:

VariableRequiredNotes
DATABASE_URLYesNeon pooled connection string recommended
AUTH_SECRETYesSession + guest cookie signing. Generate with openssl rand -base64 32. Production requires ≥32 chars.
LIVEKIT_URLYese.g. ws://localhost:7880 locally
LIVEKIT_API_KEYYesMust match the LiveKit server config
LIVEKIT_API_SECRETYesServer-only. Never put this in NEXT_PUBLIC_*

Optional: ADMIN_EMAILS, NEXT_PUBLIC_APP_URL, RESEND_API_KEY / RESEND_FROM_EMAIL, ZarinPal payment vars. Full list is on the Architecture and Security pages and in .env.example.

Database

bash
pnpm db:migrate

Migrations live under drizzle/. There is no separate seed script — default plans (Free, Starter, Pro, Business) are inserted by migration SQL.

bash
pnpm db:generate   # after schema changes
pnpm db:studio     # browse tables
pnpm db:check      # validate migration journal

LiveKit (local)

Run a local LiveKit server (see LiveKit local docs), or use LiveKit Cloud and paste the project URL/key/secret into .env.local. Typical local defaults:

env
LIVEKIT_URL=ws://localhost:7880
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=secret

Run

bash
pnpm dev

Open the app, register, create a room, join /room/[roomId]. Use a second browser profile for guest / multi-participant checks.

Quality commands

CommandWhat it does
pnpm testVitest unit tests
pnpm lintESLint
pnpm typechecktsc --noEmit
pnpm buildProduction Next.js build
pnpm startServe the production build