Skip to main content
Version: v0.21.0

Build process

The pnpm workspace links the APIs, UIs and shared libraries. Each component image contains its API and UI and is built with its own Dockerfile-<component> at the repository root. EMBEDDED_FRONTEND enables the bundled UI; the Docker images set it automatically and serve API routes under /api after any public subpath.

From the repository root, use the pinned pnpm version and build the libraries before starting an API:

pnpm install --frozen-lockfile
pnpm build:libs

Run a package script with pnpm --filter @apps/control-plane-api <script>.

Development​

Use the managed HTTP sample for the coordinated stack. App-local YAML files are individual service examples; register the exact SSO clients, receiving audiences and provisioning identities before using them. Tenant Management creates or explicitly imports participants.

VS Code settings are included for formatting and debugging. Run the relevant test scripts explicitly when checking a change.

To run the control-plane-ui and control-plane-api in watch mode use the following command:

pnpm dev:control-plane-api

and

pnpm dev:control-plane-ui

For interactions between organizations, use the managed HTTP sample. It provisions Alice and Bob on one Control Plane with separate identities, catalogs and grants. A separate Control Plane process needs its own database, public address, ports and managed service registration; configure those explicitly before starting it.

Docker​

Build from the repository root:

docker build -f Dockerfile-control-plane -t control-plane:local .

Run the image with the coordinated service configuration, persistent database and secret references from the managed HTTP sample. Set CONFIG_PATH to the mounted configuration and publish its configured server port. Supply stable SESSION_SECRET and TENANCY_SECRET values and preserve them with the database. The image alone does not provision organizations, browser clients, service grants or the other services in the managed stack.

Database schema migrations​

Changes to data access objects (*.dao.ts) can require migrations. Keep separate SQLite (*-sqlite.ts) and PostgreSQL (*-postgres.ts) migrations under src/migrations. Generate them and check for remaining schema changes with:

pnpm --filter @apps/control-plane-api migrations:generate
pnpm --filter @apps/control-plane-api migrations:check

Back up existing databases before applying an upgrade. Schema checks do not establish that an existing participant has been imported into Tenant Management.

Continuous integration​

The GitLab pipeline builds components, runs tests and schema checks, scans dependencies and containers, and checks generated configuration and API references. Release publication uses the repository's release jobs. Consult the current pipeline definition for job rules and release parameters.