# dczerwinskipl/nevo architecture

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

- Interactive diagram: https://gitdiagram.com/dczerwinskipl/nevo
- Repository: https://github.com/dczerwinskipl/nevo

## Overview

NEvo is a modular .NET framework whose packages provide messaging, CQRS, authorization, event sourcing, and orchestration building blocks. Its documented repository workflow is a second meaningful product area: specification work is exposed through a dashboard and AI-agent sessions. The principal user-to-result paths and major package capabilities are represented below. Most .NET internals were not sampled, so their documented roles are included without speculative call chains.

Main entry points: [`tools/dashboard/ui`](https://github.com/dczerwinskipl/nevo/tree/main/tools/dashboard/ui) (Dashboard UI), [`src/NEvo.Messaging/Events/EventPublisher.cs`](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging/Events/EventPublisher.cs) (Event publishing), [`src/NEvo.Messaging.Web/RoutesExtensions.cs`](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging.Web/RoutesExtensions.cs) (HTTP message routes), [`src/NEvo.Messaging.Cqrs`](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging.Cqrs) (Command/query dispatch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_messaging["Messaging and CQRS"]
  node_msgweb["HTTP message routes"]
  node_cqrs["Command/query dispatch"]
  node_processor["Message processing"]
  node_messagingcore["Messaging contracts<br/>[NEvo.Messaging]"]
  node_eventpub["Event publishing<br/>[EventPublisher.cs]"]
  node_outbox[("EF inbox/outbox")]
end

subgraph group_domain["Domain workflows"]
  node_eventsource["Event-sourced aggregates"]
  node_orchestration["Orchestration runner"]
  node_orchstate[("Orchestration state")]
end

subgraph group_authweb["Authorization and web"]
  node_restclient["REST clients<br/>[Client]"]
  node_authcore["Authorization core<br/>[NEvo.Authorization]"]
  node_webclaims["Web claims"]
end

subgraph group_dashboard["Specs dashboard"]
  node_ui["Dashboard UI"]
  node_specapi["Specification API<br/>[routes.mjs]"]
  node_specservice["Specification service<br/>[service.mjs]"]
  node_workflowengine["Workflow engine<br/>[engine.mjs]"]
  node_prapi["Pull request API<br/>[routes.mjs]"]
end

subgraph group_ai["AI sessions"]
  node_aiapi["AI session API<br/>[routes.mjs]"]
  node_sessionroutes["Session routes<br/>[routes.mjs]"]
  node_turnroutes["Turn routes<br/>[routes.mjs]"]
  node_turnruntime["Turn runtime<br/>[runtime.mjs]"]
  node_providers["Agent providers<br/>[registry.mjs]"]
end

node_developer(("Developer"))
node_bus["Message bus"]
node_dashboarduser(("Workflow user"))
node_agent["Agent provider"]

node_developer -->|"sends request"| node_msgweb
node_msgweb -->|"dispatches command/query"| node_cqrs
node_msgweb -->|"processes envelope"| node_processor
node_cqrs -->|"dispatches message"| node_processor
node_processor -->|"uses contracts"| node_messagingcore
node_eventpub -->|"publishes events"| node_messagingcore
node_eventpub -.->|"persists messages"| node_outbox
node_eventpub -.->|"publishes externally"| node_bus
node_cqrs -.->|"supports aggregate commands"| node_eventsource
node_eventsource -.->|"uses event messaging"| node_messagingcore
node_eventsource -.->|"coordinates processes"| node_orchestration
node_orchestration -.->|"persists state"| node_orchstate
node_webclaims -->|"provides identity"| node_authcore
node_dashboarduser -->|"uses dashboard"| node_ui
node_ui -->|"requests specification data"| node_specapi
node_specapi -->|"loads and changes specs"| node_specservice
node_specservice -.->|"checks and executes actions"| node_workflowengine
node_ui -->|"requests pull requests"| node_prapi
node_ui -->|"manages agent sessions"| node_aiapi
node_aiapi -->|"registers routes"| node_sessionroutes
node_aiapi -->|"registers routes"| node_turnroutes
node_turnroutes -->|"starts and cancels turns"| node_turnruntime
node_turnruntime -->|"selects provider"| node_providers
node_providers -->|"invokes agent"| node_agent

click node_restclient "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Web/Client"
click node_authcore "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Authorization"
click node_webclaims "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Web.Authorization"
click node_msgweb "https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging.Web/RoutesExtensions.cs"
click node_cqrs "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging.Cqrs"
click node_processor "https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging/Handling/MessageProcessor.cs"
click node_messagingcore "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging"
click node_eventpub "https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging/Events/EventPublisher.cs"
click node_outbox "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging.EntityFramework"
click node_eventsource "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Ddd.EventSourcing"
click node_orchestration "https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Orchestrating/OrchestrationRunner.cs"
click node_orchstate "https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Orchestrating.EntityFramework"
click node_ui "https://github.com/dczerwinskipl/nevo/tree/main/tools/dashboard/ui"
click node_specapi "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/specs/routes.mjs"
click node_specservice "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/specs/service.mjs"
click node_workflowengine "https://github.com/dczerwinskipl/nevo/blob/main/tools/specs/workflow/engine.mjs"
click node_prapi "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/pull-requests/routes.mjs"
click node_aiapi "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/routes.mjs"
click node_sessionroutes "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/routes.mjs"
click node_turnroutes "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/turns/routes.mjs"
click node_turnruntime "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/turns/runtime.mjs"
click node_providers "https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/providers/registry.mjs"

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_msgweb,node_cqrs,node_processor,node_messagingcore,node_eventpub,node_outbox,node_dashboarduser toneBlue
class node_eventsource,node_orchestration,node_orchstate toneAmber
class node_restclient,node_authcore,node_webclaims toneMint
class node_ui,node_specapi,node_specservice,node_workflowengine,node_prapi toneRose
class node_aiapi,node_sessionroutes,node_turnroutes,node_turnruntime,node_providers,node_developer,node_bus,node_agent toneIndigo
```

## Components

### Messaging and CQRS

- [HTTP message routes](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging.Web/RoutesExtensions.cs): `src/NEvo.Messaging.Web/RoutesExtensions.cs`
- [Command/query dispatch](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging.Cqrs): `src/NEvo.Messaging.Cqrs`
- [Message processing](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging/Handling/MessageProcessor.cs): `src/NEvo.Messaging/Handling/MessageProcessor.cs`
- [Messaging contracts](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging): `src/NEvo.Messaging`
- [Event publishing](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Messaging/Events/EventPublisher.cs): `src/NEvo.Messaging/Events/EventPublisher.cs`
- [EF inbox/outbox](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Messaging.EntityFramework): `src/NEvo.Messaging.EntityFramework`

### Domain workflows

- [Event-sourced aggregates](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Ddd.EventSourcing): `src/NEvo.Ddd.EventSourcing`
- [Orchestration runner](https://github.com/dczerwinskipl/nevo/blob/main/src/NEvo.Orchestrating/OrchestrationRunner.cs): `src/NEvo.Orchestrating/OrchestrationRunner.cs`
- [Orchestration state](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Orchestrating.EntityFramework): `src/NEvo.Orchestrating.EntityFramework`

### Authorization and web

- [REST clients](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Web/Client): `src/NEvo.Web/Client`
- [Authorization core](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Authorization): `src/NEvo.Authorization`
- [Web claims](https://github.com/dczerwinskipl/nevo/tree/main/src/NEvo.Web.Authorization): `src/NEvo.Web.Authorization`

### Specs dashboard

- [Dashboard UI](https://github.com/dczerwinskipl/nevo/tree/main/tools/dashboard/ui): `tools/dashboard/ui`
- [Specification API](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/specs/routes.mjs): `tools/dashboard/server/specs/routes.mjs`
- [Specification service](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/specs/service.mjs): `tools/dashboard/server/specs/service.mjs`
- [Workflow engine](https://github.com/dczerwinskipl/nevo/blob/main/tools/specs/workflow/engine.mjs): `tools/specs/workflow/engine.mjs`
- [Pull request API](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/pull-requests/routes.mjs): `tools/dashboard/server/pull-requests/routes.mjs`

### AI sessions

- [AI session API](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/routes.mjs): `tools/dashboard/server/ai/routes.mjs`
- [Session routes](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/routes.mjs): `tools/dashboard/server/ai/sessions/routes.mjs`
- [Turn routes](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/turns/routes.mjs): `tools/dashboard/server/ai/sessions/turns/routes.mjs`
- [Turn runtime](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/sessions/turns/runtime.mjs): `tools/dashboard/server/ai/sessions/turns/runtime.mjs`
- [Agent providers](https://github.com/dczerwinskipl/nevo/blob/main/tools/dashboard/server/ai/providers/registry.mjs): `tools/dashboard/server/ai/providers/registry.mjs`

### Other components

- **Developer**
- **Message bus**
- **Workflow user**
- **Agent provider**

## Connections

- Developer → HTTP message routes: sends request
- HTTP message routes → Command/query dispatch: dispatches command/query
- HTTP message routes → Message processing: processes envelope
- Command/query dispatch → Message processing: dispatches message
- Message processing → Messaging contracts: uses contracts
- Event publishing → Messaging contracts: publishes events
- Event publishing → EF inbox/outbox: persists messages
- Event publishing → Message bus: publishes externally
- Command/query dispatch → Event-sourced aggregates: supports aggregate commands
- Event-sourced aggregates → Messaging contracts: uses event messaging
- Event-sourced aggregates → Orchestration runner: coordinates processes
- Orchestration runner → Orchestration state: persists state
- Web claims → Authorization core: provides identity
- Workflow user → Dashboard UI: uses dashboard
- Dashboard UI → Specification API: requests specification data
- Specification API → Specification service: loads and changes specs
- Specification service → Workflow engine: checks and executes actions
- Dashboard UI → Pull request API: requests pull requests
- Dashboard UI → AI session API: manages agent sessions
- AI session API → Session routes: registers routes
- AI session API → Turn routes: registers routes
- Turn routes → Turn runtime: starts and cancels turns
- Turn runtime → Agent providers: selects provider
- Agent providers → Agent provider: invokes agent
