Build process
The pnpm workspace links the APIs, UIs and shared libraries. The Analytics Data Plane image uses Dockerfile-analytics-data-plane and includes the API and operator UI. EMBEDDED_FRONTEND enables that UI and mounts API routes under the configured subpath plus /api.
From the repository root:
pnpm install --frozen-lockfile
pnpm build:libs
pnpm --filter @apps/analytics-data-plane-api build
pnpm --filter @apps/analytics-data-plane-ui build
Run locally
Use the analytics sample for the complete managed Control Plane/Wallet topology, explicit owner configuration and Docker worker labels. A standalone Docker worker or split client must itself run in a verified Docker container. Starting that worker directly as a host Node.js process does not satisfy its runtime boundary.
A split server can run directly as a Node.js process because it has no local runtime:
CONFIG_PATH=/absolute/path/to/server-config.yaml pnpm dev:analytics-data-plane-api
BACKEND=http://localhost:3602 pnpm dev:analytics-data-plane-ui
The server configuration still requires explicit control-plane and worker identities, nonempty owner scopes, strict authentication and assigned bridge runners. Use separate databases and ports for separate deployments.
Build the image
docker build -f Dockerfile-analytics-data-plane -t analytics-data-plane:local .
An image alone is insufficient to start a worker. Supply the verified container identity labels, Docker socket, explicit owner/source configuration and durable state. The sample Compose configuration contains those settings. See deployment for Docker and Kubernetes requirements. After rebuilding a running worker, drain its jobs and recreate the controller. Submit fresh jobs after restart.
Schema and generated documentation
Changes to *.dao.ts may require SQLite and PostgreSQL migrations:
pnpm --filter @apps/analytics-data-plane-api migrations:generate
pnpm --filter @apps/analytics-data-plane-api migrations:check
Keep existing participant databases separate during upgrades. Migrations retain historical rows without inventing ownership; old unowned work stays fenced.
Regenerate current configuration and HTTP API references from the application classes:
pnpm --filter @apps/analytics-data-plane-api configDocs
pnpm --filter @apps/analytics-data-plane-api swagger
Run focused tests for the changed execution, signaling or bridge behavior. A passing build or unit suite does not verify a live Docker network, Kubernetes CNI, OAuth browser flow or completed federated job.