Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azimuttapp/azimutt
Explore, document and optimize any database
https://github.com/azimuttapp/azimutt
couchbase database database-design database-diagrams database-documentation database-schema erd mariadb mongodb mysql oracle postgresql sql sqlserver
Last synced: about 11 hours ago
JSON representation
Explore, document and optimize any database
- Host: GitHub
- URL: https://github.com/azimuttapp/azimutt
- Owner: azimuttapp
- License: mit
- Created: 2021-08-23T09:29:28.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-10T18:03:02.000Z (10 days ago)
- Last Synced: 2025-02-13T03:41:23.609Z (7 days ago)
- Topics: couchbase, database, database-design, database-diagrams, database-documentation, database-schema, erd, mariadb, mongodb, mysql, oracle, postgresql, sql, sqlserver
- Language: Elm
- Homepage: https://azimutt.app
- Size: 84.3 MB
- Stars: 1,757
- Watchers: 8
- Forks: 100
- Open Issues: 73
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-ccamel - azimuttapp/azimutt - Explore, document and optimize any database (Elm)
- awesome-repositories - azimuttapp/azimutt - Explore, document and optimize any database (Elm)
README
Next-Gen ERD: Design, Explore, Document and Analyze your database schema and data
azimutt.app •
roadmap •
@azimuttapp
Azimutt is a **full-stack database exploration tool**.
From modern ERD made for real world databases (big & messy), to fast data navigation, but also documentation everywhere and whole database analysis.[![Azimutt screenshot](assets/azimutt-screenshot.png)](https://azimutt.app/45f571a6-d9b8-4752-8a13-93ac0d2b7984/c00d0c45-8db2-46b7-9b51-eba661640c3c?token=59166798-32de-4f46-a1b4-0f7327a91336)
**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.
- **ERDs** have a great diagram UI, but fall short when schema is growing (real-world use cases)
- **Data catalogs** are focused on data governance and lineage, missing relational db knowledge
- **Database clients** focus on querying with auto-completion and table/column lists, but no visual helpSo we decided to build the missing tool 💪
We started with schema exploration for databases with hundreds of tables, but now, it has grown a lot:
- **Design** your schema using [AML](https://azimutt.app/aml) for a fast diagramming
- **Explore** your schema using search everywhere, display only useful tables/columns and follow relations
- **Query** your data like never before, follow foreign keys and display entities in diagram
- **Document** using table/column notes and tags, layouts and memos for use cases, features or team scopes
- **Analyze** it to discover inconsistencies and best practices to applyAzimutt goal is to be your **ultimate tool to understand your database**.
## Azimutt badge
You can load any public SQL file in Azimutt with just an url parameter.
So if you have a SQL file in your repo, like [structure.sql](./backend/priv/repo/structure.sql), you can add a badge allowing your visitors to easily explore it:```markdown
[![Explore database with Azimutt](https://img.shields.io/badge/PostgreSQL-browse_online-gray?labelColor=4169E1&logo=postgresql&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
```Here are some examples:
[![Explore database with Azimutt](https://img.shields.io/badge/PostgreSQL-browse_online-gray?labelColor=4169E1&logo=postgresql&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/MySQL-browse_online-gray?labelColor=4479A1&logo=mysql&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/MariaDB-browse_online-gray?labelColor=003545&logo=mariadb&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/Oracle-browse_online-gray?labelColor=F80000&logo=oracle&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/SQL_Server-browse_online-gray?labelColor=0078D4&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/SQLite-browse_online-gray?labelColor=003B57&logo=sqlite&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/MongoDB-browse_online-gray?labelColor=47A248&logo=mongodb&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/Couchbase-browse_online-gray?labelColor=EA2328&logo=couchbase&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/Snowflake-browse_online-gray?labelColor=29B5E8&logo=snowflake&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/BigQuery-browse_online-gray?labelColor=669DF6&logo=googlebigquery&logoColor=fff&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
[![Explore database with Azimutt](https://img.shields.io/badge/Apache_Hive-browse_online-gray?labelColor=FDEE21&logo=apachehive&logoColor=000&style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)Use [Simple Icons](https://simpleicons.org) to find other icon/color if needed or use our custom button image:
[![Explore database with Azimutt](https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/assets/azimutt-button.png)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql&name=Azimutt)
More details on [Azimutt documentation](https://azimutt.app/docs/badge)
## Self-hosted
You can use our [Docker image](https://github.com/azimuttapp/azimutt/pkgs/container/azimutt) to easily deploy it. Here is the [full guide](INSTALL.md).
## Deploy on Heroku
You can use our Heroku template which includes Azimutt web app, a Postgres database, Stackhero S3 storage and Mailgun.
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy)
After succeed deployment, you will need to configure config vars
```bash
# Replace with your app-name
HEROKU_APP=# Set PHX_HOST with the URL of the app
heroku config:set PHX_HOST=$(heroku info -s | grep "web_url" | sed 's|web_url=https://||; s|/$||')# Copy Stackhero access key to S3_KEY_ID
heroku config:set S3_KEY_ID=$(heroku config:get S3_ROOT_ACCESS_KEY)# Copy Stackhero secret key to S3_KEY_SECRET
heroku config:set S3_KEY_SECRET=$(heroku config:get S3_ROOT_SECRET_KEY)
```Finally, you will need to create the `azimutt` bucket on Stackhero:
- connect to Stackhero from your Heroku dashboard
- use values of `S3_ROOT_ACCESS_KEY` and `S3_ROOT_SECRET_KEY` to log in
- create a bucket named `azimutt`## Deploy on Kubernetes
Please read this [guide](./charts/azimutt/README.md)
## Local development
Azimutt is built with [Elixir](https://elixir-lang.org)/[Phoenix](https://www.phoenixframework.org) (backend & admin) and [Elm](https://elm-lang.org)/[elm-spa](https://www.elm-spa.dev) (editor).
For local development you will need to set up the environment:
- install `pnpm`, [Elm](https://guide.elm-lang.org/install/elm.html) & [elm-spa](https://www.elm-spa.dev)
- install [Phoenix](https://hexdocs.pm/phoenix/installation.html) and [Elixir](https://elixir-lang.org/install.html) if needed (use [asdf](https://asdf-vm.com))
- install [PostgreSQL](https://www.postgresql.org/download), create a user `postgres` with password `postgres` and a database `azimutt_dev` (see `DATABASE_URL` in `.env` later)
- install [pre-commit](https://pre-commit.com) and run `pre-commit install` before committing
- copy `.env.example` to `.env` and adapt values
- source your environment and install dependencies: `source .env && npm run setup`
- you can now start the Azimutt server: `source .env && npm start`
- and finally navigate to [localhost:4000](http://localhost:4000) 🎉
- you can login with `[email protected]` email & `admin` passwordOther things:
- API documentation is accessible at [`/api/v1/swagger`](http://localhost:4000/api/v1/swagger)
- You can use `pnpm --filter "azimutt-editor" run book` to start Elm design system & components, and access it with [localhost:4002](http://localhost:4002)### command semantics
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
- `setup` is a one time command to install what is required
- `install` download dependencies, should be run when new ones are added
- `start` launch project in dev mode
- `test` allows to run tests
- `format` allows to run execute code formatting
- `lint` allows to run execute linters
- `build` generate compilation output
- `build:docker` same as `build` but in the docker image (paths are different 😕)
- `update` bumps library versions### Development commands
- `pnpm --filter "azimutt-editor" run book` to launch the Elm design system
### Setup Stripe
#### Config
- Install [Stripe CLI](https://stripe.com/docs/stripe-cli) and login with `stripe login`
- Run `stripe listen --forward-to localhost:4000/webhook/stripe`
- Copy your webhook signing secret to `STRIPE_WEBHOOK_SIGNING_SECRET` variable in your `.env` file (looks like `whsec_...`)
- Go to [your Stripe dashboard](https://dashboard.stripe.com/test/apikeys) to obtain your API Key and copy it into `STRIPE_API_KEY` in your `.env` file (looks like: `sk_test_...`)#### Payments
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](https://stripe.com/docs/testing)
## Stack
- [Production](https://azimutt.app) & [Staging](https://azimutt.dev)
- [Error logs](https://sentry.io/organizations/azimuttapp/issues/?project=6635088) with [Sentry](https://sentry.io)
- Design using [TailwindCSS Framework](https://tailwindcss.com)
- [Credo](http://credo-ci.org) for static code analysis (automatically run with pre-commit)## License
The tool is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).