# scireum/sirius-web architecture

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

- Interactive diagram: https://gitdiagram.com/scireum/sirius-web
- Repository: https://github.com/scireum/sirius-web

## Overview

sirius-web is a Java web framework combining HTTP request handling, server-side content generation, APIs, security, and email. The principal flow is an incoming request through the HTTP server and dispatcher pipeline to a routed controller or service, followed by a response; template-backed pages can use Tagliatelle and Pasta. The tree and README establish major capabilities, while the excerpts directly support pipeline dispatch, route handling, and template integration. Links among unsampled subsystems are therefore limited to documented framework roles.

Main entry points: [`src/main/java/sirius/web/controller/Controller.java`](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/Controller.java) (Application Controllers), [`src/main/java/sirius/web/controller/ControllerDispatcher.java`](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/ControllerDispatcher.java) (Controller Routing), [`src/main/java/sirius/web/http/DispatcherPipeline.java`](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/DispatcherPipeline.java) (Dispatcher Pipeline), [`src/main/java/sirius/pasta/tagliatelle/Tagliatelle.java`](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/pasta/tagliatelle/Tagliatelle.java) (Tagliatelle Engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP Runtime"]
  node_server["Web Server<br/>[WebServer.java]"]
  node_pipeline["Dispatcher Pipeline"]
  node_context["Web Context<br/>[WebContext.java]"]
  node_response["HTTP Response<br/>[Response.java]"]
  node_session["Session Handling"]
end

subgraph group_routing["Routing and APIs"]
  node_controller["Controller Routing"]
  node_controllers["Application Controllers<br/>[Controller.java]"]
  node_services["API Services"]
  node_codec["API Codecs"]
end

subgraph group_identity["Identity and Security"]
  node_security["User and Permissions<br/>[UserManager.java]"]
end

subgraph group_content["Content Generation"]
  node_templates["Template Services<br/>[Templates.java]"]
  node_tagliatelle["Tagliatelle Engine<br/>[Tagliatelle.java]"]
  node_pasta["Pasta Interpreter"]
  node_resources["Resource Resolution<br/>[Resources.java]"]
  node_sass["Sass Generation<br/>[Generator.java]"]
end

subgraph group_services["Supporting Services"]
  node_mail["Email Sending<br/>[MailSender.java]"]
  node_data["Data Import Export<br/>[CSVProcessor.java]"]
  node_health["Health and Cluster"]
end

node_client(("HTTP Client"))
node_smtp["SMTP Service"]

node_client -->|"sends request"| node_server
node_server -->|"dispatches request"| node_pipeline
node_pipeline -->|"passes request"| node_context
node_pipeline -->|"dispatches"| node_controller
node_controller -->|"invokes route"| node_controllers
node_controller -->|"checks access"| node_security
node_context -->|"loads and persists"| node_session
node_controllers -->|"creates response"| node_response
node_controller -->|"dispatches service route"| node_services
node_services -->|"encodes payload"| node_codec
node_controllers -->|"renders page"| node_templates
node_templates -->|"renders template"| node_tagliatelle
node_tagliatelle -->|"compiles expressions"| node_pasta
node_tagliatelle -->|"resolves templates"| node_resources
node_sass -->|"reads resources"| node_resources
node_controllers -.->|"serves generated styles"| node_sass
node_controllers -.->|"requests email"| node_mail
node_mail -.->|"sends mail"| node_smtp
node_controllers -.->|"processes tabular data"| node_data
node_client -.->|"requests status"| node_health

click node_server "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/WebServer.java"
click node_pipeline "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/DispatcherPipeline.java"
click node_context "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/WebContext.java"
click node_response "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/Response.java"
click node_controller "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/ControllerDispatcher.java"
click node_controllers "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/Controller.java"
click node_services "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/services/ServiceDispatcher.java"
click node_codec "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/services/ApiPayloadCodec.java"
click node_security "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/security/UserManager.java"
click node_session "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/ServerSessionStorage.java"
click node_templates "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/templates/Templates.java"
click node_tagliatelle "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/pasta/tagliatelle/Tagliatelle.java"
click node_pasta "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/pasta/noodle/compiler/NoodleCompiler.java"
click node_resources "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/resources/Resources.java"
click node_sass "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/sass/Generator.java"
click node_mail "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/mails/MailSender.java"
click node_data "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/data/CSVProcessor.java"
click node_health "https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/health/SystemController.java"

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_server,node_pipeline,node_context,node_response,node_session,node_client toneBlue
class node_controller,node_controllers,node_services,node_codec toneAmber
class node_security toneMint
class node_templates,node_tagliatelle,node_pasta,node_resources,node_sass toneRose
class node_mail,node_data,node_health,node_smtp toneIndigo
```

## Components

### HTTP Runtime

- [Web Server](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/WebServer.java): `src/main/java/sirius/web/http/WebServer.java`
- [Dispatcher Pipeline](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/DispatcherPipeline.java): `src/main/java/sirius/web/http/DispatcherPipeline.java`
- [Web Context](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/WebContext.java): `src/main/java/sirius/web/http/WebContext.java`
- [HTTP Response](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/Response.java): `src/main/java/sirius/web/http/Response.java`
- [Session Handling](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/http/ServerSessionStorage.java): `src/main/java/sirius/web/http/ServerSessionStorage.java`

### Routing and APIs

- [Controller Routing](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/ControllerDispatcher.java): `src/main/java/sirius/web/controller/ControllerDispatcher.java`
- [Application Controllers](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/controller/Controller.java): `src/main/java/sirius/web/controller/Controller.java`
- [API Services](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/services/ServiceDispatcher.java): `src/main/java/sirius/web/services/ServiceDispatcher.java`
- [API Codecs](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/services/ApiPayloadCodec.java): `src/main/java/sirius/web/services/ApiPayloadCodec.java`

### Identity and Security

- [User and Permissions](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/security/UserManager.java): `src/main/java/sirius/web/security/UserManager.java`

### Content Generation

- [Template Services](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/templates/Templates.java): `src/main/java/sirius/web/templates/Templates.java`
- [Tagliatelle Engine](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/pasta/tagliatelle/Tagliatelle.java): `src/main/java/sirius/pasta/tagliatelle/Tagliatelle.java`
- [Pasta Interpreter](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/pasta/noodle/compiler/NoodleCompiler.java): `src/main/java/sirius/pasta/noodle/compiler/NoodleCompiler.java`
- [Resource Resolution](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/resources/Resources.java): `src/main/java/sirius/web/resources/Resources.java`
- [Sass Generation](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/sass/Generator.java): `src/main/java/sirius/web/sass/Generator.java`

### Supporting Services

- [Email Sending](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/mails/MailSender.java): `src/main/java/sirius/web/mails/MailSender.java`
- [Data Import Export](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/data/CSVProcessor.java): `src/main/java/sirius/web/data/CSVProcessor.java`
- [Health and Cluster](https://github.com/scireum/sirius-web/blob/main/src/main/java/sirius/web/health/SystemController.java): `src/main/java/sirius/web/health/SystemController.java`

### Other components

- **HTTP Client**
- **SMTP Service**

## Connections

- HTTP Client → Web Server: sends request
- Web Server → Dispatcher Pipeline: dispatches request
- Dispatcher Pipeline → Web Context: passes request
- Dispatcher Pipeline → Controller Routing: dispatches
- Controller Routing → Application Controllers: invokes route
- Controller Routing → User and Permissions: checks access
- Web Context → Session Handling: loads and persists
- Application Controllers → HTTP Response: creates response
- Controller Routing → API Services: dispatches service route
- API Services → API Codecs: encodes payload
- Application Controllers → Template Services: renders page
- Template Services → Tagliatelle Engine: renders template
- Tagliatelle Engine → Pasta Interpreter: compiles expressions
- Tagliatelle Engine → Resource Resolution: resolves templates
- Sass Generation → Resource Resolution: reads resources
- Application Controllers → Sass Generation: serves generated styles
- Application Controllers → Email Sending: requests email
- Email Sending → SMTP Service: sends mail
- Application Controllers → Data Import Export: processes tabular data
- HTTP Client → Health and Cluster: requests status
