Skip to content

Marketplace

Purpose

The Marketplace is the service-provider discovery and self-service installation hub for Platform Mesh. It allows workspace users to browse a catalog of available service providers (extensions), view their metadata, and install or uninstall them with a single click.

Under the hood, installing a provider creates a Kubernetes APIBinding in the current workspace that points at the provider's APIExport, granting the workspace access to the provider's APIs and controllers.

The key capabilities are:

  • Provider catalog — browsable, searchable, and filterable list of all available service providers
  • Provider details — full metadata view: description, contacts, documentation, support channels, service level, and verification status
  • Install — creates an APIBinding in the current workspace with all required permission claims auto-accepted
  • Uninstall — deletes the APIBinding after a confirmation dialog
  • Theme support — renders provider icons in light or dark variants based on the active SAP Fiori theme
  • "New" badge — providers created less than 3 months ago are automatically tagged as new

Runtime role

The Marketplace UI is a single-page Angular microfrontend loaded by Luigi inside an iframe, mounted at /ui/marketplace/ui/. It reads its runtime context (API gateway URL, account scope, auth token) from the Luigi globalContext and connects to the Kubernetes GraphQL Gateway to query MarketplaceEntry resources and execute APIBinding mutations.

Luigi globalContext

Marketplace UI (iframe)

GraphQL (Apollo) → Kubernetes GraphQL Gateway

MarketplaceEntry resources + APIBinding create/delete

Luigi navigation nodes registered by the UI:

PathSegmentEntityTypeVisibilityPurpose
marketplacemain.core_platform-mesh_io_accountVisible (order 700)Provider catalog listing
provider/:providerNameaccountHiddenProvider detail view

The active accountId is forwarded from the Luigi context to every GraphQL request so that spec.installed reflects the binding state of the current workspace.

Technology stack

ComponentTechnology
FrameworkAngular 21
UI componentsSAP Fundamental NGX 0.61
Micro-frontend orchestrationLuigi 2.22
State managementNgRx 21
GraphQL clientApollo Angular / Apollo Client 4
Subscriptions transportSSE (Server-Sent Events)
i18nAngular localization (English, German)
TestingVitest 4
LanguageTypeScript (ES2022, strict mode)
Containernginx:alpine, served on port 8080

Repository

Configuration

The UI reads all runtime configuration from the Luigi node context injected by the Portal. No static environment files are required in production. The relevant context fields are:

FieldPurpose
portalContext.crdGatewayApiUrlBase URL for the Kubernetes GraphQL Gateway
accountIdCurrent workspace scope for install/uninstall operations
tokenBearer token forwarded to every GraphQL request
analyticsTrackerConfigOptional Matomo analytics configuration
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.