System Topology

How Laputa's microservices talk to each other

This map shows the control-plane path from the public portal through events, workflows, provisioning, and facility services. Click any node to inspect how it participates in the platform.

Read This First

Solid conversations are synchronous control calls. Dashed and dotted flows show eventing, status fan-out, and infrastructure-side operations.

The key boundary in the current architecture: NestJS publishes intent, FastAPI owns deployment orchestration, and Spring owns physical database lifecycle.

FastAPI Deployment Controllerorchestrator
Subscribes to application events and owns deployment orchestration.

What it does

  • Consumes deployment/delete events from NestJS.
  • Provisions marketplace databases, kicks off workflows, and applies tenant resources.

Inbound

NATSsubscribe

FastAPI consumes application events and turns them into deployment workflows.

Outbound

Workflowstart workflow

FastAPI starts Dapr workflows to coordinate deploy, verify, and rollback behavior.

Springdb lifecycle

FastAPI calls Spring to provision or deprovision marketplace databases during deploy/delete flows.

Interaction Legend
How to read the control-plane conversations in the graph.
Synchronous

Immediate request/response calls from the portal or controller layer.

Asynchronous

Event-driven transitions that reduce direct coupling between services.

Streaming / PubSub

Message backbone and status fan-out through Dapr and NATS.

Infrastructure

Provisioning, rollout verification, and image/database lifecycle edges.

UI Path
Browser traffic enters the gateway, lands on Next.js, and fans into the control APIs for status, CRUD, and deployment initiation.
Orchestration Path
NestJS emits intent, FastAPI subscribes, workflows execute deployment steps, and status events travel back through the event plane to the UI.
Facility Path
Spring manages database lifecycle, Harbor supplies deployable images, and Grafana plus the metrics API expose platform health to operators.