Source: https://seerepo.com/r/dbt-labs/dbt/built
Markdown source: https://seerepo.com/r/dbt-labs/dbt/built.md
Description: dbt is a Rust repo built with axum, Tokio, React, react-router-dom, and Vite. It stores its data in arrow, datafusion, and SQLite.

# What is dbt built with?

dbt is a Rust repo built with axum, Tokio, React, react-router-dom, and Vite. It stores its data in arrow, datafusion, and SQLite, signs people in with jsonwebtoken, makes its content with askama, handlebars, liquid, minijinja, minijinja-contrib, and 11 more, validates its data with schemars and Zod, is tested with arbitrary, libfuzzer-sys, fake, Vitest, and Testing Library, deploys with tracing, tracing-subscriber, tracy-client, bollard, OpenTelemetry, and 2 more, and uses aws-sdk-s3, rusqlite, Redis, and DuckDB. It has 820,702 written lines, with 300 test files.

Read on November 9, 2026, at commit d5578da.

Repository: https://github.com/dbt-labs/dbt

## Frontend (/)

### Interface

- **[console](https://seerepo.com/uses/console)**: 16 files
- **[dialoguer](https://seerepo.com/uses/dialoguer)**: 7 files
- **[indicatif](https://seerepo.com/uses/indicatif)**: 3 files
- **[comfy-table](https://seerepo.com/uses/comfy-table)**: 1 file

## Backend (/)

### The base

- **[axum](https://seerepo.com/uses/axum)**: 3 files

### Data

- **[aws-sdk-s3](https://seerepo.com/uses/aws-sdk-s3)**
- **[rusqlite](https://seerepo.com/uses/rusqlite)**
- **arrow**: 103 files
- **datafusion**: 25 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 3 files · [crates/adbc-record-replay/src/storage/sqlite.rs, line 7](https://github.com/dbt-labs/dbt/blob/d5578da86f9ff8546e981ba182cf1db836029c0d/crates/adbc-record-replay/src/storage/sqlite.rs#L7)
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [crates/dbt-state/src/task_cache_redis.rs, line 3](https://github.com/dbt-labs/dbt/blob/d5578da86f9ff8546e981ba182cf1db836029c0d/crates/dbt-state/src/task_cache_redis.rs#L3)

### Sign-in

- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 2 files

## Support (/)

### The base

- **[Tokio](https://seerepo.com/uses/tokio)**: 65 files

### Content

- **askama**
- **[handlebars](https://seerepo.com/uses/handlebars)**
- **liquid**
- **minijinja**
- **minijinja-contrib**
- **tera**
- **[parquet](https://seerepo.com/uses/parquet)**: 17 files
- **[csv](https://seerepo.com/uses/csv)**: 3 files
- **[zip](https://seerepo.com/uses/zip)**: 3 files
- **csv-core**: 2 files
- **v_htmlescape**: 1 file

### Validation

- **[schemars](https://seerepo.com/uses/schemars)**: 16 files

### Testing

- **arbitrary**
- **libfuzzer-sys**
- **fake**: 5 files

### Deploy

- **[tracing](https://seerepo.com/uses/tracing)**: 101 files
- **[tracing-subscriber](https://seerepo.com/uses/tracing-subscriber)**: 10 files
- **tracy-client**: 5 files
- **bollard**: 4 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 2 files
- **[opentelemetry_sdk](https://seerepo.com/uses/opentelemetry-sdk)**: 2 files
- **[opentelemetry-otlp](https://seerepo.com/uses/opentelemetry-otlp)**: 1 file

### Tools

- **paste**
- **clap**: 15 files
- **rust-embed**: 6 files
- **proc-macro2**: 5 files
- **quote**: 5 files
- **syn**: 5 files
- **Ruff**: 3 files
- **clap_complete**: 2 files
- **ruff_text_size**: 2 files
- **clap_complete_fig**: 1 file
- **clap_complete_nushell**: 1 file
- **git-version**: 1 file
- **ruff_python_parser**: 1 file

### Other

- **astral-tokio-tar**
- **aws-smithy-types**
- **iana-time-zone**
- **pbjson**
- **tonic-prost**
- **serde**: 306 files
- **serde_json**: 191 files
- **indexmap**: 116 files
- **arrow-schema**: 110 files
- **tempfile**: 88 files
- **chrono**: 83 files
- **arrow-array**: 48 files
- **serde_with**: 48 files
- **async-trait**: 45 files
- **regex**: 41 files
- **uuid**: 33 files
- **reqwest**: 30 files
- **prost**: 22 files
- **chrono-tz**: 19 files
- **strum**: 19 files
- **futures**: 17 files
- **thiserror**: 16 files
- **anyhow**: 15 files
- **base64**: 15 files
- **datafusion-common**: 15 files
- **dirs**: 15 files
- **parking_lot**: 15 files
- **sha2**: 15 files
- **url**: 15 files
- **scc**: 12 files
- **itertools**: 11 files
- **md5**: 11 files
- **pathdiff**: 11 files
- **rand**: 9 files
- **pyo3**: 8 files
- **serde_arrow**: 8 files
- **flate2**: 7 files
- **petgraph**: 7 files
- **strum_macros**: 7 files
- **ureq**: 7 files
- **hex**: 6 files
- **humantime**: 6 files
- **walkdir**: 6 files
- **percent-encoding**: 5 files
- **toml**: 5 files
- **blake3**: 4 files
- **bytes**: 4 files
- **reqwest-middleware**: 4 files
- **serde_repr**: 4 files
- **sqlparser**: 4 files
- **tar**: 4 files
- **toml_edit**: 4 files
- **arrow-buffer**: 3 files
- **arrow-cast**: 3 files
- **dunce**: 3 files
- **fancy-regex**: 3 files
- **getrandom**: 3 files
- **http**: 3 files
- **ignore**: 3 files
- **libc**: 3 files
- **open**: 3 files
- **similar**: 3 files
- **siphasher**: 3 files
- **tonic**: 3 files
- **aho-corasick**: 2 files
- **arrow-ipc**: 2 files
- **async-compression**: 2 files
- **aws-config**: 2 files
- **futures-util**: 2 files
- **glob**: 2 files
- **im**: 2 files
- **libloading**: 2 files
- **linked-hash-map**: 2 files
- **once_cell**: 2 files
- **pbjson-types**: 2 files
- **reqwest-retry**: 2 files
- **serde_yml**: 2 files
- **sha1**: 2 files
- **time**: 2 files
- **zstd-safe**: 2 files
- **arc-swap**: 1 file
- **arrow-json**: 1 file
- **bimap**: 1 file
- **bitflags**: 1 file
- **ciborium**: 1 file
- **crossbeam-skiplist**: 1 file
- **dotenvy**: 1 file
- **enum-map**: 1 file
- **erased-serde**: 1 file
- **futures-core**: 1 file
- **gix**: 1 file
- **home**: 1 file
- **ini**: 1 file
- **memo-map**: 1 file
- **mime_guess**: 1 file
- **notify**: 1 file
- **pkcs8**: 1 file
- **prost-types**: 1 file
- **rmp-serde**: 1 file
- **rsa**: 1 file
- **rustls**: 1 file
- **rustyline**: 1 file
- **self_cell**: 1 file
- **serde_derive**: 1 file
- **serde_json5**: 1 file
- **serde_qs**: 1 file
- **shellexpand**: 1 file
- **stacker**: 1 file
- **strsim**: 1 file
- **textwrap**: 1 file
- **tokio-util**: 1 file
- **unicase**: 1 file
- **unicode_categories**: 1 file
- **unicode-ident**: 1 file
- **unicode-segmentation**: 1 file
- **ustr**: 1 file
- **windows**: 1 file
- **windows-sys**: 1 file
- **z3**: 1 file

## Frontend (crates/dbt-docs-server/dbt-docs-lib)

### The base

- **[React](https://seerepo.com/uses/react)**: 96 files · [in crates/dbt-docs-server/web/package.json](https://github.com/dbt-labs/dbt/blob/d5578da86f9ff8546e981ba182cf1db836029c0d/crates/dbt-docs-server/web/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 5 files

### Styles

- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 31 files
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 5 files
- **@tailwindcss/forms**: 1 file
- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 1 file

### Interface

- **[xyflow](https://seerepo.com/uses/xyflow)**: 11 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 7 files
- **[react-hot-toast](https://seerepo.com/uses/react-hot-toast)**: 3 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 3 files
- **[@dagrejs/dagre](https://seerepo.com/uses/dagrejs-dagre)**: 1 file
- **[@uidotdev/usehooks](https://seerepo.com/uses/uidotdev-usehooks)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 44 files

## Support (crates/dbt-docs-server/dbt-docs-lib)

### Content

- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 3 files
- **rehype-external-links**: 3 files
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 3 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 3 files
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 9 files
- **Testing Library**: 3 files

### Other

- **Lodash**: 3 files
- **@tanstack/react-query**: 2 files
- **date-fns**: 2 files
- **clsx**: 1 file
- **date-fns-tz**: 1 file
- **zustand**: 1 file

## Frontend (crates/dbt-docs-server/web)

### The base

- **[React](https://seerepo.com/uses/react)**: 118 files · [in crates/dbt-docs-server/web/package.json](https://github.com/dbt-labs/dbt/blob/d5578da86f9ff8546e981ba182cf1db836029c0d/crates/dbt-docs-server/web/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 13 files
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in crates/dbt-docs-server/web/package.json](https://github.com/dbt-labs/dbt/blob/d5578da86f9ff8546e981ba182cf1db836029c0d/crates/dbt-docs-server/web/package.json)

### Styles

- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 29 files
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 5 files
- **@tailwindcss/forms**: 1 file
- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 1 file

### Interface

- **[TanStack](https://seerepo.com/uses/tanstack)**: 13 files
- **[xyflow](https://seerepo.com/uses/xyflow)**: 13 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 7 files
- **[react-helmet-async](https://seerepo.com/uses/react-helmet-async)**: 2 files
- **[react-hot-toast](https://seerepo.com/uses/react-hot-toast)**: 2 files
- **[@dagrejs/dagre](https://seerepo.com/uses/dagrejs-dagre)**: 1 file
- **[@uidotdev/usehooks](https://seerepo.com/uses/uidotdev-usehooks)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 48 files

## Backend (crates/dbt-docs-server/web)

### Data

- **[DuckDB](https://seerepo.com/uses/duckdb)**: 1 file

## Support (crates/dbt-docs-server/web)

### Content

- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 3 files
- **rehype-external-links**: 3 files
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 3 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 3 files
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 52 files
- **Testing Library**: 30 files

### Other

- **@bufbuild/protobuf**: 42 files
- **@tanstack/react-query**: 11 files
- **Lodash**: 3 files
- **date-fns**: 2 files
- **clsx**: 1 file
- **date-fns-tz**: 1 file
- **pretty-bytes**: 1 file
- **uuid**: 1 file
- **zustand**: 1 file

## Other repos with a similar stack

- [aaif-goose/goose](https://seerepo.com/r/aaif-goose/goose/built): axum, Tokio, React, Vite, console, indicatif, comfy-table, minijinja, zip, v_htmlescape, schemars, tracing, tracing-subscriber, OpenTelemetry, opentelemetry-otlp, tailwind-merge, class-variance-authority, Tailwind CSS, Radix UI, TanStack, Lucide, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/aaif-goose/goose/vs/dbt-labs/dbt)
- [BerriAI/litellm](https://seerepo.com/r/BerriAI/litellm/built): axum, aws-sdk-s3, rusqlite, SQLite, Redis, Tokio, React, jsonwebtoken, zip, schemars, tracing, tracing-subscriber, class-variance-authority, Tailwind CSS, Lucide, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/BerriAI/litellm/vs/dbt-labs/dbt)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): Redis, React, react-router-dom, Vite, tailwind-merge, class-variance-authority, Tailwind CSS, xyflow, Radix UI, Lucide, react-markdown, rehype-raw, remark-gfm · [Compare](https://seerepo.com/compare/dbt-labs/dbt/vs/langflow-ai/langflow)
- [farion1231/cc-switch](https://seerepo.com/r/farion1231/cc-switch/built): axum, rusqlite, SQLite, Tokio, React, Vite, zip, tailwind-merge, class-variance-authority, Tailwind CSS, Radix UI, Lucide, Zod · [Compare](https://seerepo.com/compare/dbt-labs/dbt/vs/farion1231/cc-switch)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Vite, class-variance-authority, Tailwind CSS, xyflow, Radix UI, @dagrejs/dagre, @uidotdev/usehooks, Lucide, react-markdown, remark-gfm, shiki, Zod · [Compare](https://seerepo.com/compare/dbt-labs/dbt/vs/supabase/supabase)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): aws-sdk-s3, Tokio, React, react-router-dom, Vite, tailwind-merge, class-variance-authority, Tailwind CSS, Radix UI, Lucide, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/dbt-labs/dbt/vs/paperclipai/paperclip)

## Frequently asked questions

### What language is dbt written in?

dbt is written in Rust, with 820,702 written lines.

### What framework does dbt use?

dbt is built with axum, Tokio, React, react-router-dom, and Vite.

### What database does dbt use?

dbt stores its data in arrow, datafusion, and SQLite.

### What does dbt sign people in with?

dbt signs people in with jsonwebtoken.

### What services does dbt use?

dbt uses aws-sdk-s3, rusqlite, Redis, and DuckDB.

### Does dbt have tests?

Yes. dbt has 300 test files and is tested with arbitrary, libfuzzer-sys, fake, Vitest, and Testing Library.

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

The ones that share most of its stack: aaif-goose/goose, BerriAI/litellm, and langflow-ai/langflow.

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