# dante-compass/dante-engine architecture

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

- Interactive diagram: https://gitdiagram.com/dante-compass/dante-engine
- Repository: https://github.com/dante-compass/dante-engine

## Overview

Dante Engine is the reusable foundation for Dante Cloud: a modular enterprise cloud platform with identity and OAuth2, assistant features, persistence, messaging, and REST capabilities. A representative user workflow is configuring an OAuth2 application and scopes, persisting authorization/token state, then using the platform’s authorization capabilities; the repository also provides third-party sign-in, CAPTCHA, and object-storage features. Sampled source establishes the OAuth2 synchronization and persistence links and the servlet object-transfer path. Other README-listed capabilities are represented at module level because their implementations were not sampled.

Main entry points: [`dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ApplicationService.java`](https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ApplicationService.java) (OAuth2 applications), [`dante-oauth2`](https://github.com/dante-compass/dante-engine/tree/master/dante-oauth2) (OAuth2 runtime), [`dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/specification/JpaOAuth2AuthorizationService.java`](https://github.com/dante-compass/dante-engine/blob/master/dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/specification/JpaOAuth2AuthorizationService.java) (Authorization service), [`dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/servlet/ServletTransferManagerService.java`](https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/servlet/ServletTransferManagerService.java) (Servlet transfers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and OAuth2"]
  node_oauthapp["OAuth2 applications"]
  node_scopes["OAuth2 scopes"]
  node_supported["Supported scopes"]
  node_authresource["Authorization resources"]
  node_protectedmeta["Protected metadata"]
  node_oauthruntime["OAuth2 runtime"]
end

subgraph group_storage["Authorization Persistence"]
  node_authservice["Authorization service"]
  node_authrecords["Authorization records"]
  node_authdb[("Authorization database")]
end

subgraph group_assistant["Assistant Features"]
  node_access["Third-party sign-in"]
  node_captcha["CAPTCHA generation"]
  node_ossservlet["Servlet transfers"]
  node_s3manager["S3 transfer manager"]
  node_s3base["S3 client handling"]
end

subgraph group_platform["Platform Services"]
  node_framework["Framework foundation"]
  node_messaging["Messaging capabilities"]
  node_rest["REST interfaces"]
end

node_operator(("Application operator"))
node_objectstore["S3-compatible storage"]
node_operatorresult(("Platform responses"))

node_operator -->|"manages applications"| node_oauthapp
node_operator -->|"assigns scopes"| node_scopes
node_oauthapp -->|"synchronizes resource"| node_authresource
node_oauthapp -->|"syncs client state"| node_authservice
node_oauthapp -->|"assigns scopes"| node_scopes
node_supported -.->|"supplies scope data"| node_protectedmeta
node_operator -->|"uses authorization"| node_oauthruntime
node_oauthruntime -->|"stores authorization"| node_authservice
node_authservice -->|"converts and queries"| node_authrecords
node_authrecords -->|"reads and writes"| node_authdb
node_authservice -->|"clears expired tokens"| node_authrecords
node_operator -->|"signs in"| node_access
node_operator -->|"requests challenge"| node_captcha
node_operator -->|"transfers files"| node_ossservlet
node_ossservlet -->|"converts and delegates"| node_s3manager
node_s3manager -->|"runs transfer"| node_s3base
node_s3base -->|"transfers objects"| node_objectstore
node_framework -.->|"supports security runtime"| node_oauthruntime
node_operator -.->|"uses messaging"| node_messaging
node_operator -.->|"calls service APIs"| node_rest
node_oauthruntime -->|"returns authorization result"| node_operatorresult
node_ossservlet -->|"returns transfer result"| node_operatorresult

click node_oauthapp "https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ApplicationService.java"
click node_scopes "https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ScopeService.java"
click node_supported "https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-upms/src/main/java/cn/herodotus/dante/logic/upms/service/oauth2/OAuth2SupportedScopeService.java"
click node_authresource "https://github.com/dante-compass/dante-engine/blob/master/dante-framework/dante-security/src/main/java/cn/herodotus/dante/security/definition/OAuth2AuthorizationResourceService.java"
click node_protectedmeta "https://github.com/dante-compass/dante-engine/blob/master/dante-oauth2/dante-oauth2-authorization/src/main/java/cn/herodotus/dante/oauth2/authorization/customizer/DefaultOAuth2ProtectedResourceMetadataStorage.java"
click node_oauthruntime "https://github.com/dante-compass/dante-engine/tree/master/dante-oauth2"
click node_authservice "https://github.com/dante-compass/dante-engine/blob/master/dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/specification/JpaOAuth2AuthorizationService.java"
click node_authrecords "https://github.com/dante-compass/dante-engine/blob/master/dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/service/HerodotusAuthorizationService.java"
click node_authdb "https://github.com/dante-compass/dante-engine/tree/master/dante-persistence/dante-persistence-sas-jpa"
click node_access "https://github.com/dante-compass/dante-engine/tree/master/dante-assistant/dante-assistant-access/src/main/java/cn/herodotus/dante/assistant/access/processor"
click node_captcha "https://github.com/dante-compass/dante-engine/tree/master/dante-assistant/dante-assistant-captcha/src/main/java/cn/herodotus/dante/assistant/captcha"
click node_ossservlet "https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/servlet/ServletTransferManagerService.java"
click node_s3manager "https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/base/S3TransferManagerService.java"
click node_s3base "https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/definition/service/AbstractS3TransferManagerService.java"
click node_framework "https://github.com/dante-compass/dante-engine/tree/master/dante-framework"
click node_messaging "https://github.com/dante-compass/dante-engine/tree/master/dante-message"
click node_rest "https://github.com/dante-compass/dante-engine/tree/master/dante-rest"

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_oauthapp,node_scopes,node_supported,node_authresource,node_protectedmeta,node_oauthruntime toneBlue
class node_authservice,node_authrecords,node_authdb,node_objectstore toneAmber
class node_access,node_captcha,node_ossservlet,node_s3manager,node_s3base toneMint
class node_framework,node_messaging,node_rest toneRose
class node_operator,node_operatorresult toneIndigo
```

## Components

### Identity and OAuth2

- [OAuth2 applications](https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ApplicationService.java): `dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ApplicationService.java`
- [OAuth2 scopes](https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ScopeService.java): `dante-logic/dante-logic-identity/src/main/java/cn/herodotus/dante/logic/identity/service/OAuth2ScopeService.java`
- [Supported scopes](https://github.com/dante-compass/dante-engine/blob/master/dante-logic/dante-logic-upms/src/main/java/cn/herodotus/dante/logic/upms/service/oauth2/OAuth2SupportedScopeService.java): `dante-logic/dante-logic-upms/src/main/java/cn/herodotus/dante/logic/upms/service/oauth2/OAuth2SupportedScopeService.java`
- [Authorization resources](https://github.com/dante-compass/dante-engine/blob/master/dante-framework/dante-security/src/main/java/cn/herodotus/dante/security/definition/OAuth2AuthorizationResourceService.java): `dante-framework/dante-security/src/main/java/cn/herodotus/dante/security/definition/OAuth2AuthorizationResourceService.java`
- [Protected metadata](https://github.com/dante-compass/dante-engine/blob/master/dante-oauth2/dante-oauth2-authorization/src/main/java/cn/herodotus/dante/oauth2/authorization/customizer/DefaultOAuth2ProtectedResourceMetadataStorage.java): `dante-oauth2/dante-oauth2-authorization/src/main/java/cn/herodotus/dante/oauth2/authorization/customizer/DefaultOAuth2ProtectedResourceMetadataStorage.java`
- [OAuth2 runtime](https://github.com/dante-compass/dante-engine/tree/master/dante-oauth2): `dante-oauth2`

### Authorization Persistence

- [Authorization service](https://github.com/dante-compass/dante-engine/blob/master/dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/specification/JpaOAuth2AuthorizationService.java): `dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/specification/JpaOAuth2AuthorizationService.java`
- [Authorization records](https://github.com/dante-compass/dante-engine/blob/master/dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/service/HerodotusAuthorizationService.java): `dante-persistence/dante-persistence-sas-jpa/src/main/java/cn/herodotus/dante/persistence/sas/jpa/service/HerodotusAuthorizationService.java`
- [Authorization database](https://github.com/dante-compass/dante-engine/tree/master/dante-persistence/dante-persistence-sas-jpa): `dante-persistence/dante-persistence-sas-jpa`

### Assistant Features

- [Third-party sign-in](https://github.com/dante-compass/dante-engine/tree/master/dante-assistant/dante-assistant-access/src/main/java/cn/herodotus/dante/assistant/access/processor): `dante-assistant/dante-assistant-access/src/main/java/cn/herodotus/dante/assistant/access/processor`
- [CAPTCHA generation](https://github.com/dante-compass/dante-engine/tree/master/dante-assistant/dante-assistant-captcha/src/main/java/cn/herodotus/dante/assistant/captcha): `dante-assistant/dante-assistant-captcha/src/main/java/cn/herodotus/dante/assistant/captcha`
- [Servlet transfers](https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/servlet/ServletTransferManagerService.java): `dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/servlet/ServletTransferManagerService.java`
- [S3 transfer manager](https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/base/S3TransferManagerService.java): `dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/service/base/S3TransferManagerService.java`
- [S3 client handling](https://github.com/dante-compass/dante-engine/blob/master/dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/definition/service/AbstractS3TransferManagerService.java): `dante-assistant/dante-assistant-oss/src/main/java/cn/herodotus/dante/assistant/oss/definition/service/AbstractS3TransferManagerService.java`

### Platform Services

- [Framework foundation](https://github.com/dante-compass/dante-engine/tree/master/dante-framework): `dante-framework`
- [Messaging capabilities](https://github.com/dante-compass/dante-engine/tree/master/dante-message): `dante-message`
- [REST interfaces](https://github.com/dante-compass/dante-engine/tree/master/dante-rest): `dante-rest`

### Other components

- **Application operator**
- **S3-compatible storage**
- **Platform responses**

## Connections

- Application operator → OAuth2 applications: manages applications
- Application operator → OAuth2 scopes: assigns scopes
- OAuth2 applications → Authorization resources: synchronizes resource
- OAuth2 applications → Authorization service: syncs client state
- OAuth2 applications → OAuth2 scopes: assigns scopes
- Supported scopes → Protected metadata: supplies scope data
- Application operator → OAuth2 runtime: uses authorization
- OAuth2 runtime → Authorization service: stores authorization
- Authorization service → Authorization records: converts and queries
- Authorization records → Authorization database: reads and writes
- Authorization service → Authorization records: clears expired tokens
- Application operator → Third-party sign-in: signs in
- Application operator → CAPTCHA generation: requests challenge
- Application operator → Servlet transfers: transfers files
- Servlet transfers → S3 transfer manager: converts and delegates
- S3 transfer manager → S3 client handling: runs transfer
- S3 client handling → S3-compatible storage: transfers objects
- Framework foundation → OAuth2 runtime: supports security runtime
- Application operator → Messaging capabilities: uses messaging
- Application operator → REST interfaces: calls service APIs
- OAuth2 runtime → Platform responses: returns authorization result
- Servlet transfers → Platform responses: returns transfer result
