Source: https://seerepo.com/r/signalapp/Signal-Server/built
Markdown source: https://seerepo.com/r/signalapp/Signal-Server/built.md
Description: Signal-Server is a Java repo built with JAX-RS, org.glassfish.jersey.core:jersey-server, dropwizard-dependencies, jersey-common, jetty-ee10-bom, and 13 more.

# What is Signal-Server built with?

Signal-Server is a Java repo built with JAX-RS, org.glassfish.jersey.core:jersey-server, dropwizard-dependencies, jersey-common, jetty-ee10-bom, and 13 more. It reaches its data with dropwizard-migrations, signs people in with sts, com.webauthn4j:webauthn4j-core, com.google.auth:google-auth-library-oauth2-http, and com.auth0:java-jwt, takes payments with Stripe, stores files in AWS S3, connects to Google, makes its content with Apache, validates its data with jakarta.validation:jakarta.validation-api, is tested with reactor-test and org.testcontainers:testcontainers-bom, deploys with commons-logging, dropwizard-metrics, metrics-core, metrics-healthchecks, micrometer-bom, and 10 more, and uses apache-client, aws-crt-client, lettuce-core, s3, software.amazon.awssdk:dynamodb, and 2 more. It has 168,448 written lines, with 369 test files.

Read on November 13, 2026, at commit 21be842.

Repository: https://github.com/signalapp/Signal-Server

## Backend

### The base

