Next-Gen ERD: Design, Explore, Document and Analyze your database
azimutt.app • roadmap • @azimuttapp
Azimutt is an Entity Relationship Diagram (ERD) targeting real world database schema (big & messy).
Why building Azimutt?
Databases existed for more than 40 years and despite a lot of tool around them, we couldn't find any providing a great exploration experience.
- Database clients focus on querying experience, with auto-completion and table/column lists but no visual help
- ERDs have a great diagram UI but fall short when schema is growing (real-world use cases)
- Data catalogs are primarily focused on data governance and lineage on big data sector
So we decided to built it 💪
Azimutt started as a schema exploration tool for databases with hundreds of tables, but now it has grown a lot:
- Design your schema using AML for a fast diagramming
- Explore your database using search everywhere, display only useful tables/columns and follow relations
- Document it with layouts for use cases, features or team scopes and table/column notes
- Analyze it to discover inconsistencies and best practices
Azimutt goal is to be your ultimate tool to understand your database.
Azimutt is built with Elm/elm-spa (editor) and Elixir/Phoenix (backend & admin).
For local development you will need to set up the environment:
- install
npm, Elm & elm-spa - install Phoenix and Elixir if needed
- install PostgreSQL with a user
postgresand passwordpostgres - install pre-commit and run
pre-commit installbefore committing - run
npm run setupto install dependencies and configure your environment
Then you can choose to launch either:
npm run ex:devfor Elixir server (frontend will still be available through compiled files)npm run elm:devfor Elm/TypeScript frontend (useful when do develop on front)npm run devfor both with live reload
Now you can visit :
localhost:4000for the main applocalhost:4000/api/v1/swaggerfor the Swagger documentation
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, MAILGUN_DOMAIN, MAILGUN_API_KEY, STRIPE_API_KEY, STRIPE_WEBHOOK_SIGNING_SECRET.
We have a lot of projects with a lot of commands, here is how they are structured:
- each project has its own commands (mostly npm but also elixir), the root project has global commands to launch them using a prefix
setupis a one time command to install what is requiredinstalldownload dependencies, should be run when new ones are addedstartlaunch project in dev modetestallows to run testsformatallows to run execute code formattinglintallows to run execute lintersbuildgenerate compilation outputdockersame asbuildbut in the docker image (paths are different 😕)updatebumps library versions
Prefixes in front of the command in root folder:
libs:run the command for every library inlibsfolderex:meaning elixir, it targets the backend (mostly runningmixcommands)fe:meaning frontend, target the frontend project with Elm, TypeScript & Tailwindelm:targets only Elm in the frontend projectts:targets only TypeScript in the frontend projectcli:run the command for thecliprojectdesktop:run the command for thedesktopprojectbe:meaning browser extension run the command for thebrowser-extensionproject
And then "special" commands:
elm:book: launch elm-book, the design system for Elm
npm run elm:bookto launch the Elm design system
- Install Stripe CLI and login with
stripe login - Run
stripe listen --forward-to localhost:4000/webhook/stripe - Copy your webhook signing secret to your
.env, it's look like (whsec_XXX) - Go to your Stripe dashboard to obtain your API Key and copy it into
STRIPE_API_KEYin your.envfile.
When testing interactively, use a card number, such as 4242 4242 4242 4242. Enter the card number in the Dashboard or in any payment form.
Use a valid future date, such as 12/34.
Use any three-digit CVC like 123 (four digits for American Express cards).
Use any value you like for other form fields.
See more in the stripe testing documentation
- Production & Staging
- Error logs with Sentry
- Design using TailwindCSS Framework
- Credo for static code analysis (automatically run with pre-commit)
The tool is available as open source under the terms of the MIT License.

