openvidu/openvidu-dashboard
juancarmore 84b96c4035 openvidu-dashboard: archive store-values-as-received, keep only the specs 2026-10-27 18:14:40 +01:00
..
.claude openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
dashboard-ce openvidu-dashboard: the rooms summary plan test bounds what the partial index reads 2026-10-27 18:09:50 +01:00
openspec openvidu-dashboard: archive store-values-as-received, keep only the specs 2026-10-27 18:14:40 +01:00
.dockerignore openvidu-dashboard: ./dashboard.sh dev runs the backend and frontend against openvidu-local-deployment 2026-10-26 19:00:12 +01:00
.editorconfig openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
.gitignore openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
.node-version openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
.prettierignore openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
.prettierrc openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
AGENTS.md openvidu-dashboard: ./dashboard.sh dev runs the backend and frontend against openvidu-local-deployment 2026-10-26 19:00:12 +01:00
CHANGELOG.md openvidu-dashboard: OpenAPI reference with operation IDs, described parameters and every error response 2026-10-27 10:42:41 +01:00
CLAUDE.md openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
README.md openvidu-dashboard: ./dashboard.sh dev runs the backend and frontend against openvidu-local-deployment 2026-10-26 19:00:12 +01:00
dashboard.sh openvidu-dashboard: ./dashboard.sh dev runs the backend and frontend against openvidu-local-deployment 2026-10-26 19:00:12 +01:00
eslint.config.mjs openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00
package.json openvidu-dashboard: ./dashboard.sh dev runs the backend and frontend against openvidu-local-deployment 2026-10-26 19:00:12 +01:00
pnpm-lock.yaml build(deps): bump ng-packagr 2026-10-26 13:16:06 +00:00
pnpm-workspace.yaml build(deps): bump ng-packagr 2026-10-26 13:16:06 +00:00
tsconfig.base.json openvidu-dashboard: OpenVidu Dashboard CE 2026-10-25 16:35:47 +01:00

README.md

OpenVidu Dashboard

Web application bundled with every OpenVidu deployment that gives administrators live monitoring and usage analytics of rooms, participants, tracks, egress and ingress. It reads the MongoDB analytics database written by the OpenVidu server (openvidu-livekit).

This workspace holds the Community edition (CE, dashboard-ce/). OpenVidu PRO deployments run a commercial edition built on these packages, whose features CE shows locked.

Layout

Path Package Role
dashboard-ce/typings @openvidu-dashboard/typings Contracts shared by backend and frontend
dashboard-ce/backend @openvidu-dashboard/backend REST API; serves the built single-page application
dashboard-ce/frontend @openvidu-dashboard/frontend Angular application shell and the UI library
dashboard-ce/e2e @openvidu-dashboard/e2e End-to-end tests (Playwright)
dashboard-ce/tools/data-generator @openvidu-dashboard/data-generator Analytics data for tests and the local demo
openspec/ Specifications and in-progress changes (OpenSpec)

Requirements

  • Node.js 24 (see .node-version)
  • pnpm, enabled through Corepack (corepack enable); the version is pinned by packageManager in package.json

Browser support

Current Chrome, Edge, Firefox and Safari: the theme needs CSS light-dark() (Chrome and Edge 123, Firefox 120, Safari 17.5).

Commands

All tasks run through ./dashboard.sh:

./dashboard.sh install            # install dependencies
./dashboard.sh check              # lint + format check + type check + spec validation + unit tests
./dashboard.sh dev                # backend and frontend dev servers against openvidu-local-deployment
./dashboard.sh demo ce            # local demo on generated data: http://localhost:4200, admin / admin
./dashboard.sh test-integration   # integration tests against MongoDB (Docker required)
./dashboard.sh e2e                # build the application and run the Playwright tests
./dashboard.sh build-image ce     # build openvidu/openvidu-dashboard:dev
./dashboard.sh smoke-image ce     # smoke test and size budget of that image
./dashboard.sh contract-check ../openvidu-livekit   # data model contract check against the writer
./dashboard.sh help               # list every command

