Source: https://seerepo.com/r/thingsboard/thingsboard/built
Markdown source: https://seerepo.com/r/thingsboard/thingsboard/built.md
Description: thingsboard is a Java repo built with org.springframework.boot:spring-boot-starter-web, grpc-services, org.apache.tomcat.embed:tomcat-embed-websocket,…

# What is thingsboard built with?

thingsboard is a Java repo built with org.springframework.boot:spring-boot-starter-web, grpc-services, org.apache.tomcat.embed:tomcat-embed-websocket, tomcat-embed-core, tomcat-embed-el, and 3 more. It stores its data in com.github.ben-manes.caffeine:caffeine, Postgres, RocksDB, and org.apache.zookeeper:zookeeper, reaches it with org.springframework.data:spring-data-commons and org.springframework.boot:spring-boot-starter-data-jpa, signs people in with org.springframework.boot:spring-boot-starter-security, spring-security-oauth2-client, and com.auth0:java-jwt, connects to Google, makes its content with metadata-extractor, org.apache.pdfbox:pdfbox, Apache, org.freemarker:freemarker, yaml, and 4 more, validates its data with jakarta.validation:jakarta.validation-api and Hibernate, is tested with junit-jupiter, org.springframework.boot:spring-boot-starter-test, rest-assured, junit:junit, org.assertj:assertj-core, and 6 more, deploys with commons-logging, log4j-over-slf4j, micrometer-registry-prometheus, org.springframework.boot:spring-boot-starter-actuator, io.micrometer:micrometer-core, and 5 more, and uses curator-recipes, jedis, org.springframework.data:spring-data-redis, PostgreSQL, Redis, and 1 more. It has 1,193,655 written lines, with 1,443 test files.

Read on November 4, 2026, at commit e48b578.

Repository: https://github.com/thingsboard/thingsboard

## Backend (/)

### The base

- **org.springframework.boot:spring-boot-starter-web**

### Data

