Alternative dbt docs site: Catalog + ERD + column-level lineage
Project description
An alternative dbt docs site — catalog + ERD + column-level lineage + versioned deploys, all in one CLI.
Turn your dbt artifacts into a self-contained docs site: a browsable catalog, an entity-relationship diagram, an interactive lineage DAG, and column-level lineage traced from your compiled SQL — all in one dbdocs generate. Serve it with dbdocs serve, or deploy versioned builds anywhere a static host will take them.
| Catalog | Model page | Lineage DAG | Health Check |
|---|---|---|---|
Why dbdocs?
dbt's built-in docs are great — right up until you want to know which upstream column fed this downstream column, or which tables relate to each other, or what changed between last week's docs and today's. dbdocs fills all three gaps without asking you to install a documentation framework or maintain a separate ERD tool.
What you get that nothing else bundles together:
- ERD + column-level lineage, side by side. The entity-relationship diagram (powered by dbterd) shows table relationships; column lineage (traced by sqlglot from compiled SQL) shows exactly which column fed which. Most alternatives give you one or the other — dbdocs gives you both.
- Column impact analysis. Select any column and see its downstream dependents across the project, so you know what a schema change will break before you run it.
- Deep-link URLs. Every focused node, column, and filtered DAG view has a shareable URL. Paste it in Slack and your teammate lands on exactly the right model, column, or graph state.
- Any sqlglot-supported dialect. The dialect for column-lineage parsing is auto-detected from your manifest's
adapter_type(Snowflake, BigQuery, Redshift, DuckDB, PostgreSQL, Databricks/Spark, Trino, and more — anything sqlglot understands). Override it per-project withdialect:indbdocs.ymlwhen auto-detection isn't enough. - Scales without freezing. Column-lineage parsing fans out across CPU cores automatically above 500 models, so large projects finish in roughly the same wall-clock time as small ones. The DAG is windowed by React Flow, so a 1 000-model graph doesn't turn your browser into a space heater. The payload ships as an external gzip (
dbdocs-data.json.gz, decompressed client-side) soindex.htmlstays tiny regardless of project size. - Fail-soft. One model with SQL sqlglot can't parse gets skipped and logged — it never sinks the whole generate run.
- Project Health Check. A scorecard across the six dbt-project-evaluator dimensions (testing, modeling, documentation, structure, performance, governance), computed straight from your
manifest.json— no extra dbt package, no warehouse. When arun_results.jsonis also present (anydbt build/dbt test; default<target_dir>/run_results.json, override with--run-results), each test additionally shows up as a pass/fail finding grouped by what it checks (integrity, referential, validity, business logic, freshness). dbdocs only reads the artifacts — it never runs dbt or touches your warehouse. Fail-soft: a missingrun_results.jsonjust drops the per-test detail; the dimensions still render. - Versioned deploys, no plugins.
dbdocs deploy --version v1.2 --alias latestgenerates into a plain directory tree, writes aversions.jsonindex, and the SPA renders a version dropdown. No mike, no external tooling, no surprise dependencies. - Catalog navigation + client-side search. Models, seeds, and snapshots grouped by database and schema; full-text search without a backend.
- Dark / light theme.
Install
pip install dbdocs --upgrade
Requires Python 3.10+.
Quickstart
dbt docs generate # writes target/manifest.json + target/catalog.json
dbdocs generate # builds ./site/ with index.html + dbdocs-data.json.gz
dbdocs serve # static http server on http://127.0.0.1:8000
The site must be served over HTTP (not opened as a local file) because it fetches the data payload at load time. dbdocs serve handles that locally; any static host works for deployment.
Full walkthrough, configuration, and architecture live in the documentation.
Contributing
Contributions are welcome — bugs, features, docs, typos. See the Contributing Guide.
If dbdocs saves you some clicks, consider buying me a coffee.
License
MIT © Dat Nguyen
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbdocs-1.2.0.tar.gz.
File metadata
- Download URL: dbdocs-1.2.0.tar.gz
- Upload date:
- Size: 207.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31345c8317551b07eaa14b1ddc3f4c0c59bbaf5867a5b29723801510c537db9b
|
|
| MD5 |
06ef923893fbc190e5811e2328122aab
|
|
| BLAKE2b-256 |
408c8e8385be33ebcefee82163ee4cbb3d59fe05ab61e1aaa490b8b363d8d5cb
|
Provenance
The following attestation bundles were made for dbdocs-1.2.0.tar.gz:
Publisher:
pypi-publish.yml on datnguye/dbt-docs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbdocs-1.2.0.tar.gz -
Subject digest:
31345c8317551b07eaa14b1ddc3f4c0c59bbaf5867a5b29723801510c537db9b - Sigstore transparency entry: 1808311904
- Sigstore integration time:
-
Permalink:
datnguye/dbt-docs@27a82b85218ad14e095128a3ce56f3938163fc08 -
Branch / Tag:
refs/tags/1.2.0 - Owner: https://github.com/datnguye
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@27a82b85218ad14e095128a3ce56f3938163fc08 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dbdocs-1.2.0-py3-none-any.whl.
File metadata
- Download URL: dbdocs-1.2.0-py3-none-any.whl
- Upload date:
- Size: 225.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67e2b07795f2850c406ddefca80c133e2e676f47e3ff26c27180e6ac6135af54
|
|
| MD5 |
01e47b4342c40d7cc5496751f9e50a94
|
|
| BLAKE2b-256 |
33f9418a924a2a7bc4005e6f3757d061c9c8590fc7a7a10efc26041699136e3f
|
Provenance
The following attestation bundles were made for dbdocs-1.2.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on datnguye/dbt-docs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbdocs-1.2.0-py3-none-any.whl -
Subject digest:
67e2b07795f2850c406ddefca80c133e2e676f47e3ff26c27180e6ac6135af54 - Sigstore transparency entry: 1808311945
- Sigstore integration time:
-
Permalink:
datnguye/dbt-docs@27a82b85218ad14e095128a3ce56f3938163fc08 -
Branch / Tag:
refs/tags/1.2.0 - Owner: https://github.com/datnguye
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@27a82b85218ad14e095128a3ce56f3938163fc08 -
Trigger Event:
push
-
Statement type: