The self-hosted web UI for Lumyx — rooms, peers and live media quality at a glance.
Scaffold. The routes and layout are in place (rooms, peers, metrics, signaling, alerts, replay, server, settings) with mock data. Nothing here talks to the SFU yet.
You need Bun and Node.js ≥ 22.18.
bun install
bun run dev # http://localhost:3001It runs on port 3001 so it can sit next to the SFU, which listens on 3000.
| Script | What it does |
|---|---|
bun run dev |
Dev server on port 3001 |
bun run build / bun run start |
Production build and server |
bun run lint |
ESLint |
bun run check-types |
TypeScript, no emit |
bun run verify:ds |
Design-system constraints |
Next.js 16 (App Router) · React 19 · Tailwind CSS 4 · TypeScript ·
@lumyx/ui for components and tokens.
The SFU already exposes everything a first useful version requires:
GET /metrics— room count, peer count and throughput counters, polled or streamedGET /health— liveness
Building on top of that: a room list, a per-peer view, and — once the quality-metrics milestone lands in the SFU — live jitter, packet loss and RTT charts. See the SFU roadmap.
Design notes live in docs/. AGENTS.md is generated by next dev; leave it alone.
AGPL-3.0-only © Mathieu Chambaud. See AGPL & you for what that means in practice.
Versions follow SemVer and are cut from an up-to-date main:
npm version patch # or minor / majorThis runs the CI checks, bumps package.json, commits chore(release): vX.Y.Z, tags vX.Y.Z
and pushes. The tag triggers the Release workflow, which publishes a GitHub release with
generated notes and pushes the Docker image to ghcr.io/lumyx-dev/dashboard:X.Y.Z.