- **[JAX-RS](https://seerepo.com/uses/jax-rs)**: 80 files
- **org.glassfish.jersey.core:jersey-server**: 40 files

### Data

- **[apache-client](https://seerepo.com/uses/apache-client)**
- **aws-crt-client**
- **lettuce-core**
- **[s3](https://seerepo.com/uses/s3)**
- **software.amazon.awssdk:dynamodb**: 43 files
- **[Redis](https://seerepo.com/uses/redis)**: 35 files · [service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java, line 11](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java#L11)

### Data access

- **dropwizard-migrations**

### Sign-in

- **sts**
- **com.webauthn4j:webauthn4j-core**: 9 files
- **[com.google.auth:google-auth-library-oauth2-http](https://seerepo.com/uses/comgoogleauth-google-auth-library-oauth2-http)**: 4 files
- **com.auth0:java-jwt**: 1 file

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 4 files · [service/src/main/java/org/whispersystems/textsecuregcm/workers/CommandDependencies.java, line 98](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/workers/CommandDependencies.java#L98)
- **[Google](https://seerepo.com/uses/google)**: 4 files · [service/src/main/java/org/whispersystems/textsecuregcm/purchases/BraintreeManager.java, line 28](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/purchases/BraintreeManager.java#L28)
- **[Stripe](https://seerepo.com/uses/stripe)**: 2 files · [service/src/main/java/org/whispersystems/textsecuregcm/purchases/StripeManager.java, line 10](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/purchases/StripeManager.java#L10)
- **[Firebase](https://seerepo.com/uses/firebase)**: 1 file · [service/src/main/java/org/whispersystems/textsecuregcm/push/FcmSender.java, line 14](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/push/FcmSender.java#L14)

## Support

### The base

- **dropwizard-dependencies**
- **jersey-common**
- **jetty-ee10-bom**
- **jetty-ee10-servlets**
- **jetty-ee10-websocket-jetty-server**
- **org.apache.tomcat:annotations-api**
- **reactor-bom**
- **reactor-core-micrometer**
- **io.dropwizard:dropwizard-core**: 39 files
- **org.eclipse.jetty:jetty-bom**: 9 files
- **[jakarta.servlet:jakarta.servlet-api](https://seerepo.com/uses/jakartaservlet-jakartaservlet-api)**: 8 files
- **io.dropwizard:dropwizard-jersey**: 6 files
- **org.eclipse.jetty.websocket:jetty-websocket-jetty-api**: 4 files
- **io.dropwizard:dropwizard-jetty**: 3 files
- **jakarta.inject:jakarta.inject-api**: 3 files
- **io.dropwizard:dropwizard-http2**: 1 file

### Content

- **[Apache](https://seerepo.com/uses/apache)**: 1 file

### Validation

- **[jakarta.validation:jakarta.validation-api](https://seerepo.com/uses/jakartavalidation-jakartavalidation-api)**: 159 files

### Testing

- **reactor-test**
- **org.testcontainers:testcontainers-bom**: 6 files

### Deploy

- **[commons-logging](https://seerepo.com/uses/commons-logging)**
- **dropwizard-metrics**
- **[metrics-core](https://seerepo.com/uses/metrics-core)**
- **metrics-healthchecks**
- **micrometer-bom**
- **opentelemetry-logback-appender-1.0**
- **org.apache.logging.log4j:log4j-bom**
- **[io.micrometer:micrometer-core](https://seerepo.com/uses/iomicrometer-micrometer-core)**: 151 files
- **[org.slf4j:slf4j-api](https://seerepo.com/uses/orgslf4j-slf4j-api)**: 135 files
- **[ch.qos.logback:logback-core](https://seerepo.com/uses/chqoslogback-logback-core)**: 16 files
- **[ch.qos.logback:logback-classic](https://seerepo.com/uses/chqoslogback-logback-classic)**: 5 files
- **ch.qos.logback.access:logback-access-common**: 2 files
- **io.micrometer:micrometer-registry-otlp**: 2 files
- **net.logstash.logback:logstash-logback-encoder**: 2 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 1 file

### Tools

- **[JetBrains](https://seerepo.com/uses/jetbrains)**
- **jsr305**
- **Swagger**
- **net.sourceforge.argparse4j:argparse4j**: 28 files

### Other

- **bom**
- **byte-buddy**
- **byte-buddy-agent**
- **com.google.guava:guava**
- **commons-compress**
- **commons-io**
- **dropwizard-client**
- **jackson-annotations**
- **jackson-databind**
- **jackson-jaxrs-json-provider**
- **jersey-client**
- **libphonenumber**
- **libraries-bom**
- **netty-bom**
- **netty-codec-haproxy**
- **netty-codec-http2**
- **netty-common**
- **netty-nio-client**
- **netty-resolver-dns**
- **netty-tcnative-boringssl-static**
- **netty-transport**
- **netty-transport-native-epoll**
- **okio-jvm**
- **reactor-core**
- **resilience4j-reactor**
- **com.fasterxml.jackson:jackson-bom**: 172 files
- **org.apache.commons:commons-lang3**: 56 files
- **com.fasterxml.jackson.core:jackson-core**: 31 files
- **io.netty:netty-handler**: 12 files
- **io.grpc:grpc-stub**: 11 files
- **io.github.resilience4j:resilience4j-circuitbreaker**: 10 files
- **com.vdurmont:semver4j**: 9 files
- **io.github.resilience4j:resilience4j-retry**: 7 files
- **org.apache.httpcomponents:httpclient**: 5 files
- **io.grpc:grpc-protobuf**: 4 files
- **com.fasterxml.jackson.datatype:jackson-datatype-jsr310**: 2 files
- **io.netty:netty-buffer**: 2 files
- **tools.jackson.core:jackson-databind**: 2 files
- **com.eatthepath:pushy**: 1 file
- **com.fasterxml.jackson.dataformat:jackson-dataformat-yaml**: 1 file
- **io.grpc:grpc-netty**: 1 file
- **io.netty:netty-resolver**: 1 file
- **org.bouncycastle:bcprov-jdk18on**: 1 file

## Other repos with a similar stack

- [spring-projects/spring-boot](https://seerepo.com/r/spring-projects/spring-boot/built): JAX-RS, org.glassfish.jersey.core:jersey-server, lettuce-core, jakarta.servlet:jakarta.servlet-api, io.micrometer:micrometer-core, org.slf4j:slf4j-api, ch.qos.logback:logback-classic, io.micrometer:micrometer-registry-otlp, OpenTelemetry · [Compare](https://seerepo.com/compare/signalapp/Signal-Server/vs/spring-projects/spring-boot)
- [apache/dubbo](https://seerepo.com/r/apache/dubbo/built): JAX-RS, jakarta.servlet:jakarta.servlet-api, jakarta.validation:jakarta.validation-api, commons-logging, micrometer-bom, io.micrometer:micrometer-core, org.slf4j:slf4j-api, io.micrometer:micrometer-registry-otlp, OpenTelemetry · [Compare](https://seerepo.com/compare/apache/dubbo/vs/signalapp/Signal-Server)
- [appsmithorg/appsmith](https://seerepo.com/r/appsmithorg/appsmith/built): apache-client, s3, software.amazon.awssdk:dynamodb, Redis, Google, reactor-core-micrometer, sts, org.slf4j:slf4j-api, OpenTelemetry · [Compare](https://seerepo.com/compare/appsmithorg/appsmith/vs/signalapp/Signal-Server)
- [conductor-oss/conductor](https://seerepo.com/r/conductor-oss/conductor/built): s3, Redis, AWS S3, Google, sts, com.google.auth:google-auth-library-oauth2-http, io.micrometer:micrometer-core, org.slf4j:slf4j-api · [Compare](https://seerepo.com/compare/conductor-oss/conductor/vs/signalapp/Signal-Server)
- [Stirling-Tools/Stirling-PDF](https://seerepo.com/r/Stirling-Tools/Stirling-PDF/built): s3, AWS S3, Stripe, jakarta.servlet:jakarta.servlet-api, Apache, io.micrometer:micrometer-core, ch.qos.logback:logback-core · [Compare](https://seerepo.com/compare/signalapp/Signal-Server/vs/Stirling-Tools/Stirling-PDF)
- [keycloak/keycloak](https://seerepo.com/r/keycloak/keycloak/built): JAX-RS, jakarta.servlet:jakarta.servlet-api, com.webauthn4j:webauthn4j-core, jakarta.validation:jakarta.validation-api, io.micrometer:micrometer-core, org.slf4j:slf4j-api, OpenTelemetry · [Compare](https://seerepo.com/compare/keycloak/keycloak/vs/signalapp/Signal-Server)

## Frequently asked questions

### What language is Signal-Server written in?

Signal-Server is written in Java, with 168,448 written lines.

### What framework does Signal-Server use?

Signal-Server is built with JAX-RS, org.glassfish.jersey.core:jersey-server, dropwizard-dependencies, jersey-common, jetty-ee10-bom, jetty-ee10-servlets, jetty-ee10-websocket-jetty-server, org.apache.tomcat:annotations-api, reactor-bom, reactor-core-micrometer, io.dropwizard:dropwizard-core, org.eclipse.jetty:jetty-bom, jakarta.servlet:jakarta.servlet-api, io.dropwizard:dropwizard-jersey, org.eclipse.jetty.websocket:jetty-websocket-jetty-api, io.dropwizard:dropwizard-jetty, jakarta.inject:jakarta.inject-api, and io.dropwizard:dropwizard-http2.

### What does Signal-Server sign people in with?

Signal-Server signs people in with sts, com.webauthn4j:webauthn4j-core, com.google.auth:google-auth-library-oauth2-http, and com.auth0:java-jwt.

### What does Signal-Server take payments with?

Signal-Server takes payments with Stripe.

The proof: [service/src/main/java/org/whispersystems/textsecuregcm/purchases/StripeManager.java, line 10](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/purchases/StripeManager.java#L10)

### What services does Signal-Server use?

Signal-Server stores files in AWS S3, connects to Google, and uses apache-client, aws-crt-client, lettuce-core, s3, software.amazon.awssdk:dynamodb, Redis, and Firebase.

The proof: [service/src/main/java/org/whispersystems/textsecuregcm/workers/CommandDependencies.java, line 98](https://github.com/signalapp/Signal-Server/blob/21be84230390a80bbf33a016a12a8ef4ab9863e7/service/src/main/java/org/whispersystems/textsecuregcm/workers/CommandDependencies.java#L98)

### Does Signal-Server have tests?

Yes. Signal-Server has 369 test files and is tested with reactor-test and org.testcontainers:testcontainers-bom.

### Which repos have a stack like Signal-Server's?

The ones that share most of its stack: spring-projects/spring-boot, apache/dubbo, and appsmithorg/appsmith.

## 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.