Development

./dashboard.sh dev runs the backend and frontend development servers against the MongoDB of an openvidu-local-deployment running on this machine, both reloading on changes: http://localhost:4200, admin / admin. Ctrl+C stops both. Without a deployment, ./dashboard.sh demo ce runs the same servers on generated data instead.

  • Before starting, it checks the configuration and that MongoDB answers, and says what to do when it does not.
  • The backend reads dashboard-ce/backend/dev.env, the defaults for the local deployment. A git-ignored dashboard-ce/backend/.env overrides them, and the environment overrides both, for example DATABASE_URL for another MongoDB or LOG_LEVEL=debug. The deployment's replica set advertises its member as mongo:27017, which only Docker resolves, so a URL from the host needs directConnection=true.
  • DASHBOARD_DEV_PORT (default 4200) and DASHBOARD_DEV_BACKEND_PORT (default 5000) move the servers, for example off port 5000 where macOS runs AirPlay.
  • The deployment needs a 3.10 OpenVidu server: data appears once it writes the analytics database, and an older writer schema stops the check.

Container image

openvidu/openvidu-dashboard, built from dashboard-ce/docker/Dockerfile on node:24-trixie-slim (node dist/server.js).

  • The build context is this directory. IMAGE_TAG (default dev) and BASE_HREF (default /; deployments use /dashboard/) apply.
  • The image runs as uid 1000 and writes nothing to disk; mounted files (DASHBOARD_CONFIG_PATH, DATABASE_TLS_CA_FILE) must be readable by that user. The container listens on SERVER_PORT (5000) and its HEALTHCHECK requests GET /api/healthcheck on that port.
  • ./dashboard.sh smoke-image ce checks MONGO_ENABLED=false, health, GET /api/healthcheck, HEAD /, uid 1000, SERVER_PORT, docker stop and the 300 MB size budget.

Configuration

Environment variables, optionally loaded from the file at DASHBOARD_CONFIG_PATH (the environment wins). New names start with DASHBOARD_, or DATABASE_ for database connection settings; the others keep their 3.9 meaning.

Variable Default Meaning
ADMIN_USERNAME, ADMIN_PASSWORD required Administrator credentials
SERVER_PORT 5000 HTTP port
LOG_LEVEL info error, warn, info, http, verbose, debug or silly
DASHBOARD_CONFIG_PATH KEY=value file read at startup; a missing file logs a warning
MONGO_ENABLED true Anything but true stops the dashboard with exit code 0
DATABASE_URL MongoDB connection string; otherwise composed from the MONGO_* variables
MONGO_NODES, MONGO_PORT, MONGO_ADMIN_USERNAME, MONGO_ADMIN_PASSWORD, MONGO_REPLICA_SET_NAME Parts of the composed connection string (readPreference=primaryPreferred)
DATABASE_NAME openvidu Analytics database
DATABASE_TLS_CA_FILE PEM file of a private certificate authority; enables TLS
DASHBOARD_JWT_SECRET generated once Signing key of the session tokens, at least 32 bytes
DASHBOARD_REFRESH_TOKEN_TTL 604800 Session lifetime without use, in seconds
DASHBOARD_COOKIE_SECURE auto auto, true or false
DASHBOARD_TRUST_PROXY private networks false, a hop count, or addresses, CIDRs, loopback, linklocal and uniquelocal; true is refused
DASHBOARD_BASE_PATH the SPA <base href> Public path of the dashboard
DASHBOARD_LIST_TOTAL_MAX_RANGE 7d Longest range for which lists count their total
DASHBOARD_ANALYTICS_CACHE_TTL 60 Seconds the analytics folds of completed rollup documents are kept; 0 disables it

Exit codes

Code Meaning
0 Stopped by a signal, or MONGO_ENABLED is not true
1 Invalid configuration or MongoDB unreachable
3 The OpenVidu server's analytics schema is older than this dashboard supports

Contributing

Read AGENTS.md, and the one of the package you change, before changing anything: they describe the edition model, conventions and the spec-driven workflow used in this workspace.