Source: https://seerepo.com/r/open-metadata/OpenMetadata/built
Markdown source: https://seerepo.com/r/open-metadata/OpenMetadata/built.md
Description: OpenMetadata is a Java repo built with React, Vite, JAX-RS, Flask, org.glassfish.jersey.media:jersey-media-multipart, and 17 more.

# What is OpenMetadata built with?

OpenMetadata is a Java repo built with React, Vite, JAX-RS, Flask, org.glassfish.jersey.media:jersey-media-multipart, and 17 more. It stores its data in Postgres, com.zaxxer:HikariCP, Flyway, and MySQL, reaches it with guicey-jdbi3, jdbi3-sqlobject, jsqlparser, org.jdbi:jdbi3-core, and io.dropwizard:dropwizard-jdbi3, signs people in with com.google.auth:google-auth-library-oauth2-http, google-oauth-client, java-jwt, nimbus-jose-jwt, oauth2-oidc-sdk, and 7 more, uses AI through Model Context Protocol and io.modelcontextprotocol.sdk:mcp-json-jackson2, connects to Google, makes its content with angus-mail, commonmark-ext-autolink, commonmark-ext-gfm-strikethrough, commonmark-ext-gfm-tables, owasp-java-html-sanitizer, and 11 more, validates its data with everit-json-schema, jakarta.validation:jakarta.validation-api, com.networknt:json-schema-validator, org.jsonschema2pojo:jsonschema2pojo-core, javax.validation:validation-api, and 1 more, is tested with jsonassert, junit, junit-bom, junit-jupiter, junit-jupiter-api, and 18 more, deploys with log4j-core, metrics-core, micrometer-observation, micrometer-registry-prometheus, OpenTelemetry, and 10 more, and uses apache-client, com.mysql:mysql-connector-j, docker-java-transport-zerodep, elasticache, lettuce-core, and 10 more. It has 2,166,002 written lines, with 4,066 test files.

Read on November 7, 2026, at commit 3aaedca.

Repository: https://github.com/open-metadata/OpenMetadata

## Frontend

### The base

