# dromara/dante-cloud architecture

> Architecture diagram of the GitHub repository dromara/dante-cloud, 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/dromara/dante-cloud
- Repository: https://github.com/dromara/dante-cloud

## Overview

Dante Cloud is a modular cloud platform designed to run as either microservices or a monolith. A representative user-facing flow enters through the gateway, reaches authentication, and obtains user details from UPMS locally or through Feign; the sampled code confirms the UAA client strategies and social sign-in endpoint, but not complete gateway routing or credential issuance. Other documented and tree-supported branches include BPMN, object storage, monitoring, and messaging. Several links are omitted where only module presence—not runtime wiring—is evidenced by the supplied excerpts.

Main entry points: [`dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/definition/AbstractStrategyUserDetailsService.java`](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/definition/AbstractStrategyUserDetailsService.java) (User lookup strategy), [`dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/FeignStrategyUserDetailsService.java`](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/FeignStrategyUserDetailsService.java) (Remote lookup), [`dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/GatewayApplication.java`](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/GatewayApplication.java) (API gateway), [`dante-cloud-platform/dante-cloud-uaa/src/main/java/cn/herodotus/dantecloud/uaa/UaaApplication.java`](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-uaa/src/main/java/cn/herodotus/dantecloud/uaa/UaaApplication.java) (Authorization service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and routing"]
  node_gateway["API gateway"]
  node_gateway_filters["Gateway filters"]
  node_route_refresh["Route refresh"]
  node_monolith["Monolith mode"]
end

subgraph group_identity["Identity and access"]
  node_uaa["Authorization service"]
  node_uaa_strategy["User lookup strategy"]
  node_local_lookup["Local lookup"]
  node_remote_lookup["Remote lookup"]
  node_upms["User management"]
  node_social_controller["Social sign-in"]
  node_social_handler["Social authentication"]
end

subgraph group_services["Platform services"]
  node_bpmn["Workflow engine"]
  node_bpmn_logic["Workflow logic"]
  node_oss["Object storage"]
  node_monitor["Monitoring"]
  node_message["Messaging"]
end

subgraph group_integration["Service integration"]
  node_remote_user_api["Remote user API"]
  node_remote_social_api["Remote social API"]
  node_oss_api["Storage client API"]
end

node_user(("Client"))
node_service_registry[("Service discovery")]

node_user -->|"sends requests"| node_gateway
node_gateway -->|"filters traffic"| node_gateway_filters
node_route_refresh -->|"reads routes"| node_service_registry
node_uaa -->|"uses lookup"| node_uaa_strategy
node_uaa_strategy -.->|"selects local"| node_local_lookup
node_uaa_strategy -.->|"selects remote"| node_remote_lookup
node_remote_lookup -->|"requests user"| node_remote_user_api
node_remote_lookup -->|"requests social user"| node_remote_social_api
node_remote_user_api -->|"calls UPMS"| node_upms
node_remote_social_api -->|"calls UPMS"| node_social_controller
node_social_controller -->|"authenticates"| node_social_handler
node_oss_api -->|"requests storage"| node_oss
node_monolith -.->|"configures mode"| node_uaa

click node_gateway "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/GatewayApplication.java"
click node_gateway_filters "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/filter/GlobalCertificationFilter.java"
click node_route_refresh "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/handler/RefreshRoutesListener.java"
click node_uaa "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-uaa/src/main/java/cn/herodotus/dantecloud/uaa/UaaApplication.java"
click node_uaa_strategy "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/definition/AbstractStrategyUserDetailsService.java"
click node_local_lookup "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/local/LocalStrategyUserDetailsService.java"
click node_remote_lookup "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/FeignStrategyUserDetailsService.java"
click node_remote_user_api "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteUserDetailsService.java"
click node_remote_social_api "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteSocialDetailsService.java"
click node_upms "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-upms/src/main/java/cn/herodotus/dantecloud/upms/UpmsApplication.java"
click node_social_controller "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java"
click node_social_handler "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java"
click node_bpmn "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-bpmn-ability/src/main/java/cn/herodotus/dantecloud/bpmn/ability/BpmnAbilityApplication.java"
click node_bpmn_logic "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-bpmn-logic/src/main/java/cn/herodotus/dantecloud/bpmn/logic/service/ActIdTenantService.java"
click node_oss "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-oss-ability/src/main/java/cn/herodotus/dantecloud/oss/ability/OssAbilityApplication.java"
click node_oss_api "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-oss-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/oss/autoconfigure/feign/api/feign/api/RemoteOssPresignedUrlService.java"
click node_monitor "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-monitor/src/main/java/cn/herodotus/dantecloud/monitor/MonitorApplication.java"
click node_message "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-message/src/main/java/cn/herodotus/dantecloud/message/MessageApplication.java"
click node_monolith "https://github.com/dromara/dante-cloud/blob/master/dante-cloud-modules/dante-monolith-autoconfigure/src/main/java/cn/herodotus/dantecloud/monolith/autoconfigure/MonolithAutoConfiguration.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_gateway,node_gateway_filters,node_route_refresh,node_monolith,node_user toneBlue
class node_uaa,node_uaa_strategy,node_local_lookup,node_remote_lookup,node_upms,node_social_controller,node_social_handler,node_service_registry toneAmber
class node_bpmn,node_bpmn_logic,node_oss,node_monitor,node_message toneMint
class node_remote_user_api,node_remote_social_api,node_oss_api toneRose
```

## Components

### Entry and routing

- [API gateway](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/GatewayApplication.java): `dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/GatewayApplication.java`
- [Gateway filters](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/filter/GlobalCertificationFilter.java): `dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/filter/GlobalCertificationFilter.java`
- [Route refresh](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/handler/RefreshRoutesListener.java): `dante-cloud-platform/dante-cloud-gateway/src/main/java/cn/herodotus/dantecloud/gateway/handler/RefreshRoutesListener.java`
- [Monolith mode](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-modules/dante-monolith-autoconfigure/src/main/java/cn/herodotus/dantecloud/monolith/autoconfigure/MonolithAutoConfiguration.java): `dante-cloud-modules/dante-monolith-autoconfigure/src/main/java/cn/herodotus/dantecloud/monolith/autoconfigure/MonolithAutoConfiguration.java`

### Identity and access

- [Authorization service](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-uaa/src/main/java/cn/herodotus/dantecloud/uaa/UaaApplication.java): `dante-cloud-platform/dante-cloud-uaa/src/main/java/cn/herodotus/dantecloud/uaa/UaaApplication.java`
- [User lookup strategy](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/definition/AbstractStrategyUserDetailsService.java): `dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/definition/AbstractStrategyUserDetailsService.java`
- [Local lookup](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/local/LocalStrategyUserDetailsService.java): `dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/local/LocalStrategyUserDetailsService.java`
- [Remote lookup](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/FeignStrategyUserDetailsService.java): `dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/FeignStrategyUserDetailsService.java`
- [User management](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-upms/src/main/java/cn/herodotus/dantecloud/upms/UpmsApplication.java): `dante-cloud-platform/dante-cloud-upms/src/main/java/cn/herodotus/dantecloud/upms/UpmsApplication.java`
- [Social sign-in](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java): `dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java`
- [Social authentication](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java): `dante-cloud-packages/rpc-server-upms-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/server/upms/autoconfigure/feign/SocialSignInController.java`

### Platform services

- [Workflow engine](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-bpmn-ability/src/main/java/cn/herodotus/dantecloud/bpmn/ability/BpmnAbilityApplication.java): `dante-cloud-services/dante-cloud-bpmn-ability/src/main/java/cn/herodotus/dantecloud/bpmn/ability/BpmnAbilityApplication.java`
- [Workflow logic](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-bpmn-logic/src/main/java/cn/herodotus/dantecloud/bpmn/logic/service/ActIdTenantService.java): `dante-cloud-services/dante-cloud-bpmn-logic/src/main/java/cn/herodotus/dantecloud/bpmn/logic/service/ActIdTenantService.java`
- [Object storage](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-services/dante-cloud-oss-ability/src/main/java/cn/herodotus/dantecloud/oss/ability/OssAbilityApplication.java): `dante-cloud-services/dante-cloud-oss-ability/src/main/java/cn/herodotus/dantecloud/oss/ability/OssAbilityApplication.java`
- [Monitoring](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-monitor/src/main/java/cn/herodotus/dantecloud/monitor/MonitorApplication.java): `dante-cloud-platform/dante-cloud-monitor/src/main/java/cn/herodotus/dantecloud/monitor/MonitorApplication.java`
- [Messaging](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-platform/dante-cloud-message/src/main/java/cn/herodotus/dantecloud/message/MessageApplication.java): `dante-cloud-platform/dante-cloud-message/src/main/java/cn/herodotus/dantecloud/message/MessageApplication.java`

### Service integration

- [Remote user API](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteUserDetailsService.java): `dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteUserDetailsService.java`
- [Remote social API](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteSocialDetailsService.java): `dante-cloud-packages/rpc-client-uaa-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/uaa/autoconfigure/feign/api/RemoteSocialDetailsService.java`
- [Storage client API](https://github.com/dromara/dante-cloud/blob/master/dante-cloud-packages/rpc-client-oss-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/oss/autoconfigure/feign/api/feign/api/RemoteOssPresignedUrlService.java): `dante-cloud-packages/rpc-client-oss-spring-boot-starter/src/main/java/cn/herodotus/dantecloud/rpc/client/oss/autoconfigure/feign/api/feign/api/RemoteOssPresignedUrlService.java`

### Other components

- **Client**
- **Service discovery**

## Connections

- Client → API gateway: sends requests
- API gateway → Gateway filters: filters traffic
- Route refresh → Service discovery: reads routes
- Authorization service → User lookup strategy: uses lookup
- User lookup strategy → Local lookup: selects local
- User lookup strategy → Remote lookup: selects remote
- Remote lookup → Remote user API: requests user
- Remote lookup → Remote social API: requests social user
- Remote user API → User management: calls UPMS
- Remote social API → Social sign-in: calls UPMS
- Social sign-in → Social authentication: authenticates
- Storage client API → Object storage: requests storage
- Monolith mode → Authorization service: configures mode
