Skip to content

Portal

Purpose

The Portal is the primary web interface for Platform Mesh. It is an Angular microfrontend shell built on the Luigi framework that composes IAM, Marketplace, and any custom extensions into a single, cohesive user experience.

The Portal acts as the orchestration layer for the entire Platform Mesh UI surface. Its responsibilities are:

  • Workspace navigation — lets users traverse the KCP workspace hierarchy (root → org → account → namespace) with context-aware navigation nodes that update as the selected workspace changes
  • Org / account / namespace management — surfaces CRUD operations for the main Platform Mesh entities, delegating rendering to embedded microfrontends
  • Kubeconfig download — generates and serves a ready-to-use kubeconfig scoped to the current workspace
  • Home dashboard — shows a summary of the current workspace context (owner, path, service bindings)
  • Terminal-as-a-Service — an in-browser shell powered by xterm.js and a ttyd-based WebSocket backend, available when the terminal feature toggle is enabled
  • Microfrontend orchestration — loads and frames IAM UI, Marketplace UI, and any registered extension microfrontends inside Luigi iframes with shared authentication context
  • Authentication shell — handles the OIDC / OAuth2 login flow via the Luigi OAuth2 plugin and forwards JWT tokens to all child microfrontends

Runtime role

It lets users onboard organizations, navigate accounts, and navigate the KCP workspace hierarchy. All routing is owned by Luigi, not the Angular router — Luigi handles deep links, iframe lifecycle, and context propagation to child microfrontends. Navigation nodes (accounts, namespaces, IAM, Marketplace, Terminal) are built dynamically in TypeScript service classes that implement Luigi's node configuration interfaces.

Every navigation node is scoped to a KCP workspace path (e.g. root:orgs:my-org:my-account). The backend derives the active workspace path from the authenticated user's context and injects it into the Luigi globalContext, making it available to all child microfrontends without additional round-trips.

Repository

EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.