Skip to content

Commit 16e9903

Browse files
committed
Allow AML in free plan
1 parent 37f3c76 commit 16e9903

File tree

14 files changed

+1204
-34
lines changed

14 files changed

+1204
-34
lines changed

README.md

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,57 @@
2020
<a href="https://azimutt.app/slack" target="_blank"><img src="assets/slack-join.svg" alt="Join us on Slack" style="width: 216px; height: 54px;" width="216" height="54"></a>
2121
</p>
2222

23-
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.
23+
Azimutt is a **full-stack database exploration tool**.
24+
From modern ERD made for real world databases (big & messy), to fast data navigation, but also documentation everywhere and whole database analysis.
2425

2526
[![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)
2627

2728
**Why building Azimutt?**
2829

2930
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.
3031

31-
- **Database clients** focus on querying experience, with auto-completion and table/column lists but no visual help
32-
- **ERDs** have a great diagram UI but fall short when schema is growing (real-world use cases)
33-
- **Data catalogs** are focused on data governance and lineage for data teams, miss relational db for developers
32+
- **ERDs** have a great diagram UI, but fall short when schema is growing (real-world use cases)
33+
- **Data catalogs** are focused on data governance and lineage, missing relational db knowledge
34+
- **Database clients** focus on querying with auto-completion and table/column lists, but no visual help
3435

35-
So we decided to built it 💪
36+
So we decided to build the missing tool 💪
3637

37-
Azimutt started as a schema exploration tool for databases with hundreds of tables, but now it has grown a lot:
38+
We started with schema exploration for databases with hundreds of tables, but now, it has grown a lot:
3839

39-
- Design your schema using [AML](https://azimutt.app/aml) for a fast diagramming
40-
- Explore your database schema using search everywhere, display only useful tables/columns and follow relations
41-
- Query your data like never before, follow foreign keys and display entities in diagram
42-
- Document using table/column notes and tags and layouts and memos for use cases, features or team scopes
43-
- Analyze it to discover inconsistencies and best practices to apply
40+
- **Design** your schema using [AML](https://azimutt.app/aml) for a fast diagramming
41+
- **Explore** your schema using search everywhere, display only useful tables/columns and follow relations
42+
- **Query** your data like never before, follow foreign keys and display entities in diagram
43+
- **Document** using table/column notes and tags, layouts and memos for use cases, features or team scopes
44+
- **Analyze** it to discover inconsistencies and best practices to apply
4445

45-
Azimutt goal is to be your ultimate tool to understand your database.
46+
Azimutt goal is to be your **ultimate tool to understand your database**.
4647

47-
## Self hosted
48+
49+
## Azimutt badge
50+
51+
You can load any public SQL file in Azimutt with just an url parameter.
52+
So if you have a SQL file in your repo, like [structure.sql](./backend/priv/repo/structure.sql), you can add a button allowing your visitors to quickly explore it:
53+
54+
```markdown
55+
[![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)
56+
```
57+
58+
Here are some examples:
59+
60+
[![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)
61+
[![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)
62+
[![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)
63+
64+
Or use our custom button image:
65+
66+
[![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)
67+
68+
69+
## Self-hosted
4870

4971
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).
5072

73+
5174
## Deploy on Heroku
5275

5376
You can use our Heroku template which includes Azimutt web app, a Postgres database, Stackhero S3 storage and Mailgun.
@@ -70,16 +93,18 @@ heroku config:set S3_KEY_ID=$(heroku config:get S3_ROOT_ACCESS_KEY)
7093
heroku config:set S3_KEY_SECRET=$(heroku config:get S3_ROOT_SECRET_KEY)
7194
```
7295

73-
Finally you will need to create the `azimutt` bucket on Stackhero:
96+
Finally, you will need to create the `azimutt` bucket on Stackhero:
7497

7598
- connect to Stackhero from your Heroku dashboard
7699
- use values of `S3_ROOT_ACCESS_KEY` and `S3_ROOT_SECRET_KEY` to log in
77100
- create a bucket named `azimutt`
78101

102+
79103
## Deploy on Kubernetes
80104

81105
Please read this [guide](./charts/azimutt/README.md)
82106

107+
83108
## Local development
84109

85110
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).
@@ -101,6 +126,7 @@ Other things:
101126
- API documentation is accessible at [`/api/v1/swagger`](http://localhost:4000/api/v1/swagger)
102127
- You can use `pnpm --filter "azimutt-editor" run book` to start Elm design system & components, and access it with [localhost:4002](http://localhost:4002)
103128

129+
104130
### command semantics
105131

106132
We have a lot of projects with a lot of commands, here is how they are structured:
@@ -116,10 +142,12 @@ We have a lot of projects with a lot of commands, here is how they are structure
116142
- `build:docker` same as `build` but in the docker image (paths are different 😕)
117143
- `update` bumps library versions
118144

145+
119146
### Development commands
120147

121148
- `pnpm --filter "azimutt-editor" run book` to launch the Elm design system
122149

150+
123151
### Setup Stripe
124152

125153
#### Config
@@ -129,6 +157,7 @@ We have a lot of projects with a lot of commands, here is how they are structure
129157
- Copy your webhook signing secret to `STRIPE_WEBHOOK_SIGNING_SECRET` variable in your `.env` file (looks like `whsec_...`)
130158
- 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_...`)
131159

160+
132161
#### Payments
133162

134163
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.
@@ -138,13 +167,15 @@ Use any value you like for other form fields.
138167

139168
See more in the [stripe testing documentation](https://stripe.com/docs/testing)
140169

170+
141171
## Stack
142172

143173
- [Production](https://azimutt.app) & [Staging](https://azimutt.dev)
144174
- [Error logs](https://sentry.io/organizations/azimuttapp/issues/?project=6635088) with [Sentry](https://sentry.io)
145175
- Design using [TailwindCSS Framework](https://tailwindcss.com)
146176
- [Credo](http://credo-ci.org) for static code analysis (automatically run with pre-commit)
147177

178+
148179
## License
149180

150181
The tool is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

assets/azimutt-button.png

2.71 KB
Loading

backend/config/config.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ config :azimutt,
2828
azimutt_github_issues_new: "https://github.com/azimuttapp/azimutt/issues/new",
2929
environment: config_env(),
3030
# TODO: find an automated process to build it
31-
version: "2.1.9",
32-
version_date: "2024-10-06T00:00:00.000Z",
31+
version: "2.1.10",
32+
version_date: "2024-10-11T00:00:00.000Z",
3333
commit_hash: System.cmd("git", ["log", "-1", "--pretty=format:%h"]) |> elem(0) |> String.trim(),
3434
commit_message: System.cmd("git", ["log", "-1", "--pretty=format:%s"]) |> elem(0) |> String.trim(),
3535
commit_date: System.cmd("git", ["log", "-1", "--pretty=format:%aI"]) |> elem(0) |> String.trim(),

backend/lib/azimutt.ex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,14 @@ defmodule Azimutt do
103103
def active_plans, do: [plans().free, plans().solo, plans().team, plans().enterprise]
104104

105105
def features do
106+
# MUST stay in sync with frontend/src/Models/Feature.elm
106107
%{
107108
# Database features
108109
schema_exploration: %{name: "Schema exploration", free: true, solo: true, team: true, enterprise: true, pro: true},
109110
data_exploration: %{name: "Data exploration", free: true, solo: true, team: true, enterprise: true, pro: true},
110-
colors: %{name: "Custom colors", free: false, solo: true, team: true, enterprise: true, pro: true},
111111
# TODO: rename `aml` to `db_design`
112-
aml: %{name: "Database design (AML)", free: false, solo: true, team: true, enterprise: true, pro: true},
112+
aml: %{name: "Database design", free: 10, solo: nil, team: nil, enterprise: nil, pro: nil, description: "Allowed tables in AML"},
113+
colors: %{name: "Custom colors", free: false, solo: true, team: true, enterprise: true, pro: true},
113114
# saved_queries: %{name: "Saved queries", free: false, solo: false, team: false, enterprise: true, pro: true, description: "Soon... Save and share useful queries."},
114115
# dashboard: %{name: "Dashboard", free: false, solo: false, team: false, enterprise: true, pro: true, description: "Soon... Visually see query results."},
115116
# db_stat_history: %{name: "Stats history", free: false, solo: false, team: false, enterprise: true, pro: true, description: "Soon... Keep evolutions of database stats."},
@@ -150,7 +151,7 @@ defmodule Azimutt do
150151
def streak do
151152
[
152153
%{goal: 4, feature: :colors, limit: true},
153-
%{goal: 6, feature: :aml, limit: true},
154+
%{goal: 6, feature: :aml, limit: nil},
154155
%{goal: 10, feature: :ai, limit: true},
155156
%{goal: 15, feature: :project_layouts, limit: nil},
156157
%{goal: 25, feature: :schema_export, limit: true},

backend/lib/azimutt_web/templates/partials/_streak.html.heex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<%= render "_streak_step.html", step: 5, value: @value, color: "yellow", color_next: "red" %>
1717
<%= cond do %>
1818
<% @value <= 6 -> %>
19-
<%= render "_streak_step.html", step: 6, value: @value, color: "red", reward: %{icon: "📝", label: "Day 6: unlock DB design with AML"} %>
19+
<%= render "_streak_step.html", step: 6, value: @value, color: "red", reward: %{icon: "📝", label: "Day 6: unlock unlimited DB design with AML"} %>
2020
<% @value <= 10 -> %>
2121
<%= render "_streak_step.html", step: 10, value: @value, color: "red", reward: %{icon: "🪄", label: "Day 10: unlock AI features"} %>
2222
<% @value <= 15 -> %>

backend/lib/azimutt_web/templates/website/pricing.html.heex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
<% feature_categories = [%{name: "Database features", features: [
4444
Azimutt.features().schema_exploration,
4545
Azimutt.features().data_exploration,
46-
Azimutt.features().colors,
4746
Azimutt.features().aml,
47+
Azimutt.features().colors,
4848
Azimutt.features().schema_export,
4949
Azimutt.features().ai,
5050
Azimutt.features().analysis,

backend/mix.exs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ defmodule Azimutt.MixProject do
102102
setup: ["deps.get", "ecto.setup"],
103103
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
104104
"ecto.reset": ["ecto.drop", "ecto.setup"],
105+
# generate structure.sql on migration
106+
"db.migrate": ["ecto.migrate", "ecto.dump"],
107+
# generate structure.sql on rollback
108+
"db.rollback": ["ecto.rollback", "ecto.dump"],
105109
seeds: "run priv/repo/seeds.exs",
106110
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
107111
"assets.deploy": [

0 commit comments

Comments
 (0)