- **curator-recipes**
- **jedis**
- **org.springframework.data:spring-data-redis**
- **PostgreSQL**
- **com.github.ben-manes.caffeine:caffeine**: 20 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 6 files · [application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlTable.java, line 12](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/application/src/main/java/org/thingsboard/server/service/install/migrate/CassandraToSqlTable.java#L12)
- **[Redis](https://seerepo.com/uses/redis)**: 3 files · [common/cache/src/main/java/org/thingsboard/server/cache/RedisTbTransactionalCache.java, line 22](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/common/cache/src/main/java/org/thingsboard/server/cache/RedisTbTransactionalCache.java#L22)
- **RocksDB**: 3 files
- **org.apache.zookeeper:zookeeper**: 2 files

### Data access

- **org.springframework.data:spring-data-commons**
- **org.springframework.boot:spring-boot-starter-data-jpa**: 166 files

### Sign-in

- **org.springframework.boot:spring-boot-starter-security**
- **spring-security-oauth2-client**
- **com.auth0:java-jwt**: 2 files

### Services

- **[Kafka](https://seerepo.com/uses/kafka)**: 12 files · [msa/js-executor/config/logger.ts, line 7](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/msa/js-executor/config/logger.ts#L7)
- **[Google](https://seerepo.com/uses/google)**: 3 files · [application/src/main/java/org/thingsboard/server/controller/SignUpController.java, line 8](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/application/src/main/java/org/thingsboard/server/controller/SignUpController.java#L8)

## Support (/)

### The base

- **grpc-services**
- **org.apache.tomcat.embed:tomcat-embed-websocket**
- **tomcat-embed-core**
- **tomcat-embed-el**
- **[Spring](https://seerepo.com/uses/spring)**: 1,549 files

### Content

- **metadata-extractor**
- **org.apache.pdfbox:pdfbox**: 2 files
- **Apache**: 1 file
- **org.freemarker:freemarker**: 1 file

### Validation

- **jakarta.validation:jakarta.validation-api**: 195 files
- **Hibernate**: 1 file

### Testing

- **junit-jupiter**
- **org.springframework.boot:spring-boot-starter-test**
- **rest-assured**
- **junit:junit**: 1,104 files
- **org.assertj:assertj-core**: 674 files
- **org.awaitility:awaitility**: 143 files
- **org.hamcrest:hamcrest**: 61 files
- **org.testcontainers:testcontainers**: 43 files
- **org.apache.curator:curator-test**: 1 file

### Deploy

- **commons-logging**
- **log4j-over-slf4j**
- **micrometer-registry-prometheus**
- **org.springframework.boot:spring-boot-starter-actuator**
- **io.micrometer:micrometer-core**: 8 files
- **org.slf4j:slf4j-api**: 8 files
- **ch.qos.logback:logback-core**: 6 files
- **ch.qos.logback:logback-classic**: 5 files

### Tools

- **jsr305**
- **swagger-annotations-jakarta**
- **org.projectlombok:lombok**: 3,227 files
- **com.google.errorprone:error_prone_annotations**: 1 file

### Other

- **bcpkix-jdk18on**
- **bcprov-jdk18on**
- **bcutil-jdk18on**
- **byte-buddy**
- **byte-buddy-agent**
- **com.google.protobuf:protobuf-java**
- **commons-codec**
- **commons-io**
- **grpc-core**
- **grpc-inprocess**
- **grpc-protobuf**
- **httpcore5**
- **jaxb-api**
- **joda-time**
- **lz4-java**
- **netty-all**
- **netty-bom**
- **netty-tcnative-boringssl-static**
- **netty-transport-native-epoll**
- **org.apache.httpcomponents.client5:httpclient5**
- **org.springframework.boot:spring-boot-starter-websocket**
- **reactor-netty-http**
- **snakeyaml**
- **zstd-jni**
- **com.fasterxml.jackson:jackson-bom**: 1,025 files
- **jakarta.annotation:jakarta.annotation-api**: 231 files
- **org.apache.commons:commons-lang3**: 138 files
- **com.fasterxml.jackson.core:jackson-databind**: 64 files
- **io.netty:netty-handler**: 56 files
- **org.apache.commons:commons-collections4**: 43 files
- **javax.annotation:javax.annotation-api**: 16 files
- **io.grpc:grpc-stub**: 12 files
- **io.grpc:grpc-api**: 11 files
- **io.grpc:grpc-netty-shaded**: 4 files
- **com.google.api:gax**: 3 files
- **jakarta.xml.bind:jakarta.xml.bind-api**: 3 files
- **software.amazon.awssdk:bom**: 3 files
- **com.fasterxml.jackson.dataformat:jackson-dataformat-cbor**: 2 files
- **com.jayway.jsonpath:json-path**: 2 files
- **org.apache.httpcomponents:httpclient**: 2 files
- **com.fasterxml.jackson.datatype:jackson-datatype-jdk8**: 1 file
- **com.fasterxml.jackson.datatype:jackson-datatype-jsr310**: 1 file
- **com.ibm.icu:icu4j**: 1 file
- **org.apache.commons:commons-compress**: 1 file
- **org.xerial.snappy:snappy-java**: 1 file

## Backend (msa/js-executor)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in msa/web-ui/package.json](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/msa/web-ui/package.json)

### Services

- **[Kafka](https://seerepo.com/uses/kafka)**: 2 files · [msa/js-executor/config/logger.ts, line 7](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/msa/js-executor/config/logger.ts#L7)

## Support (msa/js-executor)

### Deploy

- **[winston](https://seerepo.com/uses/winston)**: 1 file
- **winston-daily-rotate-file**: 1 file

### Other

- **fs-extra**: 1 file

## Backend (msa/web-report)

### The base

- **[Express](https://seerepo.com/uses/express)**: 4 files · [in msa/web-ui/package.json](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/msa/web-ui/package.json)

## Support (msa/web-report)

### Testing

- **playwright-core**: 3 files
- **playwright-chromium**: 1 file

### Deploy

- **[winston](https://seerepo.com/uses/winston)**: 2 files
- **winston-daily-rotate-file**: 1 file

### Other

- **fs-extra**: 1 file

## Backend (msa/web-ui)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in msa/web-ui/package.json](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/msa/web-ui/package.json)

## Support (msa/web-ui)

### Deploy

- **[winston](https://seerepo.com/uses/winston)**: 1 file
- **winston-daily-rotate-file**: 1 file

### Other

- **compression**: 1 file
- **fs-extra**: 1 file
- **http-proxy**: 1 file

## Frontend (ui-ngx)

### The base

- **Angular**: 1,800 files · [in ui-ngx/package.json](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/ui-ngx/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **[angular](https://seerepo.com/uses/angular)**: 702 files
- **Leaflet**: 29 files
- **ace-builds**: 25 files
- **echarts**: 14 files
- **SVG.js**: 10 files
- **MapLibre**: 1 file
- **screenfull**: 1 file

## Support (ui-ngx)

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 6 files
- **[qrcode](https://seerepo.com/uses/qrcode)**: 5 files
- **ngx-markdown**: 3 files
- **html2canvas**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file

### Tools

- **@angular/compiler**: 2 files
- **@ngrx/store-devtools**: 1 file
- **js-beautify**: 1 file

### Other

- **NgRx**: 859 files
- **rxjs**: 781 files
- **@ngx-translate/core**: 553 files
- **tinycolor2**: 31 files
- **moment**: 18 files
- **moment-timezone**: 4 files
- **core-js**: 1 file
- **tslib**: 1 file
- **zone.js**: 1 file

## Other repos with a similar stack

- [Stirling-Tools/Stirling-PDF](https://seerepo.com/r/Stirling-Tools/Stirling-PDF/built): org.springframework.boot:spring-boot-starter-web, PostgreSQL, com.github.ben-manes.caffeine:caffeine, Postgres, Spring, org.apache.pdfbox:pdfbox, Apache, io.micrometer:micrometer-core, ch.qos.logback:logback-classic, Tailwind CSS · [Compare](https://seerepo.com/compare/Stirling-Tools/Stirling-PDF/vs/thingsboard/thingsboard)
- [spring-projects/spring-boot](https://seerepo.com/r/spring-projects/spring-boot/built): org.springframework.boot:spring-boot-starter-web, org.springframework.data:spring-data-redis, tomcat-embed-core, Spring, org.springframework.data:spring-data-commons, Apache, Hibernate, io.micrometer:micrometer-core, org.slf4j:slf4j-api, ch.qos.logback:logback-classic · [Compare](https://seerepo.com/compare/spring-projects/spring-boot/vs/thingsboard/thingsboard)
- [apache/superset](https://seerepo.com/r/apache/superset/built): Postgres, Redis, Google, Express, winston, ace-builds, echarts, MapLibre · [Compare](https://seerepo.com/compare/apache/superset/vs/thingsboard/thingsboard)
- [immich-app/immich](https://seerepo.com/r/immich-app/immich/built): Postgres, Redis, Express, Tailwind CSS, MapLibre, yaml, qrcode · [Compare](https://seerepo.com/compare/immich-app/immich/vs/thingsboard/thingsboard)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): Postgres, Redis, Tailwind CSS, Leaflet, echarts, html2canvas, marked · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/thingsboard/thingsboard)
- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Postgres, Redis, Kafka, Express, winston, yaml · [Compare](https://seerepo.com/compare/n8n-io/n8n/vs/thingsboard/thingsboard)

## Frequently asked questions

### What language is thingsboard written in?

thingsboard is written in Java, with 1,193,655 written lines.

### What framework does thingsboard use?

thingsboard is built with org.springframework.boot:spring-boot-starter-web, grpc-services, org.apache.tomcat.embed:tomcat-embed-websocket, tomcat-embed-core, tomcat-embed-el, Spring, Express, and Angular.

### What database does thingsboard use?

thingsboard stores its data in com.github.ben-manes.caffeine:caffeine, Postgres, RocksDB, and org.apache.zookeeper:zookeeper and reaches it with org.springframework.data:spring-data-commons and org.springframework.boot:spring-boot-starter-data-jpa.

### What does thingsboard sign people in with?

thingsboard signs people in with org.springframework.boot:spring-boot-starter-security, spring-security-oauth2-client, and com.auth0:java-jwt.

### What services does thingsboard use?

thingsboard connects to Google and uses curator-recipes, jedis, org.springframework.data:spring-data-redis, PostgreSQL, Redis, and Kafka.

The proof: [application/src/main/java/org/thingsboard/server/controller/SignUpController.java, line 8](https://github.com/thingsboard/thingsboard/blob/e48b5780e17b65b78dd0bd7cf5e7805706499abb/application/src/main/java/org/thingsboard/server/controller/SignUpController.java#L8)

### Does thingsboard have tests?

Yes. thingsboard has 1,443 test files and is tested with junit-jupiter, org.springframework.boot:spring-boot-starter-test, rest-assured, junit:junit, org.assertj:assertj-core, org.awaitility:awaitility, org.hamcrest:hamcrest, org.testcontainers:testcontainers, org.apache.curator:curator-test, playwright-core, and playwright-chromium.

### Which repos have a stack like thingsboard's?

The ones that share most of its stack: Stirling-Tools/Stirling-PDF, spring-projects/spring-boot, and apache/superset.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
