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
packageManagerinpackage.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.localEnvironment
Minimum for local development:
| Variable | Required | Notes |
|---|---|---|
DATABASE_URL | Yes | Neon pooled connection string recommended |
AUTH_SECRET | Yes | Session + guest cookie signing. Generate with openssl rand -base64 32. Production requires ≥32 chars. |
LIVEKIT_URL | Yes | e.g. ws://localhost:7880 locally |
LIVEKIT_API_KEY | Yes | Must match the LiveKit server config |
LIVEKIT_API_SECRET | Yes | Server-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:migrateMigrations 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 journalLiveKit (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=secretRun
bash
pnpm devOpen the app, register, create a room, join /room/[roomId]. Use a second browser profile for guest / multi-participant checks.
Quality commands
| Command | What it does |
|---|---|
pnpm test | Vitest unit tests |
pnpm lint | ESLint |
pnpm typecheck | tsc --noEmit |
pnpm build | Production Next.js build |
pnpm start | Serve the production build |