An Entity Relationship diagram (ERD) visualization tool, with various filters and inputs to help understand your SQL schema.
Why building my own ?
Most ERD tool I looked into (DrawSQL, dbdiagram.io , Lucidchart, ERDPlus , Creately, SqlDBM , QuickDBD) are focusing on creating/editing the schema (collaboratively) and displaying it (statically). This is nice when starting a new project with a few tables but doesn't really help when you discover an existing one with hundreds of tables and relations.
I really miss an interactive exploration tool with features like:
- filter/show/hide some tables
- filter/show/hide some columns
- search for tables, columns or even in metadata
- tag tables and columns to define meaningful groups (team ownership, domain exploration...)
- rich UI infos with:
- source links (schema file but also app models)
- database statistics (table size, column value samples)
- team/code ownership (git blame or specific format)
- tables/columns updates (from migrations files or schema file history)
For me, this tool is the missing piece between a classic ERD tool and a Data catalog:
Azimutt is a Single Page Application built with Elm that parse and explore your database schema.
First launch:
- install
npm
, Elm & elm-spa - run
npm install
to download npm dependencies - run
elm-spa server
to generate needed files (.elm-spa/defaults
&.elm-spa/generated
)
Dev commands:
- launch dev server:
elm-spa server
orelm-live .elm-spa/defaults/Main.elm --dir=public --pushstate -- --output=public/dist/elm.js
(needsnpm install -g elm-live
or usenpx
) - launch design system:
elm-book src/Components/Book.elm --dir=public --start-page=book.html --port 8001 -- --output=public/dist/book.js
(needsnpm install -g elm-book
or usenpx
) - launch the tests:
elm-test
(needsnpm install -g elm-test
or usenpx
) - run linter:
elm-review
(needsnpm install -g elm-review
or usenpx
) - check format:
elm-format src tests --validate
(needsnpm install -g elm-format
or usenpx
) - run coverage:
elm-coverage --open
(needsnpm install -g elm-coverage
) (doesn't work with elm-spa) - install deps
elm-json install author/package
(needsnpm install --g elm-json
) - uninstall deps
elm-json uninstall author/package
- update deps
elm-json upgrade
(use--unsafe
flag for major versions)
If elm-spa
don't display a relevant error, try using elm-live
instead or compile with elm-make
: elm make .elm-spa/defaults/Main.elm
.
Elm folders are src
for sources, tests
for tests and public
for static assets.
When developing, please enable git hooks on your machine using: git config --local core.hooksPath .githooks
The tool is available as open source under the terms of the MIT License.