# drewpayment/orbit architecture

> Architecture diagram of the GitHub repository drewpayment/orbit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/drewpayment/orbit
- Repository: https://github.com/drewpayment/orbit

## Overview

Orbit is an internal developer portal for governed, workspace-scoped self-service. The main journey is from portal use to template-based service creation or cloud launch, then lifecycle/catalog tracking; separate capabilities cover Kafka, knowledge, and API/catalog discovery. The README documents Temporal orchestration and integrations, while sampled code confirms worker registration, template rendering, and LLM-provider loading. Many UI-to-action and persistence links are not shown in the excerpts, so those uncertain connections are omitted.

Main entry points: [`orbit-www/src/app/layout.tsx`](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/layout.tsx) (Orbit portal), [`temporal-workflows/cmd/worker/main.go`](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/cmd/worker/main.go) (Temporal worker), [`launches-worker-azure/src/worker.ts`](https://github.com/drewpayment/orbit/blob/main/launches-worker-azure/src/worker.ts) (Azure launch worker), [`temporal-workflows/internal/services/payload_llm_provider_client.go`](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/services/payload_llm_provider_client.go) (LLM provider client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Portal experience"]
  node_portal["Orbit portal<br/>[layout.tsx]"]
  node_workspace["Workspaces"]
  node_auth["Authentication<br/>[auth-client.ts]"]
end

subgraph group_lifecycle["Service lifecycle"]
  node_templates["Templates<br/>[page.tsx]"]
  node_apps["Application lifecycle<br/>[page.tsx]"]
  node_launches["Cloud launches<br/>[page.tsx]"]
  node_appdata[("Application records<br/>[Apps.ts]")]
  node_launchdata[("Launch records<br/>[Launches.ts]")]
  node_templatedata[("Template records<br/>[Templates.ts]")]
end

subgraph group_catalog["Catalog and knowledge"]
  node_catalogui["Catalog views<br/>[page.tsx]"]
  node_apischemas[("API schemas<br/>[APISchemas.ts]")]
  node_entities[("Catalog entities<br/>[CatalogEntities.ts]")]
  node_knowledge["Knowledge spaces<br/>[page.tsx]"]
  node_knowledgedata[("Knowledge records<br/>[KnowledgePages.ts]")]
end

subgraph group_kafka["Kafka platform"]
  node_kafkaui["Kafka self-service<br/>[page.tsx]"]
  node_kafkadata[("Kafka records<br/>[KafkaTopics.ts]")]
end

subgraph group_execution["Workflow execution"]
  node_temporalworker["Temporal worker<br/>[main.go]"]
  node_renderer["Template renderer<br/>[engine.go]"]
  node_azureworker["Azure launch worker<br/>[worker.ts]"]
  node_llmclient["LLM provider client"]
  node_storage["Object storage client<br/>[storage_client.go]"]
end

node_developer(("Developer"))
node_temporal["Temporal"]
node_payloadapi["Payload internal API<br/>[route.ts]"]
node_cloud{{"Cloud providers"}}
node_s3[("S3-compatible storage")]

node_developer -->|"uses"| node_portal
node_portal -->|"authenticates"| node_auth
node_portal -->|"manages"| node_workspace
node_portal -->|"opens"| node_templates
node_portal -->|"tracks"| node_apps
node_portal -->|"starts"| node_launches
node_portal -->|"browses"| node_catalogui
node_portal -->|"documents"| node_knowledge
node_portal -->|"requests"| node_kafkaui
node_temporalworker -->|"registers workers"| node_temporal
node_temporalworker -->|"renders templates"| node_renderer
node_azureworker -->|"provisions resources"| node_cloud
node_llmclient -->|"loads credentials"| node_payloadapi
node_storage -->|"uploads objects"| node_s3

click node_portal "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/layout.tsx"
click node_workspace "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/components/features/workspace/WorkspaceManager.tsx"
click node_auth "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/lib/auth-client.ts"
click node_templates "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/templates/page.tsx"
click node_apps "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/apps/page.tsx"
click node_launches "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/launches/page.tsx"
click node_appdata "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Apps.ts"
click node_launchdata "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Launches.ts"
click node_templatedata "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Templates.ts"
click node_catalogui "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/catalog/page.tsx"
click node_apischemas "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/api-catalog/APISchemas.ts"
click node_entities "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/catalog/CatalogEntities.ts"
click node_knowledge "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/workspaces/%5Bslug%5D/knowledge/page.tsx"
click node_knowledgedata "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/KnowledgePages.ts"
click node_kafkaui "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/workspaces/%5Bslug%5D/kafka/page.tsx"
click node_kafkadata "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/kafka/KafkaTopics.ts"
click node_temporalworker "https://github.com/drewpayment/orbit/blob/main/temporal-workflows/cmd/worker/main.go"
click node_renderer "https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/templating/engine.go"
click node_azureworker "https://github.com/drewpayment/orbit/blob/main/launches-worker-azure/src/worker.ts"
click node_llmclient "https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/services/payload_llm_provider_client.go"
click node_storage "https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/clients/storage_client.go"
click node_payloadapi "https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/api/internal/llm-providers/%5Bid%5D/route.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_portal,node_workspace,node_auth toneBlue
class node_templates,node_apps,node_launches,node_appdata,node_launchdata,node_templatedata,node_s3 toneAmber
class node_catalogui,node_apischemas,node_entities,node_knowledge,node_knowledgedata,node_payloadapi toneMint
class node_kafkaui,node_kafkadata toneRose
class node_temporalworker,node_renderer,node_azureworker,node_llmclient,node_storage,node_developer,node_temporal,node_cloud toneIndigo
```

## Components

### Portal experience

- [Orbit portal](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/layout.tsx): `orbit-www/src/app/layout.tsx`
- [Workspaces](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/components/features/workspace/WorkspaceManager.tsx): `orbit-www/src/components/features/workspace/WorkspaceManager.tsx`
- [Authentication](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/lib/auth-client.ts): `orbit-www/src/lib/auth-client.ts`

### Service lifecycle

- [Templates](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/templates/page.tsx): `orbit-www/src/app/(frontend)/templates/page.tsx`
- [Application lifecycle](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/apps/page.tsx): `orbit-www/src/app/(frontend)/apps/page.tsx`
- [Cloud launches](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/launches/page.tsx): `orbit-www/src/app/(frontend)/launches/page.tsx`
- [Application records](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Apps.ts): `orbit-www/src/collections/Apps.ts`
- [Launch records](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Launches.ts): `orbit-www/src/collections/Launches.ts`
- [Template records](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/Templates.ts): `orbit-www/src/collections/Templates.ts`

### Catalog and knowledge

- [Catalog views](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/catalog/page.tsx): `orbit-www/src/app/(frontend)/catalog/page.tsx`
- [API schemas](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/api-catalog/APISchemas.ts): `orbit-www/src/collections/api-catalog/APISchemas.ts`
- [Catalog entities](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/catalog/CatalogEntities.ts): `orbit-www/src/collections/catalog/CatalogEntities.ts`
- [Knowledge spaces](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/workspaces/%5Bslug%5D/knowledge/page.tsx): `orbit-www/src/app/(frontend)/workspaces/[slug]/knowledge/page.tsx`
- [Knowledge records](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/KnowledgePages.ts): `orbit-www/src/collections/KnowledgePages.ts`

### Kafka platform

- [Kafka self-service](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/(frontend)/workspaces/%5Bslug%5D/kafka/page.tsx): `orbit-www/src/app/(frontend)/workspaces/[slug]/kafka/page.tsx`
- [Kafka records](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/collections/kafka/KafkaTopics.ts): `orbit-www/src/collections/kafka/KafkaTopics.ts`

### Workflow execution

- [Temporal worker](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/cmd/worker/main.go): `temporal-workflows/cmd/worker/main.go`
- [Template renderer](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/templating/engine.go): `temporal-workflows/internal/templating/engine.go`
- [Azure launch worker](https://github.com/drewpayment/orbit/blob/main/launches-worker-azure/src/worker.ts): `launches-worker-azure/src/worker.ts`
- [LLM provider client](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/services/payload_llm_provider_client.go): `temporal-workflows/internal/services/payload_llm_provider_client.go`
- [Object storage client](https://github.com/drewpayment/orbit/blob/main/temporal-workflows/internal/clients/storage_client.go): `temporal-workflows/internal/clients/storage_client.go`

### Other components

- **Developer**
- **Temporal**
- [Payload internal API](https://github.com/drewpayment/orbit/blob/main/orbit-www/src/app/api/internal/llm-providers/%5Bid%5D/route.ts): `orbit-www/src/app/api/internal/llm-providers/[id]/route.ts`
- **Cloud providers**
- **S3-compatible storage**

## Connections

- Developer → Orbit portal: uses
- Orbit portal → Authentication: authenticates
- Orbit portal → Workspaces: manages
- Orbit portal → Templates: opens
- Orbit portal → Application lifecycle: tracks
- Orbit portal → Cloud launches: starts
- Orbit portal → Catalog views: browses
- Orbit portal → Knowledge spaces: documents
- Orbit portal → Kafka self-service: requests
- Temporal worker → Temporal: registers workers
- Temporal worker → Template renderer: renders templates
- Azure launch worker → Cloud providers: provisions resources
- LLM provider client → Payload internal API: loads credentials
- Object storage client → S3-compatible storage: uploads objects
