# akramswe/caseflow-aspnetcore architecture

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

- Interactive diagram: https://gitdiagram.com/akramswe/caseflow-aspnetcore
- Repository: https://github.com/akramswe/caseflow-aspnetcore

## Overview

CaseFlow is a support-case management web app: users browse and create cases, inspect details, change workflow status, assign owners, add internal notes, and export case data. Its browser dashboard calls the Minimal API, which delegates operations to CaseService; validation, workflow/SLA rules, and SQLite persistence support those operations. Dashboard metrics, audit history, and optimistic concurrency are also central capabilities. The excerpts show API, service, domain, workflow, and UI wiring; persistence implementation details and the HTML structure were not sampled, so their links rely only on documented behavior where noted.

Main entry points: [`src/CaseFlow.Api/Services/CaseService.cs`](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseService.cs) (Case service), [`src/CaseFlow.Api/wwwroot/app.js`](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/wwwroot/app.js) (Case dashboard), [`src/CaseFlow.Api/Endpoints/CaseEndpoints.cs`](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Endpoints/CaseEndpoints.cs) (Case endpoints), [`src/CaseFlow.Api/Program.cs`](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Program.cs) (App composition)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser client"]
  node_dashboard["Case dashboard<br/>[app.js]"]
  node_static["Dashboard shell<br/>[index.html]"]
end

subgraph group_api["HTTP API"]
  node_routes["Case endpoints<br/>[CaseEndpoints.cs]"]
  node_composition["App composition<br/>[Program.cs]"]
end

subgraph group_app["Case operations"]
  node_service["Case service<br/>[CaseService.cs]"]
  node_validation["Input validation<br/>[CaseValidation.cs]"]
  node_workflow["Workflow and SLA<br/>[CaseWorkflow.cs]"]
  node_contracts["API contracts<br/>[CaseDtos.cs]"]
end

subgraph group_domain["Domain and persistence"]
  node_case["Case records<br/>[SupportCase.cs]"]
  node_sqlite[("SQLite case store<br/>[CaseFlow.Api]")]
  node_history["Notes and activity<br/>[SupportCase.cs]"]
end

node_agent(("Case user"))

node_agent -->|"uses"| node_dashboard
node_static -.->|"hosts"| node_dashboard
node_dashboard -->|"requests"| node_routes
node_composition -->|"maps"| node_routes
node_routes -->|"dispatches"| node_service
node_service -->|"validates"| node_validation
node_service -->|"applies rules"| node_workflow
node_service -->|"operates on"| node_case
node_service -->|"returns"| node_contracts
node_service -->|"reads and writes"| node_sqlite
node_composition -->|"configures"| node_sqlite
node_service -->|"records and loads"| node_history
node_case -->|"contains"| node_history

click node_dashboard "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/wwwroot/app.js"
click node_static "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/wwwroot/index.html"
click node_routes "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Endpoints/CaseEndpoints.cs"
click node_composition "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Program.cs"
click node_service "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseService.cs"
click node_validation "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseValidation.cs"
click node_workflow "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseWorkflow.cs"
click node_contracts "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Contracts/CaseDtos.cs"
click node_case "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Domain/SupportCase.cs"
click node_sqlite "https://github.com/akramswe/caseflow-aspnetcore/tree/main/src/CaseFlow.Api"
click node_history "https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Domain/SupportCase.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_dashboard,node_static,node_agent toneBlue
class node_routes,node_composition toneAmber
class node_service,node_validation,node_workflow,node_contracts toneMint
class node_case,node_sqlite,node_history toneRose
```

## Components

### Browser client

- [Case dashboard](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/wwwroot/app.js): `src/CaseFlow.Api/wwwroot/app.js`
- [Dashboard shell](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/wwwroot/index.html): `src/CaseFlow.Api/wwwroot/index.html`

### HTTP API

- [Case endpoints](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Endpoints/CaseEndpoints.cs): `src/CaseFlow.Api/Endpoints/CaseEndpoints.cs`
- [App composition](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Program.cs): `src/CaseFlow.Api/Program.cs`

### Case operations

- [Case service](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseService.cs): `src/CaseFlow.Api/Services/CaseService.cs`
- [Input validation](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseValidation.cs): `src/CaseFlow.Api/Services/CaseValidation.cs`
- [Workflow and SLA](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Services/CaseWorkflow.cs): `src/CaseFlow.Api/Services/CaseWorkflow.cs`
- [API contracts](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Contracts/CaseDtos.cs): `src/CaseFlow.Api/Contracts/CaseDtos.cs`

### Domain and persistence

- [Case records](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Domain/SupportCase.cs): `src/CaseFlow.Api/Domain/SupportCase.cs`
- [SQLite case store](https://github.com/akramswe/caseflow-aspnetcore/tree/main/src/CaseFlow.Api): `src/CaseFlow.Api`
- [Notes and activity](https://github.com/akramswe/caseflow-aspnetcore/blob/main/src/CaseFlow.Api/Domain/SupportCase.cs): `src/CaseFlow.Api/Domain/SupportCase.cs`

### Other components

- **Case user**

## Connections

- Case user → Case dashboard: uses (evidence: `src/CaseFlow.Api/wwwroot/app.js`)
- Dashboard shell → Case dashboard: hosts
- Case dashboard → Case endpoints: requests (evidence: `src/CaseFlow.Api/wwwroot/app.js`)
- App composition → Case endpoints: maps (evidence: `src/CaseFlow.Api/Program.cs`)
- Case endpoints → Case service: dispatches (evidence: `src/CaseFlow.Api/Endpoints/CaseEndpoints.cs`)
- Case service → Input validation: validates (evidence: `src/CaseFlow.Api/Services/CaseService.cs`)
- Case service → Workflow and SLA: applies rules (evidence: `src/CaseFlow.Api/Services/CaseService.cs`)
- Case service → Case records: operates on (evidence: `src/CaseFlow.Api/Services/CaseService.cs`)
- Case service → API contracts: returns (evidence: `src/CaseFlow.Api/Services/CaseService.cs`)
- Case service → SQLite case store: reads and writes (evidence: `README.md`)
- App composition → SQLite case store: configures (evidence: `src/CaseFlow.Api/Program.cs`)
- Case service → Notes and activity: records and loads (evidence: `src/CaseFlow.Api/Services/CaseService.cs`)
- Case records → Notes and activity: contains (evidence: `src/CaseFlow.Api/Domain/SupportCase.cs`)
