# xiaofeiliu200412/thingsboard architecture

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

- Interactive diagram: https://gitdiagram.com/xiaofeiliu200412/thingsboard
- Repository: https://github.com/xiaofeiliu200412/thingsboard

## Overview

ThingsBoard is an IoT platform for collecting, processing, visualizing, and managing device data. A principal workflow is device telemetry entering the platform, being processed by the rule engine, and becoming data users can query and visualize. The repository also includes entity and alarm querying, device-management APIs, and dashboards. The README documents product capabilities; sampled source confirms query-service-to-DAO behavior and queue-consumer dispatch to actors. Other subsystem links below are documented at a high level or left unverified where source was not sampled.

Main entry points: [`dao/src/main/java/org/thingsboard/server/dao`](https://github.com/xiaofeiliu200412/thingsboard/tree/master/dao/src/main/java/org/thingsboard/server/dao) (Persistence Services), [`rule-engine`](https://github.com/xiaofeiliu200412/thingsboard/tree/master/rule-engine) (Rule Engine), [`application/src/main/java/org/thingsboard/server/controller`](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/controller) (REST APIs), [`application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java`](https://github.com/xiaofeiliu200412/thingsboard/blob/master/application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java) (Entity Query Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Device Ingestion"]
  node_transport["Device Transports"]
  node_queue["Message Queues"]
end

subgraph group_processing["Message Processing"]
  node_coreconsumer["Core Consumers"]
  node_ruleconsumer["Rule Consumers"]
  node_actors["Actor System"]
  node_ruleengine["Rule Engine"]
  node_scripting["Rule Scripting"]
end

subgraph group_data["Data Services"]
  node_domain["Entity Domain"]
  node_dao[("Persistence Services")]
  node_queryservice["Entity Query Service"]
  node_queryrepo[("Entity Query Repository")]
end

subgraph group_experience["User Experience"]
  node_api["REST APIs"]
  node_auth["Authentication"]
  node_dashboard["Dashboards"]
  node_visualization["Data Visualization"]
end

node_devices(("IoT Devices"))
node_user(("Platform Users"))

node_devices -->|"send telemetry"| node_transport
node_transport -.->|"collect data"| node_queue
node_queue -.->|"deliver messages"| node_ruleconsumer
node_ruleconsumer -->|"dispatch messages"| node_actors
node_actors -.->|"process rules"| node_ruleengine
node_ruleengine -.->|"run scripts"| node_scripting
node_ruleengine -.->|"process data"| node_dao
node_user -->|"manage devices"| node_api
node_user -.->|"authenticate"| node_auth
node_api -.->|"manage entities"| node_dao
node_api -.->|"query data"| node_queryservice
node_queryservice -->|"fetch entities"| node_dao
node_queryrepo -->|"query storage"| node_dao
node_user -->|"view dashboards"| node_dashboard
node_dashboard -->|"visualize data"| node_visualization
node_visualization -.->|"request data"| node_queryservice

click node_transport "https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/transport"
click node_queue "https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/queue"
click node_coreconsumer "https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/queue"
click node_ruleconsumer "https://github.com/xiaofeiliu200412/thingsboard/blob/master/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java"
click node_actors "https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/actors"
click node_ruleengine "https://github.com/xiaofeiliu200412/thingsboard/tree/master/rule-engine"
click node_scripting "https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/script"
click node_domain "https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/data/src/main/java/org/thingsboard/server/common/data"
click node_dao "https://github.com/xiaofeiliu200412/thingsboard/tree/master/dao/src/main/java/org/thingsboard/server/dao"
click node_queryservice "https://github.com/xiaofeiliu200412/thingsboard/blob/master/application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java"
click node_queryrepo "https://github.com/xiaofeiliu200412/thingsboard/blob/master/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java"
click node_api "https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/controller"
click node_auth "https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/security/auth"
click node_dashboard "https://github.com/xiaofeiliu200412/thingsboard/tree/master/ui-ngx/src/app/modules/home/pages/dashboard"
click node_visualization "https://github.com/xiaofeiliu200412/thingsboard/tree/master/ui-ngx/src/app"

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_transport,node_queue,node_user toneBlue
class node_coreconsumer,node_ruleconsumer,node_actors,node_ruleengine,node_scripting toneAmber
class node_domain,node_dao,node_queryservice,node_queryrepo toneMint
class node_api,node_auth,node_dashboard,node_visualization toneRose
class node_devices toneIndigo
```

## Components

### Device Ingestion

- [Device Transports](https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/transport): `common/transport`
- [Message Queues](https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/queue): `common/queue`

### Message Processing

- [Core Consumers](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/queue): `application/src/main/java/org/thingsboard/server/service/queue`
- [Rule Consumers](https://github.com/xiaofeiliu200412/thingsboard/blob/master/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java): `application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java`
- [Actor System](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/actors): `application/src/main/java/org/thingsboard/server/actors`
- [Rule Engine](https://github.com/xiaofeiliu200412/thingsboard/tree/master/rule-engine): `rule-engine`
- [Rule Scripting](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/script): `application/src/main/java/org/thingsboard/server/service/script`

### Data Services

- [Entity Domain](https://github.com/xiaofeiliu200412/thingsboard/tree/master/common/data/src/main/java/org/thingsboard/server/common/data): `common/data/src/main/java/org/thingsboard/server/common/data`
- [Persistence Services](https://github.com/xiaofeiliu200412/thingsboard/tree/master/dao/src/main/java/org/thingsboard/server/dao): `dao/src/main/java/org/thingsboard/server/dao`
- [Entity Query Service](https://github.com/xiaofeiliu200412/thingsboard/blob/master/application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java): `application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java`
- [Entity Query Repository](https://github.com/xiaofeiliu200412/thingsboard/blob/master/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java): `dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java`

### User Experience

- [REST APIs](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/controller): `application/src/main/java/org/thingsboard/server/controller`
- [Authentication](https://github.com/xiaofeiliu200412/thingsboard/tree/master/application/src/main/java/org/thingsboard/server/service/security/auth): `application/src/main/java/org/thingsboard/server/service/security/auth`
- [Dashboards](https://github.com/xiaofeiliu200412/thingsboard/tree/master/ui-ngx/src/app/modules/home/pages/dashboard): `ui-ngx/src/app/modules/home/pages/dashboard`
- [Data Visualization](https://github.com/xiaofeiliu200412/thingsboard/tree/master/ui-ngx/src/app): `ui-ngx/src/app`

### Other components

- **IoT Devices**
- **Platform Users**

## Connections

- IoT Devices → Device Transports: send telemetry
- Device Transports → Message Queues: collect data (evidence: `common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java`)
- Message Queues → Rule Consumers: deliver messages (evidence: `application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java`)
- Rule Consumers → Actor System: dispatch messages (evidence: `application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java`)
- Actor System → Rule Engine: process rules
- Rule Engine → Rule Scripting: run scripts
- Rule Engine → Persistence Services: process data
- Platform Users → REST APIs: manage devices
- Platform Users → Authentication: authenticate
- REST APIs → Persistence Services: manage entities
- REST APIs → Entity Query Service: query data
- Entity Query Service → Persistence Services: fetch entities (evidence: `application/src/main/java/org/thingsboard/server/service/query/DefaultEntityQueryService.java`)
- Entity Query Repository → Persistence Services: query storage (evidence: `dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java`)
- Platform Users → Dashboards: view dashboards
- Dashboards → Data Visualization: visualize data
- Data Visualization → Entity Query Service: request data
