How terasky-oss/backstage-plugins works
1. This repository is a monorepo of Backstage plugins and modules, not a single app. The dominant architecture is “plugin family” based: each integration usually has a frontend package, a backend package, and sometimes a shared common package plus optional ingestor/auth/module packages.
2. The runtime split is consistent across the repo. Frontend packages are React/TypeScript Backstage plugins that render catalog pages, cards, tabs, field extensions, or app modules. Backend packages are Node/TypeScript Backstage backend plugins or modules that expose HTTP routes, permissions, catalog providers, scaffolder actions, or auth integrations.
3. Most feature flows follow the same path: Backstage UI component or field extension calls a generated client/API wrapper, which talks to a backend route in the matching backend plugin. The backend then either proxies to an external SaaS API, queries Kubernetes, or performs action logic. Permission-aware features usually gate the frontend with shared permission definitions and enforce them again on the backend.
4. Several packages are catalog ingest sources rather than UI. The ingestor/provider plugins discover external resources or Kubernetes resources and publish Backstage entities into the catalog. This is especially important for Kubernetes Ingestor, SpectroCloud Ingestor, VCF Automation Ingestor, and the cluster providers, which turn external platform state into catalog entities and relationships.
5. There is a strong “shared library” boundary. Packages named *-common hold shared types, permission constants, and utilities used by both frontend and backend halves of a feature. That keeps policy definitions and domain types aligned without coupling the UI directly to backend internals.
6. Kubernetes is a major integration boundary. The Kubernetes Ingestor reads cluster workloads and Crossplane/KRO resources and emits catalog entities. The Kubernetes Resources, Crossplane Resources, and KRO Resources plugins visualize Kubernetes-owned infrastructure. The corresponding backend permission packages sit between the UI and cluster-derived data to control what can be viewed.
7. AI/automation support is a second major architectural theme. MCP-enabled backends expose structured actions for AI agents over catalog, RBAC, scaffolder, ScaleOps, AI rules, and other domains. These backends are not UI-driven; they publish machine-consumable operations for querying, auditing, or mutating Backstage-adjacent state.
8. Authentication is handled as pluggable auth modules. SpectroCloud SSO, VCF SSO, and related Kubernetes auth modules plug into the Backstage auth stack and, in some cases, the Kubernetes integration. The pattern is: frontend auth client initiates OAuth/OIDC, backend auth module performs token exchange or claim transformation, and downstream plugins reuse the resulting identity for sign-in or cluster access.
9. Some plugins are “editor” or “builder” tools rather than dashboards. Template Builder is a full visual editor for Backstage software templates, synchronizing a graph canvas, YAML editor, validation, and field-extension discovery. Terraform Scaffolder and Spring Initializer are field extensions/actions that enrich software templates by discovering and configuring external generation targets.
10. The repository also includes platform-level modules that affect how Backstage loads plugins. Module Federation CDN Backend injects dynamic frontend plugins from a CDN, while the Global Sign-In Page module configures sign-in behavior from YAML. These sit at the app/platform layer rather than in a domain integration.
11. packages/app and packages/backend are the reference host application. They provide the Backstage shell used to assemble and exercise the plugins, but the individual plugins are the primary units of deployment and reuse.
12. site/ is a separate documentation system, built from Markdown into a plugin catalog site. It reflects the repo’s packaging model: each plugin has install/configure/about docs, matching the frontend/backend/module split and making the documentation a parallel architecture map for consumers.
13. Tooling reinforces the monorepo boundaries: Yarn 4 workspaces, Backstage 1.50.3 compatibility, per-package tests, and GitHub workflows for publishing, docs, and version bumps. The build/release process is organized around independently publishable plugin packages rather than one consolidated artifact.
Main entry points: ai-rules-plugin-backend AI rules backend · spectrocloud-common Spectro common · crossplane-resources Crossplane UI · spectrocloud SpectroCloud UI
Components 34
Platform
Host app, platform modules, and repository-wide loading/runtime concerns.
- App shell · Reference frontend shell used to assemble and exercise plugins.
packages/app - Backend shell · Reference backend host for mounting backend plugins and modules.
packages/backend - CDN module · Injects frontend plugins dynamically from a CDN.
plugins/module-federation-cdn-backend - Signin module · Configures global sign-in behavior at the app layer.
plugins/app-module-global-signin-page
Catalog + Kubernetes
Kubernetes-centric UI, backends, and ingest pipelines.
- Crossplane common · Shared Crossplane domain types used by frontends and backends.
plugins/crossplane-common - Crossplane UI · Visualizes Crossplane resources with overview cards, tables, and graphs.
plugins/crossplane-resources - Crossplane backend · Serves Crossplane resource data and Kubernetes-backed routes.
plugins/crossplane-resources-backend - KRO common · Shared KRO domain types and helpers.
plugins/kro-common - KRO UI · Shows KRO resources with overview, table, and graph views.
plugins/kro-resources - KRO backend · Backs KRO visualizations with Kubernetes queries and routes.
plugins/kro-resources-backend - K8s ingestor · Discovers Kubernetes, CRD, Crossplane, and KRO resources and publishes catalog entities.
plugins/kubernetes-ingestor - K8s common · Shared Kubernetes resource types and helpers.
plugins/kubernetes-resources-common - K8s permissions · Backend permission layer for Kubernetes resource visibility.
plugins/kubernetes-resources-permissions-backend - K8s UI · Catalog-style UI for Kubernetes resources and availability checks.
plugins/kubernetes-resources
Automation
AI, scaffolder, and external automation integrations.
- Template builder · Full visual editor for Backstage software templates.
plugins/template-builder - Spring initializer · Template field extension for Spring project generation.
plugins/spring-initializer - Terraform scaffolder · Template field extension for Terraform module discovery and configuration.
plugins/terraform-scaffolder - AI rules backend · Machine-consumable backend exposing AI rules, skills, agent configs, and actions.
plugins/ai-rules-plugin-backend - AI rules UI · Frontend surfaces for AI rules, MCP servers, agent configs, and instructions.
plugins/ai-rules-plugin - Catalog MCP · Agent-facing actions for catalog operations.
plugins/catalog-mcp-backend - RBAC MCP · Agent-facing RBAC operations.
plugins/rbac-mcp-backend - Scaffolder MCP · Agent-facing scaffolder operations.
plugins/scaffolder-mcp-backend
Vendor integrations
SpectroCloud and VCF plugin families with shared auth and ingestors.
- ScaleOps UI · Dashboard and cards for ScaleOps data.
plugins/scaleops-frontend - ScaleOps backend · Backend routes and actions for ScaleOps integration.
plugins/scaleops-backend - Spectro common · Shared SpectroCloud domain types and helpers.
plugins/spectrocloud-common - SpectroCloud UI · Cluster deployment, viewer, resources, and permission-aware UI.
plugins/spectrocloud - SpectroCloud backend · Routes, client wrappers, and action logic for SpectroCloud.
plugins/spectrocloud-backend - Spectro ingestor · Publishes SpectroCloud entities into the catalog.
plugins/spectrocloud-ingestor - Cluster provider · Periodically supplies SpectroCloud cluster entities.
plugins/spectrocloud-cluster-provider - Spectro auth UI · Frontend auth client for SpectroCloud sign-in.
plugins/spectrocloud-auth - Spectro auth backend · Auth module handling token exchange and identity plumbing.
plugins/spectrocloud-auth-backend - K8s auth module · Kubernetes auth module used with SpectroCloud identity flows.
plugins/spectrocloud-kubernetes-auth-module - VCF ops common · Shared VCF Operations domain types.
plugins/vcf-operations-common
Docs
Documentation site that mirrors the plugin packaging model.
- Docs site · Separate documentation system for plugin install, configure, and about pages.
site
Connections 29
- App shell → CDN module: loads plugins · App shell consumes dynamically served frontend modules.
- App shell → Signin module: uses · App shell is configured by the global sign-in module.
- Backend shell → AI rules backend: hosts · Reference backend mounts the AI rules service.
- Backend shell → SpectroCloud backend: hosts · Reference backend mounts the SpectroCloud service.
- Docs site → Crossplane UI: documents · Docs site mirrors plugin packaging for consumers.
- Docs site → SpectroCloud UI: documents · Docs site mirrors plugin packaging for consumers.
- Crossplane UI → Crossplane common: shares types · Frontend consumes shared Crossplane types and annotations.
- Crossplane backend → Crossplane common: shares types · Backend uses the shared Crossplane domain boundary.
- Crossplane UI → Crossplane backend: calls API · UI fetches Crossplane data from matching backend routes.
- KRO UI → KRO common: shares types · Frontend consumes shared KRO types.
- KRO backend → KRO common: shares types · Backend uses the shared KRO domain boundary.
- KRO UI → KRO backend: calls API · UI fetches KRO data from matching backend routes.
- K8s ingestor → K8s common: publishes entities · Ingestor turns cluster state into catalog data used by Kubernetes plugins.
- K8s UI → K8s permissions: checks access · Frontend is guarded by backend-enforced permissions.
- K8s UI → K8s common: shares types · Frontend relies on shared Kubernetes resource types.
- Template builder → Spring initializer: extends · Template builder can incorporate generation-oriented field extensions.
- Template builder → Terraform scaffolder: extends · Template builder can incorporate Terraform-oriented field extensions.
- AI rules backend → Catalog MCP: agent ops · MCP family exposes catalog-related actions.
- AI rules backend → RBAC MCP: agent ops · MCP family exposes RBAC-related actions.
- AI rules backend → Scaffolder MCP: agent ops · MCP family exposes scaffolder-related actions.
- ScaleOps UI → ScaleOps backend: calls API · ScaleOps UI talks to its backend service.
- SpectroCloud UI → Spectro common: shares types · SpectroCloud UI and backend stay aligned through shared types.
- SpectroCloud backend → Spectro common: shares types · SpectroCloud backend uses the shared domain boundary.
- SpectroCloud UI → SpectroCloud backend: calls API · Frontend workflows depend on backend route and client wrappers.
- Spectro ingestor → Spectro common: shares types · Ingestor publishes entities using shared SpectroCloud types.
- Cluster provider → Spectro common: shares types · Cluster supplier uses shared SpectroCloud types.
- Spectro auth UI → Spectro auth backend: auth flow · Frontend initiates sign-in handled by backend auth module.
- Spectro auth backend → K8s auth module: integrates · Auth backend feeds Kubernetes identity plumbing.
- VCF ops common → ScaleOps backend: shared boundary · Representative shared-library pattern across vendor integrations.