- **[React](https://seerepo.com/uses/react)**: [in openmetadata-ui/src/main/resources/ui/package.json](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-ui/src/main/resources/ui/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: [in openmetadata-ui/src/main/resources/ui/package.json](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-ui/src/main/resources/ui/package.json)

### Styles

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

## Backend

### The base

- **[JAX-RS](https://seerepo.com/uses/jax-rs)**: 466 files
- **[Flask](https://seerepo.com/uses/flask)**: 23 files
- **org.glassfish.jersey.media:jersey-media-multipart**: 3 files

### Data

- **apache-client**
- **[com.mysql:mysql-connector-j](https://seerepo.com/uses/commysql-mysql-connector-j)**
- **docker-java-transport-zerodep**
- **elasticache**
- **lettuce-core**
- **org.flywaydb:flyway-mysql**
- **PostgreSQL**
- **redshift-jdbc42**
- **[s3](https://seerepo.com/uses/s3)**
- **tomcat-jdbc**
- **[Redis](https://seerepo.com/uses/redis)**: 8 files · [openmetadata-service/src/main/java/org/openmetadata/service/cache/CacheInvalidationPubSub.java, line 14](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/cache/CacheInvalidationPubSub.java#L14)
- **[Postgres](https://seerepo.com/uses/postgres)**: 5 files · [openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v111/MigrationUtilV111.java, line 22](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v111/MigrationUtilV111.java#L22)
- **[com.zaxxer:HikariCP](https://seerepo.com/uses/comzaxxer-hikaricp)**: 3 files
- **Flyway**: 3 files
- **[MySQL](https://seerepo.com/uses/mysql)**: 2 files · [openmetadata-service/pom.xml, line 1](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/pom.xml#L1)
- **com.azure:azure-storage-blob**: 1 file
- **net.jodah:expiringmap**: 1 file
- **software.amazon.awssdk:rds**: 1 file

### Data access

- **guicey-jdbi3**
- **jdbi3-sqlobject**
- **jsqlparser**
- **org.jdbi:jdbi3-core**: 226 files
- **io.dropwizard:dropwizard-jdbi3**: 1 file

### Sign-in

- **com.google.auth:google-auth-library-oauth2-http**
- **google-oauth-client**
- **java-jwt**
- **nimbus-jose-jwt**
- **oauth2-oidc-sdk**
- **software.amazon.awssdk:auth**: 8 files
- **com.unboundid:unboundid-ldapsdk**: 6 files
- **com.azure:azure-identity**: 3 files
- **com.microsoft.azure:msal4j**: 1 file
- **org.passay:passay**: 1 file
- **software.amazon.awssdk:secretsmanager**: 1 file
- **software.amazon.awssdk:sts**: 1 file

### AI

- **[Model Context Protocol](https://seerepo.com/uses/model-context-protocol)**
- **io.modelcontextprotocol.sdk:mcp-json-jackson2**: 2 files

### Services

- **[Elasticsearch](https://seerepo.com/uses/elasticsearch)**: 63 files · [openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/insights/DataInsightsApp.java, line 1](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/insights/DataInsightsApp.java#L1)
- **[Google](https://seerepo.com/uses/google)**: 1 file · [openmetadata-service/src/main/java/org/openmetadata/service/secrets/GCPSecretsManager.java, line 6](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/secrets/GCPSecretsManager.java#L6)

## Support

### The base

- **javax.ws.rs-api**
- **jersey-container-servlet**
- **jersey-media-json-jackson**
- **jersey-server**
- **jetty-bom**
- **jetty-ee10-bom**
- **jetty-ee10-servlets**
- **org.springframework:spring-beans**
- **[jakarta.servlet:jakarta.servlet-api](https://seerepo.com/uses/jakartaservlet-jakartaservlet-api)**: 47 files
- **io.dropwizard:dropwizard-core**: 45 files
- **[Spring](https://seerepo.com/uses/spring)**: 8 files
- **org.eclipse.jetty:jetty-server**: 6 files
- **org.eclipse.jetty.ee10:jetty-ee10-servlet**: 4 files
- **org.eclipse.jetty:jetty-http**: 3 files
- **org.eclipse.jetty:jetty-util**: 3 files
- **javax.servlet:javax.servlet-api**: 1 file
- **org.eclipse.jetty:jetty-io**: 1 file

### Content

- **angus-mail**
- **commonmark-ext-autolink**
- **commonmark-ext-gfm-strikethrough**
- **commonmark-ext-gfm-tables**
- **owasp-java-html-sanitizer**
- **poi-ooxml**
- **com.github.jknack:handlebars**: 31 files
- **[Apache](https://seerepo.com/uses/apache)**: 25 files
- **org.commonmark:commonmark**: 11 files
- **org.freemarker:freemarker**: 7 files
- **com.opencsv:opencsv**: 1 file
- **com.vladsch.flexmark:flexmark-html2md-converter**: 1 file
- **org.apache.pdfbox:pdfbox**: 1 file
- **org.apache.poi:poi**: 1 file
- **[org.jsoup:jsoup](https://seerepo.com/uses/orgjsoup-jsoup)**: 1 file
- **org.simplejavamail:simple-java-mail**: 1 file

### Validation

- **everit-json-schema**
- **jakarta.validation:jakarta.validation-api**: 157 files
- **com.networknt:json-schema-validator**: 5 files
- **org.jsonschema2pojo:jsonschema2pojo-core**: 5 files
- **javax.validation:validation-api**: 4 files
- **[Hibernate](https://seerepo.com/uses/hibernate)**: 1 file

### Testing

- **jsonassert**
- **junit**
- **junit-bom**
- **junit-jupiter**
- **junit-jupiter-api**
- **junit-jupiter-engine**
- **junit-jupiter-params**
- **junit-pioneer**
- **junit-platform-commons**
- **kubernetes-server-mock**
- **mockito-all**
- **mockito-inline**
- **mockwebserver**
- **[postgresql](https://seerepo.com/uses/postgresql)**
- **org.mockito:mockito-core**: 734 files
- **org.awaitility:awaitility**: 248 files
- **org.mockito:mockito-junit-jupiter**: 104 files
- **org.assertj:assertj-core**: 101 files
- **org.testcontainers:testcontainers**: 62 files
- **com.github.docker-java:docker-java-api**: 6 files
- **io.dropwizard:dropwizard-testing**: 5 files
- **org.junit.platform:junit-platform-launcher**: 3 files
- **com.tngtech.archunit:archunit-junit5**: 2 files

### Deploy

- **[log4j-core](https://seerepo.com/uses/log4j-core)**
- **metrics-core**
- **micrometer-observation**
- **micrometer-registry-prometheus**
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**
- **[Prometheus](https://seerepo.com/uses/prometheus)**
- **[slf4j-simple](https://seerepo.com/uses/slf4j-simple)**
- **[org.slf4j:slf4j-api](https://seerepo.com/uses/orgslf4j-slf4j-api)**: 58 files
- **[io.micrometer:micrometer-core](https://seerepo.com/uses/iomicrometer-micrometer-core)**: 54 files
- **io.fabric8:kubernetes-client**: 8 files
- **[ch.qos.logback:logback-classic](https://seerepo.com/uses/chqoslogback-logback-classic)**: 7 files
- **ch.qos.logback:logback-core**: 6 files
- **io.kubernetes:client-java**: 6 files
- **[org.apache.logging.log4j:log4j-api](https://seerepo.com/uses/orgapachelogginglog4j-log4j-api)**: 2 files
- **software.amazon.awssdk:ssm**: 1 file

### Tools

- **commons-cli**
- **Swagger**
- **org.projectlombok:lombok**: 1,227 files
- **packaging**: 10 files
- **org.antlr:antlr4-runtime**: 1 file

### Other

- **Apache Airflow**
- **bcpkix-jdk18on**
- **bcprov-jdk18on**
- **bcutil-jdk18on**
- **bom**
- **com.google.guava:guava**
- **commons-beanutils**
- **commons-codec**
- **commons-compress**
- **commons-io**
- **dropwizard-client**
- **feign-core**
- **feign-okhttp**
- **httpasyncclient**
- **httpcore5**
- **io.swagger.core.v3:swagger-core**
- **jackson-annotations**
- **jackson-bom**
- **jackson-databind-nullable**
- **jackson-dataformat-cbor**
- **jackson-datatype-jsr310**
- **jakarta.el**
- **jakarta.json**
- **jakarta.xml.bind-api**
- **jaxb-runtime**
- **jersey-client**
- **json-smart**
- **Mozilla**
- **netty-bom**
- **okhttp-bom**
- **okhttp-jvm**
- **org.apache.httpcomponents.client5:httpclient5**
- **parsson**
- **pendulum**
- **quartz**
- **reactor-core**
- **reactor-netty-core**
- **reactor-netty-http**
- **reflections**
- **resilience4j-ratelimiter**
- **snakeyaml**
- **woodstox-core**
- **xmlsec**
- **com.fasterxml.jackson.core:jackson-databind**: 264 files
- **jakarta.json:jakarta.json-api**: 169 files
- **org.apache.commons:commons-lang3**: 99 files
- **com.fasterxml.jackson.core:jackson-core**: 90 files
- **jakarta.annotation:jakarta.annotation-api**: 10 files
- **org.json:json**: 8 files
- **com.fasterxml.jackson.dataformat:jackson-dataformat-yaml**: 7 files
- **com.cronutils:cron-utils**: 5 files
- **com.slack.api:slack-api-client**: 5 files
- **com.apicatalog:titanium-json-ld**: 2 files
- **io.github.classgraph:classgraph**: 2 files
- **com.fasterxml.jackson.module:jackson-module-blackbird**: 1 file
- **com.google.code.gson:gson**: 1 file
- **com.jayway.jsonpath:json-path**: 1 file
- **info.picocli:picocli**: 1 file
- **org.apache.httpcomponents:httpclient**: 1 file

## Other repos with a similar stack

- [Stirling-Tools/Stirling-PDF](https://seerepo.com/r/Stirling-Tools/Stirling-PDF/built): React, Vite, PostgreSQL, Postgres, Spring, Tailwind CSS, angus-mail, commonmark-ext-gfm-tables, Apache, org.commonmark:commonmark, org.apache.pdfbox:pdfbox, io.micrometer:micrometer-core, ch.qos.logback:logback-classic · [Compare](https://seerepo.com/compare/open-metadata/OpenMetadata/vs/Stirling-Tools/Stirling-PDF)
- [jeecgboot/JeecgBoot](https://seerepo.com/r/jeecgboot/JeecgBoot/built): Vite, PostgreSQL, Redis, Postgres, Flyway, MySQL, jakarta.servlet:jakarta.servlet-api, Spring, org.commonmark:commonmark, org.jsoup:jsoup, Hibernate · [Compare](https://seerepo.com/compare/jeecgboot/JeecgBoot/vs/open-metadata/OpenMetadata)
- [spring-projects/spring-boot](https://seerepo.com/r/spring-projects/spring-boot/built): JAX-RS, lettuce-core, jakarta.servlet:jakarta.servlet-api, Spring, angus-mail, Apache, Hibernate, org.slf4j:slf4j-api, io.micrometer:micrometer-core, ch.qos.logback:logback-classic · [Compare](https://seerepo.com/compare/open-metadata/OpenMetadata/vs/spring-projects/spring-boot)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): React, s3, Redis, Postgres, MySQL, Google, Tailwind CSS, Model Context Protocol, OpenTelemetry · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/open-metadata/OpenMetadata)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): React, Vite, Flask, Redis, Google, Apache, OpenTelemetry, org.slf4j:slf4j-api, org.apache.logging.log4j:log4j-api · [Compare](https://seerepo.com/compare/apache/airflow/vs/open-metadata/OpenMetadata)
- [langgenius/dify](https://seerepo.com/r/langgenius/dify/built): React, Vite, Flask, Redis, Postgres, MySQL, Tailwind CSS · [Compare](https://seerepo.com/compare/langgenius/dify/vs/open-metadata/OpenMetadata)

## Frequently asked questions

### What language is OpenMetadata written in?

OpenMetadata is written in Java, with 2,166,002 written lines.

### What framework does OpenMetadata use?

OpenMetadata is built with React, Vite, JAX-RS, Flask, org.glassfish.jersey.media:jersey-media-multipart, javax.ws.rs-api, jersey-container-servlet, jersey-media-json-jackson, jersey-server, jetty-bom, jetty-ee10-bom, jetty-ee10-servlets, org.springframework:spring-beans, jakarta.servlet:jakarta.servlet-api, io.dropwizard:dropwizard-core, Spring, org.eclipse.jetty:jetty-server, org.eclipse.jetty.ee10:jetty-ee10-servlet, org.eclipse.jetty:jetty-http, org.eclipse.jetty:jetty-util, javax.servlet:javax.servlet-api, and org.eclipse.jetty:jetty-io.

The proof: [in openmetadata-ui/src/main/resources/ui/package.json](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-ui/src/main/resources/ui/package.json)

### What database does OpenMetadata use?

OpenMetadata stores its data in Postgres, com.zaxxer:HikariCP, Flyway, and MySQL and reaches it with guicey-jdbi3, jdbi3-sqlobject, jsqlparser, org.jdbi:jdbi3-core, and io.dropwizard:dropwizard-jdbi3.

The proof: [openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v111/MigrationUtilV111.java, line 22](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/migration/utils/v111/MigrationUtilV111.java#L22)

### What does OpenMetadata sign people in with?

OpenMetadata signs people in with com.google.auth:google-auth-library-oauth2-http, google-oauth-client, java-jwt, nimbus-jose-jwt, oauth2-oidc-sdk, software.amazon.awssdk:auth, com.unboundid:unboundid-ldapsdk, com.azure:azure-identity, com.microsoft.azure:msal4j, org.passay:passay, software.amazon.awssdk:secretsmanager, and software.amazon.awssdk:sts.

### Does OpenMetadata use AI?

Yes. OpenMetadata uses AI through Model Context Protocol and io.modelcontextprotocol.sdk:mcp-json-jackson2.

### What services does OpenMetadata use?

OpenMetadata connects to Google and uses apache-client, com.mysql:mysql-connector-j, docker-java-transport-zerodep, elasticache, lettuce-core, org.flywaydb:flyway-mysql, PostgreSQL, redshift-jdbc42, s3, tomcat-jdbc, Redis, com.azure:azure-storage-blob, net.jodah:expiringmap, software.amazon.awssdk:rds, and Elasticsearch.

The proof: [openmetadata-service/src/main/java/org/openmetadata/service/secrets/GCPSecretsManager.java, line 6](https://github.com/open-metadata/OpenMetadata/blob/3aaedcaaf8705462a8cdc74d01fde259dd56eba7/openmetadata-service/src/main/java/org/openmetadata/service/secrets/GCPSecretsManager.java#L6)

### Does OpenMetadata have tests?

Yes. OpenMetadata has 4,066 test files and is tested with jsonassert, junit, junit-bom, junit-jupiter, junit-jupiter-api, junit-jupiter-engine, junit-jupiter-params, junit-pioneer, junit-platform-commons, kubernetes-server-mock, mockito-all, mockito-inline, mockwebserver, postgresql, org.mockito:mockito-core, org.awaitility:awaitility, org.mockito:mockito-junit-jupiter, org.assertj:assertj-core, org.testcontainers:testcontainers, com.github.docker-java:docker-java-api, io.dropwizard:dropwizard-testing, org.junit.platform:junit-platform-launcher, and com.tngtech.archunit:archunit-junit5.

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

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

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