# bechsteindigital/callora architecture

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

- Interactive diagram: https://gitdiagram.com/bechsteindigital/callora
- Repository: https://github.com/bechsteindigital/callora

## Overview

Callora is a domain-neutral .NET platform for assembling communication products from plugins, workspaces, and surfaces. The main user workflow is to administer a workspace, assign plugins, and configure its surfaces; visitors then enter through a surface. The README documents plugin isolation, extension contracts, and composed rendering, while the tree shows administration APIs and a small sample of runtime services. Several product capabilities are represented at their documented subsystem paths; their internal wiring is not inferred where source was not sampled.

Main entry points: [`src/Administration/Resources/app/administration/src/core/http.ts`](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/core/http.ts) (Admin HTTP client), [`src/Surface.Rendering/Api/SurfaceContext/SurfaceContextController.cs`](https://github.com/bechsteindigital/callora/blob/main/src/Surface.Rendering/Api/SurfaceContext/SurfaceContextController.cs) (Surface rendering), [`src/Core`](https://github.com/bechsteindigital/callora/tree/main/src/Core) (Plugin runtime), [`src/Administration/Resources/app/administration/src/App.vue`](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/App.vue) (Admin shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_adminui["Admin shell<br/>[App.vue]"]
  node_adminhttp["Admin HTTP client<br/>[http.ts]"]
  node_workspaceapi["Workspace APIs"]
  node_pluginadmin["Plugin administration<br/>[PluginEndpoints.cs]"]
  node_rbac["Access control<br/>[RbacEndpoints.cs]"]
  node_integrationadmin["Integration management"]
  node_config["Configuration"]
end

subgraph group_workspace["Workspace experience"]
  node_workspaces["Workspace model"]
  node_surfaces["Surface rendering"]
  node_sharedcontext["Shared context"]
  node_sessions["Surface sessions"]
end

subgraph group_platform["Plugin platform"]
  node_pluginruntime["Plugin runtime"]
  node_extensions["Extension contracts"]
  node_pluginassign["Workspace assignments"]
  node_events["Business events"]
  node_webhooks["Webhook management"]
  node_jobs["Background jobs<br/>[JobEndpoints.cs]"]
end

subgraph group_core["Shared services"]
  node_media[("Media storage")]
  node_diagnostics["Execution diagnostics"]
  node_errors["Browser error intake"]
end

node_operator(("Administrator"))
node_surfacevisitor(("Surface visitor"))

node_operator -->|"uses"| node_adminui
node_adminui -->|"requests"| node_adminhttp
node_adminhttp -->|"calls"| node_workspaceapi
node_adminhttp -->|"calls"| node_pluginadmin
node_adminhttp -->|"calls"| node_rbac
node_adminhttp -->|"calls"| node_integrationadmin
node_adminhttp -->|"calls"| node_config
node_workspaceapi -->|"manages"| node_workspaces
node_pluginadmin -->|"manages"| node_pluginruntime
node_pluginassign -->|"assigns"| node_pluginruntime
node_pluginruntime -->|"exports contracts"| node_extensions
node_pluginruntime -->|"publishes"| node_events
node_webhooks -->|"subscribes"| node_events
node_surfacevisitor -->|"opens"| node_surfaces
node_surfaces -->|"resolves surface"| node_workspaces
node_surfaces -->|"resolves caller"| node_sessions
node_surfaces -->|"subscribes"| node_sharedcontext
node_sharedcontext -->|"broadcasts context"| node_surfaces
node_media -->|"stores media"| node_workspaces
node_diagnostics -->|"records execution"| node_pluginruntime
node_surfacevisitor -->|"reports errors"| node_errors

click node_adminui "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/App.vue"
click node_adminhttp "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/core/http.ts"
click node_workspaceapi "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/WorkspaceEndpoints.cs"
click node_pluginadmin "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/PluginEndpoints.cs"
click node_rbac "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/RbacEndpoints.cs"
click node_integrationadmin "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/Integrations/IntegrationsController.cs"
click node_config "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/SystemConfigEndpoints.cs"
click node_workspaces "https://github.com/bechsteindigital/callora/tree/main/src/Core"
click node_surfaces "https://github.com/bechsteindigital/callora/blob/main/src/Surface.Rendering/Api/SurfaceContext/SurfaceContextController.cs"
click node_sharedcontext "https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Surfaces/SharedContext/SharedContextBroadcastService.cs"
click node_sessions "https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Surfaces/SurfaceSessionService.cs"
click node_pluginruntime "https://github.com/bechsteindigital/callora/tree/main/src/Core"
click node_extensions "https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Extensibility/Contracts/IServiceDecorator.cs"
click node_pluginassign "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/WorkspacePlugins/WorkspacePluginsController.cs"
click node_events "https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Events/Business/BusinessEventBus.cs"
click node_webhooks "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/WebhookEndpoints.cs"
click node_jobs "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/JobEndpoints.cs"
click node_media "https://github.com/bechsteindigital/callora/blob/main/src/Core/Infrastructure/Media/FileSystemMediaStorage.cs"
click node_diagnostics "https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/Diagnostics/RecorderController.cs"
click node_errors "https://github.com/bechsteindigital/callora/blob/main/src/Core/Api/ClientErrorsController.cs"

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_adminui,node_adminhttp,node_workspaceapi,node_pluginadmin,node_rbac,node_integrationadmin,node_config toneBlue
class node_workspaces,node_surfaces,node_sharedcontext,node_sessions toneAmber
class node_pluginruntime,node_extensions,node_pluginassign,node_events,node_webhooks,node_jobs toneMint
class node_media,node_diagnostics,node_errors toneRose
class node_operator,node_surfacevisitor toneIndigo
```

## Components

### Administration

- [Admin shell](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/App.vue): `src/Administration/Resources/app/administration/src/App.vue`
- [Admin HTTP client](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Resources/app/administration/src/core/http.ts): `src/Administration/Resources/app/administration/src/core/http.ts`
- [Workspace APIs](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/WorkspaceEndpoints.cs): `src/Administration/Api/WorkspaceEndpoints.cs`
- [Plugin administration](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/PluginEndpoints.cs): `src/Administration/Api/PluginEndpoints.cs`
- [Access control](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/RbacEndpoints.cs): `src/Administration/Api/RbacEndpoints.cs`
- [Integration management](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/Integrations/IntegrationsController.cs): `src/Administration/Api/Admin/Integrations/IntegrationsController.cs`
- [Configuration](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/SystemConfigEndpoints.cs): `src/Administration/Api/SystemConfigEndpoints.cs`

### Workspace experience

- [Workspace model](https://github.com/bechsteindigital/callora/tree/main/src/Core): `src/Core`
- [Surface rendering](https://github.com/bechsteindigital/callora/blob/main/src/Surface.Rendering/Api/SurfaceContext/SurfaceContextController.cs): `src/Surface.Rendering/Api/SurfaceContext/SurfaceContextController.cs`
- [Shared context](https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Surfaces/SharedContext/SharedContextBroadcastService.cs): `src/Core/Application/Surfaces/SharedContext/SharedContextBroadcastService.cs`
- [Surface sessions](https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Surfaces/SurfaceSessionService.cs): `src/Core/Application/Surfaces/SurfaceSessionService.cs`

### Plugin platform

- [Plugin runtime](https://github.com/bechsteindigital/callora/tree/main/src/Core): `src/Core`
- [Extension contracts](https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Extensibility/Contracts/IServiceDecorator.cs): `src/Core/Application/Extensibility/Contracts/IServiceDecorator.cs`
- [Workspace assignments](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/WorkspacePlugins/WorkspacePluginsController.cs): `src/Administration/Api/Admin/WorkspacePlugins/WorkspacePluginsController.cs`
- [Business events](https://github.com/bechsteindigital/callora/blob/main/src/Core/Application/Events/Business/BusinessEventBus.cs): `src/Core/Application/Events/Business/BusinessEventBus.cs`
- [Webhook management](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/WebhookEndpoints.cs): `src/Administration/Api/WebhookEndpoints.cs`
- [Background jobs](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/JobEndpoints.cs): `src/Administration/Api/JobEndpoints.cs`

### Shared services

- [Media storage](https://github.com/bechsteindigital/callora/blob/main/src/Core/Infrastructure/Media/FileSystemMediaStorage.cs): `src/Core/Infrastructure/Media/FileSystemMediaStorage.cs`
- [Execution diagnostics](https://github.com/bechsteindigital/callora/blob/main/src/Administration/Api/Admin/Diagnostics/RecorderController.cs): `src/Administration/Api/Admin/Diagnostics/RecorderController.cs`
- [Browser error intake](https://github.com/bechsteindigital/callora/blob/main/src/Core/Api/ClientErrorsController.cs): `src/Core/Api/ClientErrorsController.cs`

### Other components

- **Administrator**
- **Surface visitor**

## Connections

- Administrator → Admin shell: uses
- Admin shell → Admin HTTP client: requests
- Admin HTTP client → Workspace APIs: calls
- Admin HTTP client → Plugin administration: calls
- Admin HTTP client → Access control: calls
- Admin HTTP client → Integration management: calls
- Admin HTTP client → Configuration: calls
- Workspace APIs → Workspace model: manages
- Plugin administration → Plugin runtime: manages
- Workspace assignments → Plugin runtime: assigns
- Plugin runtime → Extension contracts: exports contracts
- Plugin runtime → Business events: publishes
- Webhook management → Business events: subscribes
- Surface visitor → Surface rendering: opens
- Surface rendering → Workspace model: resolves surface
- Surface rendering → Surface sessions: resolves caller
- Surface rendering → Shared context: subscribes
- Shared context → Surface rendering: broadcasts context
- Media storage → Workspace model: stores media
- Execution diagnostics → Plugin runtime: records execution
- Surface visitor → Browser error intake: reports errors
