{"id":13393284,"url":"https://github.com/azimuttapp/azimutt","last_synced_at":"2025-05-13T21:10:04.270Z","repository":{"id":37430345,"uuid":"399045494","full_name":"azimuttapp/azimutt","owner":"azimuttapp","description":"Explore, document and optimize any database","archived":false,"fork":false,"pushed_at":"2025-03-26T14:19:33.000Z","size":88390,"stargazers_count":1868,"open_issues_count":76,"forks_count":107,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-05-10T13:41:34.295Z","etag":null,"topics":["couchbase","database","database-design","database-diagrams","database-documentation","database-schema","erd","mariadb","mongodb","mysql","oracle","postgresql","sql","sqlserver"],"latest_commit_sha":null,"homepage":"https://azimutt.app","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/azimuttapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-23T09:29:28.000Z","updated_at":"2025-05-08T16:47:21.000Z","dependencies_parsed_at":"2024-12-18T16:02:11.775Z","dependency_job_id":"a1d96887-1d27-4dd2-9778-9edfb03b506c","html_url":"https://github.com/azimuttapp/azimutt","commit_stats":{"total_commits":597,"total_committers":15,"mean_commits":39.8,"dds":0.3350083752093802,"last_synced_commit":"d68a0c5ad6ad63a243f3cd125023c12afca4dfe8"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azimuttapp%2Fazimutt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azimuttapp%2Fazimutt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azimuttapp%2Fazimutt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azimuttapp%2Fazimutt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/azimuttapp","download_url":"https://codeload.github.com/azimuttapp/azimutt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523746,"owners_count":21921821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["couchbase","database","database-design","database-diagrams","database-documentation","database-schema","erd","mariadb","mongodb","mysql","oracle","postgresql","sql","sqlserver"],"created_at":"2024-07-30T17:00:48.742Z","updated_at":"2025-05-13T21:09:59.232Z","avatar_url":"https://github.com/azimuttapp.png","language":"Elm","funding_links":[],"categories":["Program Modeling","Elm","sql","database","⚙️ Backend \u0026 APIs","Schema"],"sub_categories":["Diagrams"],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://azimutt.app\" target=\"_blank\" rel=\"noopener\"\u003e\n        \u003cpicture\u003e\n          \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/azimutt-logo-light.png\"\u003e\n          \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/azimutt-logo-dark.png\"\u003e\n          \u003cimg alt=\"Azimutt logo\" src=\"assets/azimutt-logo-dark.png\" width=\"400\"\u003e\n        \u003c/picture\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cb\u003eNext-Gen ERD\u003c/b\u003e: Design, Explore, Document and Analyze your database schema and data\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://azimutt.app\" target=\"_blank\" rel=\"noopener\"\u003eazimutt.app\u003c/a\u003e •\n    \u003ca href=\"https://github.com/orgs/azimuttapp/projects/5\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eroadmap\u003c/a\u003e •\n    \u003ca href=\"https://twitter.com/azimuttapp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e@azimuttapp\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt\" target=\"_blank\" rel=\"noopener\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-browse_online-gray?labelColor=4169E1\u0026logo=postgresql\u0026logoColor=fff\u0026style=flat\" alt=\"Explore database with Azimutt\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.producthunt.com/posts/azimutt?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-azimutt\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=390699\u0026theme=light\" alt=\"Azimutt - Easily explore and analyze your database with your team | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://azimutt.app/slack\" target=\"_blank\"\u003e\u003cimg src=\"assets/slack-join.svg\" alt=\"Join us on Slack\" style=\"width: 216px; height: 54px;\" width=\"216\" height=\"54\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nAzimutt is a **full-stack database exploration tool**.  \nFrom modern ERD made for real world databases (big \u0026 messy), to fast data navigation, but also documentation everywhere and whole database analysis.\n\n[![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)\n\n**Why building Azimutt?**\n\nDatabases existed for more than 40 years and despite a lot of tool around them, we couldn't find any providing a great exploration experience.\n\n- **ERDs** have a great diagram UI, but fall short when schema is growing (real-world use cases)\n- **Data catalogs** are focused on data governance and lineage, missing relational db knowledge\n- **Database clients** focus on querying with auto-completion and table/column lists, but no visual help\n\nSo we decided to build the missing tool 💪\n\nWe started with schema exploration for databases with hundreds of tables, but now, it has grown a lot:\n\n- **Design** your schema using [AML](https://azimutt.app/aml) for a fast diagramming\n- **Explore** your schema using search everywhere, display only useful tables/columns and follow relations\n- **Query** your data like never before, follow foreign keys and display entities in diagram\n- **Document** using table/column notes and tags, layouts and memos for use cases, features or team scopes\n- **Analyze** it to discover inconsistencies and best practices to apply\n\nAzimutt goal is to be your **ultimate tool to understand your database**.\n\n\n## Azimutt badge\n\nYou can load any public SQL file in Azimutt with just an url parameter.\nSo 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:\n\n```markdown\n[![Explore database with Azimutt](https://img.shields.io/badge/PostgreSQL-browse_online-gray?labelColor=4169E1\u0026logo=postgresql\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n```\n\nHere are some examples:\n\n[![Explore database with Azimutt](https://img.shields.io/badge/PostgreSQL-browse_online-gray?labelColor=4169E1\u0026logo=postgresql\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/MySQL-browse_online-gray?labelColor=4479A1\u0026logo=mysql\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/MariaDB-browse_online-gray?labelColor=003545\u0026logo=mariadb\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/Oracle-browse_online-gray?labelColor=F80000\u0026logo=oracle\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/SQL_Server-browse_online-gray?labelColor=0078D4\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/SQLite-browse_online-gray?labelColor=003B57\u0026logo=sqlite\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/MongoDB-browse_online-gray?labelColor=47A248\u0026logo=mongodb\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/Couchbase-browse_online-gray?labelColor=EA2328\u0026logo=couchbase\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/Snowflake-browse_online-gray?labelColor=29B5E8\u0026logo=snowflake\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/BigQuery-browse_online-gray?labelColor=669DF6\u0026logo=googlebigquery\u0026logoColor=fff\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n[![Explore database with Azimutt](https://img.shields.io/badge/Apache_Hive-browse_online-gray?labelColor=FDEE21\u0026logo=apachehive\u0026logoColor=000\u0026style=flat)](https://azimutt.app/create?sql=https://raw.githubusercontent.com/azimuttapp/azimutt/refs/heads/main/backend/priv/repo/structure.sql\u0026name=Azimutt)\n\nUse [Simple Icons](https://simpleicons.org) to find other icon/color if needed or use our custom button image:\n\n[![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\u0026name=Azimutt)\n\nMore details on [Azimutt documentation](https://azimutt.app/docs/badge)\n\n## Self-hosted\n\nYou can use our [Docker image](https://github.com/azimuttapp/azimutt/pkgs/container/azimutt) to easily deploy it. Here is the [full guide](INSTALL.md).\n\n\n## Deploy on Heroku\n\nYou can use our Heroku template which includes Azimutt web app, a Postgres database, Stackhero S3 storage and Mailgun.\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy)\n\nAfter succeed deployment, you will need to configure config vars\n\n```bash\n# Replace with your app-name\nHEROKU_APP=\u003capp-name\u003e\n\n# Set PHX_HOST with the URL of the app\nheroku config:set PHX_HOST=$(heroku info -s | grep \"web_url\" | sed 's|web_url=https://||; s|/$||')\n\n# Copy Stackhero access key to S3_KEY_ID\nheroku config:set S3_KEY_ID=$(heroku config:get S3_ROOT_ACCESS_KEY)\n\n# Copy Stackhero secret key to S3_KEY_SECRET\nheroku config:set S3_KEY_SECRET=$(heroku config:get S3_ROOT_SECRET_KEY)\n```\n\nFinally, you will need to create the `azimutt` bucket on Stackhero:\n\n- connect to Stackhero from your Heroku dashboard\n- use values of `S3_ROOT_ACCESS_KEY` and `S3_ROOT_SECRET_KEY` to log in\n- create a bucket named `azimutt`\n\n\n## Deploy on Kubernetes\n\nPlease read this [guide](./charts/azimutt/README.md)\n\n\n## Local development\n\nAzimutt is built with [Elixir](https://elixir-lang.org)/[Phoenix](https://www.phoenixframework.org) (backend \u0026 admin) and [Elm](https://elm-lang.org)/[elm-spa](https://www.elm-spa.dev) (editor).\n\nFor local development you will need to set up the environment:\n\n- install `pnpm`, [Elm](https://guide.elm-lang.org/install/elm.html) \u0026 [elm-spa](https://www.elm-spa.dev)\n- install [Phoenix](https://hexdocs.pm/phoenix/installation.html) and [Elixir](https://elixir-lang.org/install.html) if needed (use [asdf](https://asdf-vm.com))\n- 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)\n- install [pre-commit](https://pre-commit.com) and run `pre-commit install` before committing\n- copy `.env.example` to `.env` and adapt values\n- source your environment and install dependencies: `source .env \u0026\u0026 npm run setup`\n- you can now start the Azimutt server: `source .env \u0026\u0026 npm start`\n- and finally navigate to [localhost:4000](http://localhost:4000) 🎉\n- you can login with `admin@azimutt.app` email \u0026 `admin` password\n\nOther things:\n\n- API documentation is accessible at [`/api/v1/swagger`](http://localhost:4000/api/v1/swagger)\n- You can use `pnpm --filter \"azimutt-editor\" run book` to start Elm design system \u0026 components, and access it with [localhost:4002](http://localhost:4002)\n\n\n### command semantics\n\nWe have a lot of projects with a lot of commands, here is how they are structured:\n\n- each project has its own commands (mostly npm but also elixir), the root project has global commands to launch them using a prefix\n- `setup` is a one time command to install what is required\n- `install` download dependencies, should be run when new ones are added\n- `start` launch project in dev mode\n- `test` allows to run tests\n- `format` allows to run execute code formatting\n- `lint` allows to run execute linters\n- `build` generate compilation output\n- `build:docker` same as `build` but in the docker image (paths are different 😕)\n- `update` bumps library versions\n\n\n### Development commands\n\n- `pnpm --filter \"azimutt-editor\" run book` to launch the Elm design system\n\n\n### Setup Stripe\n\n#### Config\n\n- Install [Stripe CLI](https://stripe.com/docs/stripe-cli) and login with `stripe login`\n- Run `stripe listen --forward-to localhost:4000/webhook/stripe`\n- Copy your webhook signing secret to `STRIPE_WEBHOOK_SIGNING_SECRET` variable in your `.env` file (looks like `whsec_...`)\n- 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_...`)\n\n\n#### Payments\n\nWhen testing interactively, use a card number, such as `4242 4242 4242 4242`. Enter the card number in the Dashboard or in any payment form.\nUse a valid future date, such as `12/34`.\nUse any three-digit CVC like `123` (four digits for American Express cards).\nUse any value you like for other form fields.\n\nSee more in the [stripe testing documentation](https://stripe.com/docs/testing)\n\n\n## Stack\n\n- [Production](https://azimutt.app) \u0026 [Staging](https://azimutt.dev)\n- [Error logs](https://sentry.io/organizations/azimuttapp/issues/?project=6635088) with [Sentry](https://sentry.io)\n- Design using [TailwindCSS Framework](https://tailwindcss.com)\n- [Credo](http://credo-ci.org) for static code analysis (automatically run with pre-commit)\n\n\n## License\n\nThe tool is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazimuttapp%2Fazimutt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazimuttapp%2Fazimutt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazimuttapp%2Fazimutt/lists"}