@itsthecsguy/linework 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -12
- package/dist/api.js +39 -2
- package/dist/cli.js +13 -0
- package/dist/drawio/theme.js +39 -34
- package/dist/lint/check.js +4 -0
- package/dist/render/browser.js +29 -3
- package/package.json +1 -1
- package/skills/linework/SKILL.md +41 -22
- package/skills/linework/examples/checkout.yaml +4 -4
- package/skills/linework/examples/pay-sequence.yaml +2 -2
- package/skills/linework/examples/refund-flow.yaml +1 -1
- package/skills/linework/references/google-docs.md +5 -5
- package/skills/linework/references/spec.md +4 -4
- package/skills/linework/examples/billing-er.drawio.svg +0 -4
- package/skills/linework/examples/checkout.drawio.svg +0 -4
- package/skills/linework/examples/pay-sequence.drawio.svg +0 -4
- package/skills/linework/examples/payment-state.drawio.svg +0 -4
- package/skills/linework/examples/refund-flow.drawio.svg +0 -4
- package/skills/linework/examples/serverless-aws.drawio.svg +0 -4
|
@@ -14,7 +14,7 @@ The add-on renders diagrams through draw.io's export service at convert.diagrams
|
|
|
14
14
|
## Put a diagram in a doc
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
linework publish docs/diagrams/checkout.drawio.svg
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
This copies the file to `My Drive/linework/<project>/docs/diagrams/checkout.drawio.svg`. `<project>` is the git repository's folder name. With several Google accounts, or to use another synced folder, pass `--to <folder>`.
|
|
@@ -24,8 +24,8 @@ Then, in the doc: Extensions > draw.io > Insert diagrams, and pick the file. If
|
|
|
24
24
|
## After the diagram changes
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
linework build spec.yaml -o docs/diagrams/checkout.drawio.svg # or a hand edit in draw.io
|
|
28
|
+
linework publish docs/diagrams/checkout.drawio.svg
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Give Drive a few seconds to sync. Then, in the doc: Extensions > draw.io > Update diagrams. Every image whose file changed refreshes in place.
|
|
@@ -35,7 +35,7 @@ Give Drive a few seconds to sync. Then, in the doc: Extensions > draw.io > Updat
|
|
|
35
35
|
Select the diagram and choose Extensions > draw.io > Edit selected. draw.io opens the Drive file, and saving writes it back to Drive. The repo copy is now behind. Bring the edit back with:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
38
|
+
linework publish --pull docs/diagrams/checkout.drawio.svg
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
`publish` refuses to overwrite a Drive copy that someone edited after the last publish. It says so, and you choose `--pull` to take their version or `--force` to replace it.
|
|
@@ -43,4 +43,4 @@ npx -y @itsthecsguy/linework publish --pull docs/diagrams/checkout.drawio.svg
|
|
|
43
43
|
## Without Drive for desktop
|
|
44
44
|
|
|
45
45
|
- Upload the `.drawio.svg` at drive.google.com and insert it with the add-on as above. To update it later, use the file's Manage versions > Upload new version in Drive. Uploading it again as a new file breaks the link to the doc.
|
|
46
|
-
- Or skip the add-on: `
|
|
46
|
+
- Or skip the add-on: `linework render docs/diagrams/checkout.drawio.svg -o checkout.png --scale 2`, insert the PNG, and put a link to the source file under it. You'll replace the image by hand when it changes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Linework spec reference
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`linework schema` prints the full JSON Schema.
|
|
4
4
|
|
|
5
5
|
## Top level
|
|
6
6
|
|
|
@@ -40,9 +40,9 @@ nodes:
|
|
|
40
40
|
| `clean` | white boxes with hairline borders, groups drawn as gray grounds, cobalt accent. Nodes are neutral unless the kind means something (error, success). | IBM Plex Sans |
|
|
41
41
|
| `soft` | borderless pastel cards, each kind its own tint | IBM Plex Sans |
|
|
42
42
|
| `dark` | `clean` in GitHub's dark colors, so it sits flush on a dark README | IBM Plex Sans |
|
|
43
|
-
| `sketch` | hand-drawn strokes, pastel fills,
|
|
44
|
-
| `blueprint` |
|
|
45
|
-
| `c4` | C4
|
|
43
|
+
| `sketch` | hand-drawn strokes, pastel fills, blue accent | Kalam (handwriting) |
|
|
44
|
+
| `blueprint` | blue ink on pale drafting paper, drafting capitals for group titles | IBM Plex Mono |
|
|
45
|
+
| `c4` | C4's colors (dark person, blue containers, gray external systems) in quiet tones; each box says its element type | IBM Plex Sans |
|
|
46
46
|
|
|
47
47
|
The "drawn as" columns below describe `soft`. In `clean`, `dark` and `blueprint`, kinds differ by shape and dash only, and color comes from `highlight`, `color` and the error/success kinds.
|
|
48
48
|
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" style="background: #FFFFFF; background-color: light-dark(#FFFFFF, #121212);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="886px" height="358px" viewBox="0 0 886 358" content="<mxfile host="aiviz" agent="aiviz"><diagram id="aiviz" name="Billing schema"><mxGraphModel grid="1" gridSize="8" guides="1" tooltips="1" connect="1" arrows="1" page="0" background="#FFFFFF" math="0" shadow="0"><root><object id="0" label="" aiviz_version="1" aiviz_type="er" aiviz_direction="auto" aiviz_title="Billing schema"><mxCell/></object><mxCell id="1" parent="0"/><object id="orgs" label="organizations" aiviz_kind="entity" aiviz_label="organizations" aiviz_auto="708,120,160,116"><mxCell style="shape=swimlane;childLayout=stackLayout;horizontal=1;startSize=32;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;rounded=1;absoluteArcSize=1;arcSize=12;swimlaneFillColor=#FFFFFF;fontStyle=1;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="708" y="120" width="160" height="116" as="geometry"/></mxCell></object><object id="users" label="Users" aiviz_kind="entity" aiviz_label="Users" aiviz_auto="364,16,184,142"><mxCell style="shape=swimlane;childLayout=stackLayout;horizontal=1;startSize=32;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;rounded=1;absoluteArcSize=1;arcSize=12;swimlaneFillColor=#FFFFFF;fontStyle=1;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="364" y="16" width="184" height="142" as="geometry"/></mxCell></object><object id="subscriptions" label="Subscriptions" aiviz_kind="entity" aiviz_label="Subscriptions" aiviz_auto="372,198,168,142"><mxCell style="shape=swimlane;childLayout=stackLayout;horizontal=1;startSize=32;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;rounded=1;absoluteArcSize=1;arcSize=12;swimlaneFillColor=#FFFFFF;fontStyle=1;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="372" y="198" width="168" height="142" as="geometry"/></mxCell></object><object id="invoices" label="Invoices" aiviz_kind="entity" aiviz_label="Invoices" aiviz_auto="16,198,192,142"><mxCell style="shape=swimlane;childLayout=stackLayout;horizontal=1;startSize=32;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;rounded=1;absoluteArcSize=1;arcSize=12;swimlaneFillColor=#FFFFFF;fontStyle=1;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="16" y="198" width="192" height="142" as="geometry"/></mxCell></object><object id="orgs__id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;&lt;b&gt;id&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid PK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="id" aiviz_ftype="uuid" aiviz_flags="pk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="orgs"><mxGeometry x="0" y="32" width="160" height="26" as="geometry"/></mxCell></object><object id="orgs__name" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;name&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;text&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="name" aiviz_ftype="text"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="orgs"><mxGeometry x="0" y="58" width="160" height="26" as="geometry"/></mxCell></object><object id="orgs__plan" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;plan&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;text&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="plan" aiviz_ftype="text"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="orgs"><mxGeometry x="0" y="84" width="160" height="26" as="geometry"/></mxCell></object><object id="users__id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;&lt;b&gt;id&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid PK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="id" aiviz_ftype="uuid" aiviz_flags="pk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="users"><mxGeometry x="0" y="32" width="184" height="26" as="geometry"/></mxCell></object><object id="users__org_id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;org_id&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid FK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="org_id" aiviz_ftype="uuid" aiviz_flags="fk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="users"><mxGeometry x="0" y="58" width="184" height="26" as="geometry"/></mxCell></object><object id="users__email" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;email&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;text unique&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="email" aiviz_ftype="text" aiviz_flags="unique"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="users"><mxGeometry x="0" y="84" width="184" height="26" as="geometry"/></mxCell></object><object id="users__created_at" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;created_at&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;timestamptz&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="created_at" aiviz_ftype="timestamptz"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="users"><mxGeometry x="0" y="110" width="184" height="26" as="geometry"/></mxCell></object><object id="subscriptions__id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;&lt;b&gt;id&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid PK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="id" aiviz_ftype="uuid" aiviz_flags="pk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="subscriptions"><mxGeometry x="0" y="32" width="168" height="26" as="geometry"/></mxCell></object><object id="subscriptions__org_id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;org_id&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid FK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="org_id" aiviz_ftype="uuid" aiviz_flags="fk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="subscriptions"><mxGeometry x="0" y="58" width="168" height="26" as="geometry"/></mxCell></object><object id="subscriptions__stripe_id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;stripe_id&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;text unique&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="stripe_id" aiviz_ftype="text" aiviz_flags="unique"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="subscriptions"><mxGeometry x="0" y="84" width="168" height="26" as="geometry"/></mxCell></object><object id="subscriptions__status" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;status&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;text&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="status" aiviz_ftype="text"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="subscriptions"><mxGeometry x="0" y="110" width="168" height="26" as="geometry"/></mxCell></object><object id="invoices__id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;&lt;b&gt;id&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid PK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="id" aiviz_ftype="uuid" aiviz_flags="pk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="invoices"><mxGeometry x="0" y="32" width="192" height="26" as="geometry"/></mxCell></object><object id="invoices__subscription_id" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;subscription_id&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;uuid FK&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="subscription_id" aiviz_ftype="uuid" aiviz_flags="fk"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="invoices"><mxGeometry x="0" y="58" width="192" height="26" as="geometry"/></mxCell></object><object id="invoices__amount_cents" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;amount_cents&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;int&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="amount_cents" aiviz_ftype="int"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="invoices"><mxGeometry x="0" y="84" width="192" height="26" as="geometry"/></mxCell></object><object id="invoices__paid_at" label="&lt;table style=&quot;width:100%;height:100%;border-collapse:collapse&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding:0 6px 0 12px&quot;&gt;paid_at&lt;/td&gt;&lt;td style=&quot;text-align:right;padding:0 12px 0 6px;color:#64748B&quot;&gt;timestamptz null&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" aiviz_field="paid_at" aiviz_ftype="timestamptz" aiviz_flags="null"><mxCell style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=10;spacingRight=10;overflow=fill;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=12;fontColor=#0F172A;" vertex="1" parent="invoices"><mxGeometry x="0" y="110" width="192" height="26" as="geometry"/></mxCell></object><object id="e_users__orgs" label="belongs to" aiviz_edge="users-&gt;orgs" aiviz_auto="680,87 680,159"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;startArrow=ERzeroToMany;endArrow=ERmandOne;startFill=0;endFill=0;startSize=10;endSize=10;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.333;entryDx=0;entryDy=0;" edge="1" parent="1" source="users" target="orgs"><mxGeometry x="-0.309" relative="1" as="geometry"><Array as="points"><mxPoint x="680" y="87"/><mxPoint x="680" y="159"/></Array></mxGeometry></mxCell></object><object id="e_subscriptions__orgs" label="billed to" aiviz_edge="subscriptions-&gt;orgs" aiviz_auto="680,269 680,197"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;startArrow=ERzeroToMany;endArrow=ERmandOne;startFill=0;endFill=0;startSize=10;endSize=10;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.667;entryDx=0;entryDy=0;" edge="1" parent="1" source="subscriptions" target="orgs"><mxGeometry x="-0.266" relative="1" as="geometry"><Array as="points"><mxPoint x="680" y="269"/><mxPoint x="680" y="197"/></Array></mxGeometry></mxCell></object><object id="e_invoices__subscriptions" label="issued for" aiviz_edge="invoices-&gt;subscriptions" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;startArrow=ERzeroToMany;endArrow=ERmandOne;startFill=0;endFill=0;startSize=10;endSize=10;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="invoices" target="subscriptions"><mxGeometry x="-0.049" relative="1" as="geometry"/></mxCell></object></root></mxGraphModel></diagram></mxfile>"><defs/><rect fill="#FFFFFF" width="100%" height="100%" x="0" y="0" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="orgs"><g><path d="M 868 152 L 868 126 Q 868 120 862 120 L 714 120 Q 708 120 708 126 L 708 152" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 708 152 L 708 230 Q 708 236 714 236 L 862 236 Q 868 236 868 230 L 868 152" fill="#ffffff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 708 152 L 868 152" fill="none" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 136px; margin-left: 709px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">organizations</div></div></div></foreignObject><text x="788" y="140" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" font-weight="bold" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">organizations</text></switch></g></g><g data-cell-id="orgs__id"><g><rect x="708" y="152" width="160" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 26px; padding-top: 152px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 160px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px"><b>id</b></td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid PK</td></tr></tbody></table></div></div></div></foreignObject><text x="708" y="169" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">iduuid PK</text></switch></g></g></g><g data-cell-id="orgs__name"><g><rect x="708" y="178" width="160" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 26px; padding-top: 178px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 160px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">name</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">text</td></tr></tbody></table></div></div></div></foreignObject><text x="708" y="195" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">nametext</text></switch></g></g></g><g data-cell-id="orgs__plan"><g><rect x="708" y="204" width="160" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 26px; padding-top: 204px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 160px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">plan</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">text</td></tr></tbody></table></div></div></div></foreignObject><text x="708" y="221" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">plantext</text></switch></g></g></g></g><g data-cell-id="users"><g><path d="M 548 48 L 548 22 Q 548 16 542 16 L 370 16 Q 364 16 364 22 L 364 48" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 364 48 L 364 152 Q 364 158 370 158 L 542 158 Q 548 158 548 152 L 548 48" fill="#ffffff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 364 48 L 548 48" fill="none" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 182px; height: 1px; padding-top: 32px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Users</div></div></div></foreignObject><text x="456" y="36" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" font-weight="bold" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">Users</text></switch></g></g><g data-cell-id="users__id"><g><rect x="364" y="48" width="184" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 186px; height: 26px; padding-top: 48px; margin-left: 364px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 184px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px"><b>id</b></td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid PK</td></tr></tbody></table></div></div></div></foreignObject><text x="364" y="65" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">iduuid PK</text></switch></g></g></g><g data-cell-id="users__org_id"><g><rect x="364" y="74" width="184" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 186px; height: 26px; padding-top: 74px; margin-left: 364px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 184px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">org_id</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid FK</td></tr></tbody></table></div></div></div></foreignObject><text x="364" y="91" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">org_iduuid FK</text></switch></g></g></g><g data-cell-id="users__email"><g><rect x="364" y="100" width="184" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 186px; height: 26px; padding-top: 100px; margin-left: 364px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 184px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">email</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">text unique</td></tr></tbody></table></div></div></div></foreignObject><text x="364" y="117" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">emailtext unique</text></switch></g></g></g><g data-cell-id="users__created_at"><g><rect x="364" y="126" width="184" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 186px; height: 26px; padding-top: 126px; margin-left: 364px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 184px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">created_at</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">timestamptz</td></tr></tbody></table></div></div></div></foreignObject><text x="364" y="143" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">created_attimestamptz</text></switch></g></g></g></g><g data-cell-id="subscriptions"><g><path d="M 540 230 L 540 204 Q 540 198 534 198 L 378 198 Q 372 198 372 204 L 372 230" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 372 230 L 372 334 Q 372 340 378 340 L 534 340 Q 540 340 540 334 L 540 230" fill="#ffffff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 372 230 L 540 230" fill="none" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 166px; height: 1px; padding-top: 214px; margin-left: 373px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Subscriptions</div></div></div></foreignObject><text x="456" y="218" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" font-weight="bold" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">Subscriptions</text></switch></g></g><g data-cell-id="subscriptions__id"><g><rect x="372" y="230" width="168" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 170px; height: 26px; padding-top: 230px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 168px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px"><b>id</b></td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid PK</td></tr></tbody></table></div></div></div></foreignObject><text x="372" y="247" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">iduuid PK</text></switch></g></g></g><g data-cell-id="subscriptions__org_id"><g><rect x="372" y="256" width="168" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 170px; height: 26px; padding-top: 256px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 168px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">org_id</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid FK</td></tr></tbody></table></div></div></div></foreignObject><text x="372" y="273" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">org_iduuid FK</text></switch></g></g></g><g data-cell-id="subscriptions__stripe_id"><g><rect x="372" y="282" width="168" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 170px; height: 26px; padding-top: 282px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 168px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">stripe_id</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">text unique</td></tr></tbody></table></div></div></div></foreignObject><text x="372" y="299" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">stripe_idtext unique</text></switch></g></g></g><g data-cell-id="subscriptions__status"><g><rect x="372" y="308" width="168" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 170px; height: 26px; padding-top: 308px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 168px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">status</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">text</td></tr></tbody></table></div></div></div></foreignObject><text x="372" y="325" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">statustext</text></switch></g></g></g></g><g data-cell-id="invoices"><g><path d="M 208 230 L 208 204 Q 208 198 202 198 L 22 198 Q 16 198 16 204 L 16 230" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 16 230 L 16 334 Q 16 340 22 340 L 202 340 Q 208 340 208 334 L 208 230" fill="#ffffff" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/><path d="M 16 230 L 208 230" fill="none" stroke="#4f46e5" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 190px; height: 1px; padding-top: 214px; margin-left: 17px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Invoices</div></div></div></foreignObject><text x="112" y="218" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" font-weight="bold" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">Invoices</text></switch></g></g><g data-cell-id="invoices__id"><g><rect x="16" y="230" width="192" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 194px; height: 26px; padding-top: 230px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 192px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px"><b>id</b></td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid PK</td></tr></tbody></table></div></div></div></foreignObject><text x="16" y="247" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">iduuid PK</text></switch></g></g></g><g data-cell-id="invoices__subscription_id"><g><rect x="16" y="256" width="192" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 194px; height: 26px; padding-top: 256px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 192px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">subscription_id</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">uuid FK</td></tr></tbody></table></div></div></div></foreignObject><text x="16" y="273" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">subscription_iduuid FK</text></switch></g></g></g><g data-cell-id="invoices__amount_cents"><g><rect x="16" y="282" width="192" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 194px; height: 26px; padding-top: 282px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 192px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">amount_cents</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">int</td></tr></tbody></table></div></div></div></foreignObject><text x="16" y="299" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">amount_centsint</text></switch></g></g></g><g data-cell-id="invoices__paid_at"><g><rect x="16" y="308" width="192" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 194px; height: 26px; padding-top: 308px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; width: 192px; height: 26px; overflow: hidden; color: #0F172A; "><div style="display: inline-block; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; word-wrap: normal; "><table style="width:100%;height:100%;border-collapse:collapse"><tbody><tr><td style="padding:0 6px 0 12px">paid_at</td><td style="text-align: right; padding: 0px 12px 0px 6px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">timestamptz null</td></tr></tbody></table></div></div></div></foreignObject><text x="16" y="325" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="12px" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">paid_attimestamptz null</text></switch></g></g></g></g><g data-cell-id="e_users__orgs"><g><path d="M 572.25 87 L 674 87 Q 680 87 680 93 L 680 152.6 Q 680 158.6 686 158.61 L 708 158.63" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><ellipse cx="566.75" cy="87" rx="5" ry="5" fill="none" stroke="#64748b" stroke-width="1.5" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 548 93.25 L 560.5 87 L 548 80.75 M 560.5 87 L 548 87" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 701.74 164.87 L 701.76 152.37 M 695.49 164.87 L 695.51 152.37" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 87px; margin-left: 628px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">belongs to</div></div></div></foreignObject><text x="628" y="90" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">belongs to</text></switch></g></g></g><g data-cell-id="e_subscriptions__orgs"><g><path d="M 564.25 269 L 674 269 Q 680 269 680 263 L 680 203.4 Q 680 197.4 686 197.39 L 708 197.37" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><ellipse cx="558.75" cy="269" rx="5" ry="5" fill="none" stroke="#64748b" stroke-width="1.5" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 540 275.25 L 552.5 269 L 540 262.75 M 552.5 269 L 540 269" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 701.76 203.63 L 701.74 191.13 M 695.51 203.63 L 695.49 191.13" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 269px; margin-left: 628px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">billed to</div></div></div></foreignObject><text x="628" y="272" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">billed to</text></switch></g></g></g><g data-cell-id="e_invoices__subscriptions"><g><path d="M 232.25 269 L 372 269" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><ellipse cx="226.75" cy="269" rx="5" ry="5" fill="none" stroke="#64748b" stroke-width="1.5" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 208 275.25 L 220.5 269 L 208 262.75 M 220.5 269 L 208 269" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 365.75 275.25 L 365.75 262.75 M 359.5 275.25 L 359.5 262.75" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 269px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">issued for</div></div></div></foreignObject><text x="286" y="272" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">issued for</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" style="background: #FFFFFF; background-color: light-dark(#FFFFFF, #121212);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="656px" height="1187px" viewBox="0 0 656 1187" content="<mxfile host="aiviz" agent="aiviz"><diagram id="aiviz" name="Checkout"><mxGraphModel grid="1" gridSize="8" guides="1" tooltips="1" connect="1" arrows="1" page="0" background="#FFFFFF" math="0" shadow="0"><root><object id="0" label="" aiviz_version="1" aiviz_type="architecture" aiviz_direction="auto" aiviz_title="Checkout"><mxCell/></object><mxCell id="1" parent="0"/><object id="vpc" label="Production VPC" aiviz_type="group" aiviz_label="Production VPC" aiviz_auto="16,341,494,655"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=20;html=1;whiteSpace=wrap;container=1;collapsible=0;fillColor=#F8FAFC;strokeColor=#CBD5E1;strokeWidth=1;dashed=1;dashPattern=4 4;verticalAlign=top;align=left;spacingLeft=14;spacingTop=6;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#64748B;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="16" y="341" width="494" height="655" as="geometry"/></mxCell></object><object id="data" label="Data tier" aiviz_type="group" aiviz_label="Data tier" aiviz_auto="20,503,380,132"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=20;html=1;whiteSpace=wrap;container=1;collapsible=0;fillColor=#F8FAFC;strokeColor=#CBD5E1;strokeWidth=1;dashed=1;dashPattern=4 4;verticalAlign=top;align=left;spacingLeft=14;spacingTop=6;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#64748B;fontStyle=1;" vertex="1" parent="vpc"><mxGeometry x="20" y="503" width="380" height="132" as="geometry"/></mxCell></object><object id="user" label="&lt;span style=&quot;font-weight:600&quot;&gt;Shopper&lt;/span&gt;" aiviz_kind="person" aiviz_label="Shopper" aiviz_auto="303,16,160,40"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#FDF4FF;strokeColor=#C026D3;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="303" y="16" width="160" height="40" as="geometry"/></mxCell></object><object id="web" label="&lt;span style=&quot;font-weight:600&quot;&gt;Web app&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Next.js&lt;/span&gt;" aiviz_kind="client" aiviz_label="Web app" aiviz_tech="Next.js" aiviz_auto="303,168,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#F0F9FF;strokeColor=#0284C7;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="303" y="168" width="160" height="56" as="geometry"/></mxCell></object><object id="gw" label="&lt;span style=&quot;font-weight:600&quot;&gt;API gateway&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Envoy&lt;/span&gt;" aiviz_kind="service" aiviz_label="API gateway" aiviz_tech="Envoy" aiviz_auto="287,40,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="vpc"><mxGeometry x="287" y="40" width="160" height="56" as="geometry"/></mxCell></object><object id="api" label="&lt;span style=&quot;font-weight:600&quot;&gt;Checkout API&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Go&lt;/span&gt;" aiviz_kind="service" aiviz_label="Checkout API" aiviz_tech="Go" aiviz_auto="287,152,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="vpc"><mxGeometry x="287" y="152" width="160" height="56" as="geometry"/></mxCell></object><object id="worker" label="&lt;span style=&quot;font-weight:600&quot;&gt;Fulfillment worker&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Go&lt;/span&gt;" aiviz_kind="service" aiviz_label="Fulfillment worker" aiviz_tech="Go" aiviz_auto="303,386,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#EEF2FF;strokeColor=#4F46E5;strokeWidth=1.5;" vertex="1" parent="vpc"><mxGeometry x="303" y="386" width="160" height="56" as="geometry"/></mxCell></object><object id="queue" label="&lt;span style=&quot;font-weight:600&quot;&gt;order-events&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Kafka&lt;/span&gt;" aiviz_kind="queue" aiviz_label="order-events" aiviz_tech="Kafka" aiviz_auto="303,274,160,56"><mxCell style="rounded=1;arcSize=50;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#FFF7ED;strokeColor=#D97706;strokeWidth=1.5;" vertex="1" parent="vpc"><mxGeometry x="303" y="274" width="160" height="56" as="geometry"/></mxCell></object><object id="db" label="&lt;span style=&quot;font-weight:600&quot;&gt;Orders&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Postgres&lt;/span&gt;" aiviz_kind="database" aiviz_label="Orders" aiviz_tech="Postgres" aiviz_auto="200,40,160,72"><mxCell style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=8;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#ECFDF5;strokeColor=#059669;strokeWidth=1.5;" vertex="1" parent="data"><mxGeometry x="200" y="40" width="160" height="72" as="geometry"/></mxCell></object><object id="cache" label="&lt;span style=&quot;font-weight:600&quot;&gt;Session cache&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Redis&lt;/span&gt;" aiviz_kind="cache" aiviz_label="Session cache" aiviz_tech="Redis" aiviz_auto="20,40,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#ECFDF5;strokeColor=#059669;strokeWidth=1.5;" vertex="1" parent="data"><mxGeometry x="20" y="40" width="160" height="56" as="geometry"/></mxCell></object><object id="stripe" label="&lt;span style=&quot;font-weight:600&quot;&gt;Stripe&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Payments API&lt;/span&gt;" aiviz_kind="external" aiviz_label="Stripe" aiviz_tech="Payments API" aiviz_auto="478,1113,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#F8FAFC;strokeColor=#94A3B8;strokeWidth=1.5;dashed=1;dashPattern=6 4;" vertex="1" parent="1"><mxGeometry x="478" y="1113" width="160" height="56" as="geometry"/></mxCell></object><object id="email" label="&lt;span style=&quot;font-weight:600&quot;&gt;SendGrid&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size:11px;color:#64748B&quot;&gt;Email&lt;/span&gt;" aiviz_kind="external" aiviz_label="SendGrid" aiviz_tech="Email" aiviz_auto="278,1113,160,56"><mxCell style="rounded=1;absoluteArcSize=1;arcSize=16;html=1;whiteSpace=wrap;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=13;fontColor=#0F172A;fillColor=#F8FAFC;strokeColor=#94A3B8;strokeWidth=1.5;dashed=1;dashPattern=6 4;" vertex="1" parent="1"><mxGeometry x="278" y="1113" width="160" height="56" as="geometry"/></mxCell></object><object id="e_user__web" label="browses" aiviz_edge="user-&gt;web" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="user" target="web"><mxGeometry relative="1" as="geometry"/></mxCell></object><object id="e_web__gw" label="HTTPS" aiviz_edge="web-&gt;gw" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="web" target="gw"><mxGeometry x="-0.287" relative="1" as="geometry"/></mxCell></object><object id="e_gw__api" label="gRPC" aiviz_edge="gw-&gt;api" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="gw" target="api"><mxGeometry relative="1" as="geometry"/></mxCell></object><object id="e_api__cache" label="read session" aiviz_edge="api-&gt;cache" aiviz_auto="335,559 136,559"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.2;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="api" target="cache"><mxGeometry x="0.308" relative="1" as="geometry"><Array as="points"><mxPoint x="335" y="559"/><mxPoint x="136" y="559"/></Array></mxGeometry></mxCell></object><object id="e_api__db" label="SQL" aiviz_edge="api-&gt;db" aiviz_auto="367,569 249,569 249,829 289,829"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.4;exitY=1;exitDx=0;exitDy=0;entryX=0.333;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="api" target="db"><mxGeometry x="0.087" relative="1" as="geometry"><Array as="points"><mxPoint x="367" y="569"/><mxPoint x="249" y="569"/><mxPoint x="249" y="829"/><mxPoint x="289" y="829"/></Array></mxGeometry></mxCell></object><object id="e_api__stripe" label="charge" aiviz_edge="api-&gt;stripe" aiviz_auto="431,559 489,559 489,1021 558,1021"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.8;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="api" target="stripe"><mxGeometry x="0.838" relative="1" as="geometry"><Array as="points"><mxPoint x="431" y="559"/><mxPoint x="489" y="559"/><mxPoint x="489" y="1021"/><mxPoint x="558" y="1021"/></Array></mxGeometry></mxCell></object><object id="e_api__queue" label="OrderPlaced" aiviz_edge="api-&gt;queue" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;dashed=1;dashPattern=6 4;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.6;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="api" target="queue"><mxGeometry x="0.152" relative="1" as="geometry"/></mxCell></object><object id="e_queue__worker" label="consume" aiviz_edge="queue-&gt;worker" aiviz_auto=""><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;dashed=1;dashPattern=6 4;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="queue" target="worker"><mxGeometry relative="1" as="geometry"/></mxCell></object><object id="e_worker__db" label="update status" aiviz_edge="worker-&gt;db" aiviz_auto="373,793 343,793"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.333;exitY=1;exitDx=0;exitDy=0;entryX=0.667;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="worker" target="db"><mxGeometry x="-0.115" relative="1" as="geometry"><Array as="points"><mxPoint x="373" y="793"/><mxPoint x="343" y="793"/></Array></mxGeometry></mxCell></object><object id="e_worker__email" label="receipt" aiviz_edge="worker-&gt;email" aiviz_auto="426,1021 358,1021"><mxCell style="edgeStyle=orthogonalEdgeStyle;rounded=1;arcSize=12;html=1;strokeColor=#64748B;strokeWidth=1.5;endArrow=blockThin;endFill=1;endSize=7;startArrow=none;fontFamily=-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;fontSize=11;fontColor=#475569;labelBackgroundColor=#FFFFFF;exitX=0.667;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="worker" target="email"><mxGeometry x="0.719" relative="1" as="geometry"><Array as="points"><mxPoint x="426" y="1021"/><mxPoint x="358" y="1021"/></Array></mxGeometry></mxCell></object></root></mxGraphModel></diagram></mxfile>"><defs/><rect fill="#FFFFFF" width="100%" height="100%" x="0" y="0" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="vpc"><g transform="translate(0.5,0.5)"><rect x="16" y="341" width="494" height="655" rx="10" ry="10" fill="#f8fafc" stroke="#cbd5e1" stroke-dasharray="4 4" pointer-events="all" style="fill: light-dark(rgb(248, 250, 252), rgb(21, 23, 25)); stroke: light-dark(rgb(203, 213, 225), rgb(47, 56, 66));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 478px; height: 1px; padding-top: 354px; margin-left: 32px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #64748B; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#64748B, #7e8c9f); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Production VPC</div></div></div></foreignObject><text x="32" y="365" fill="#64748B" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" font-weight="bold" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Production VPC</text></switch></g></g><g data-cell-id="data"><g transform="translate(0.5,0.5)"><rect x="36" y="844" width="380" height="132" rx="10" ry="10" fill="#f8fafc" stroke="#cbd5e1" stroke-dasharray="4 4" pointer-events="all" style="fill: light-dark(rgb(248, 250, 252), rgb(21, 23, 25)); stroke: light-dark(rgb(203, 213, 225), rgb(47, 56, 66));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 364px; height: 1px; padding-top: 857px; margin-left: 52px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #64748B; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#64748B, #7e8c9f); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Data tier</div></div></div></foreignObject><text x="52" y="868" fill="#64748B" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" font-weight="bold" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Data tier</text></switch></g></g><g data-cell-id="db"><g><path d="M 236 892 C 236 887.58 271.82 884 316 884 C 337.22 884 357.57 884.84 372.57 886.34 C 387.57 887.84 396 889.88 396 892 L 396 948 C 396 952.42 360.18 956 316 956 C 271.82 956 236 952.42 236 948 Z" fill="#ecfdf5" stroke="#059669" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(236, 253, 245), rgb(13, 27, 21)); stroke: light-dark(rgb(5, 150, 105), rgb(42, 167, 128));"/><path d="M 396 892 C 396 896.42 360.18 900 316 900 C 271.82 900 236 896.42 236 892" fill="none" stroke="#059669" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(5, 150, 105), rgb(42, 167, 128));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 927px; margin-left: 237px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Orders</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Postgres</span></div></div></div></foreignObject><text x="316" y="923" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="316" y="923">Orders</tspan><tspan x="316" y="939">Postgres</tspan></text></switch></g></g></g><g data-cell-id="cache"><g><rect x="56" y="884" width="160" height="56" rx="8" ry="8" fill="#ecfdf5" stroke="#059669" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(236, 253, 245), rgb(13, 27, 21)); stroke: light-dark(rgb(5, 150, 105), rgb(42, 167, 128));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 912px; margin-left: 57px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Session cache</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Redis</span></div></div></div></foreignObject><text x="136" y="908" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="136" y="908">Session cache</tspan><tspan x="136" y="924">Redis</tspan></text></switch></g></g></g></g><g data-cell-id="gw"><g><rect x="303" y="381" width="160" height="56" rx="8" ry="8" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 409px; margin-left: 304px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">API gateway</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Envoy</span></div></div></div></foreignObject><text x="383" y="405" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="383" y="405">API gateway</tspan><tspan x="383" y="421">Envoy</tspan></text></switch></g></g></g><g data-cell-id="api"><g><rect x="303" y="493" width="160" height="56" rx="8" ry="8" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 521px; margin-left: 304px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Checkout API</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Go</span></div></div></div></foreignObject><text x="383" y="517" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="383" y="517">Checkout API</tspan><tspan x="383" y="533">Go</tspan></text></switch></g></g></g><g data-cell-id="worker"><g><rect x="319" y="727" width="160" height="56" rx="8" ry="8" fill="#eef2ff" stroke="#4f46e5" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(238, 242, 255), rgb(26, 29, 40)); stroke: light-dark(rgb(79, 70, 229), rgb(162, 154, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 755px; margin-left: 320px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Fulfillment worker</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Go</span></div></div></div></foreignObject><text x="399" y="751" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="399" y="751">Fulfillment worker</tspan><tspan x="399" y="767">Go</tspan></text></switch></g></g></g><g data-cell-id="queue"><g><rect x="319" y="615" width="160" height="56" rx="28" ry="28" fill="#fff7ed" stroke="#d97706" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(255, 247, 237), rgb(30, 23, 15)); stroke: light-dark(rgb(217, 119, 6), rgb(197, 113, 16));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 643px; margin-left: 320px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">order-events</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Kafka</span></div></div></div></foreignObject><text x="399" y="639" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="399" y="639">order-events</tspan><tspan x="399" y="655">Kafka</tspan></text></switch></g></g></g></g><g data-cell-id="user"><g><rect x="303" y="16" width="160" height="40" rx="8" ry="8" fill="#fdf4ff" stroke="#c026d3" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(253, 244, 255), rgb(30, 23, 32)); stroke: light-dark(rgb(192, 38, 211), rgb(255, 127, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 36px; margin-left: 304px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Shopper</span></div></div></div></foreignObject><text x="383" y="40" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));">Shopper</text></switch></g></g></g><g data-cell-id="web"><g><rect x="303" y="168" width="160" height="56" rx="8" ry="8" fill="#f0f9ff" stroke="#0284c7" stroke-width="1.5" pointer-events="all" style="fill: light-dark(rgb(240, 249, 255), rgb(18, 26, 31)); stroke: light-dark(rgb(2, 132, 199), rgb(52, 163, 221));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 196px; margin-left: 304px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Web app</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Next.js</span></div></div></div></foreignObject><text x="383" y="192" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="383" y="192">Web app</tspan><tspan x="383" y="208">Next.js</tspan></text></switch></g></g></g><g data-cell-id="stripe"><g><rect x="478" y="1113" width="160" height="56" rx="8" ry="8" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="9 6" pointer-events="all" style="fill: light-dark(rgb(248, 250, 252), rgb(21, 23, 25)); stroke: light-dark(rgb(148, 163, 184), rgb(87, 100, 118));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 1141px; margin-left: 479px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">Stripe</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Payments API</span></div></div></div></foreignObject><text x="558" y="1137" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="558" y="1137">Stripe</tspan><tspan x="558" y="1153">Payments API</tspan></text></switch></g></g></g><g data-cell-id="email"><g><rect x="278" y="1113" width="160" height="56" rx="8" ry="8" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="9 6" pointer-events="all" style="fill: light-dark(rgb(248, 250, 252), rgb(21, 23, 25)); stroke: light-dark(rgb(148, 163, 184), rgb(87, 100, 118));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 1141px; margin-left: 279px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #0F172A; "><div style="display: inline-block; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#0F172A, #d3daea); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-weight:600">SendGrid</span><br /><span style="font-size: 11px; color: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));">Email</span></div></div></div></foreignObject><text x="358" y="1137" fill="#0F172A" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="13px" text-anchor="middle" style="fill: light-dark(rgb(15, 23, 42), rgb(211, 218, 234));"><tspan x="358" y="1137">SendGrid</tspan><tspan x="358" y="1153">Email</tspan></text></switch></g></g></g><g data-cell-id="e_user__web"><g><path d="M 383 56 L 383 157.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 383 166.32 L 380.17 157.82 L 385.83 157.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 112px; margin-left: 383px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">browses</div></div></div></foreignObject><text x="383" y="115" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">browses</text></switch></g></g></g><g data-cell-id="e_web__gw"><g><path d="M 383 224 L 383 370.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 383 379.32 L 380.17 370.82 L 385.83 370.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 383px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">HTTPS</div></div></div></foreignObject><text x="383" y="283" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">HTTPS</text></switch></g></g></g><g data-cell-id="e_gw__api"><g><path d="M 383 437 L 383 482.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 383 491.32 L 380.17 482.82 L 385.83 482.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 465px; margin-left: 383px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">gRPC</div></div></div></foreignObject><text x="383" y="468" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">gRPC</text></switch></g></g></g><g data-cell-id="e_api__cache"><g><path d="M 335 549 L 335 554 Q 335 559 329 559 L 142 559 Q 136 559 136 565 L 136 873.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 136 882.32 L 133.17 873.82 L 138.83 873.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 699px; margin-left: 136px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">read session</div></div></div></foreignObject><text x="136" y="702" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">read session</text></switch></g></g></g><g data-cell-id="e_api__db"><g><path d="M 367 549 L 367 563 Q 367 569 361 569 L 255 569 Q 249 569 249 575 L 249 823 Q 249 829 255 829 L 283.3 829 Q 289.3 829 289.3 835 L 289.28 873.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 289.28 882.32 L 286.45 873.82 L 292.12 873.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 699px; margin-left: 249px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">SQL</div></div></div></foreignObject><text x="249" y="702" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">SQL</text></switch></g></g></g><g data-cell-id="e_api__stripe"><g><path d="M 431 549 L 431 554 Q 431 559 437 559 L 483 559 Q 489 559 489 565 L 489 1015 Q 489 1021 495 1021 L 552 1021 Q 558 1021 558 1027 L 558 1102.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 558 1111.32 L 555.17 1102.82 L 560.83 1102.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1057px; margin-left: 558px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">charge</div></div></div></foreignObject><text x="558" y="1060" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">charge</text></switch></g></g></g><g data-cell-id="e_api__queue"><g><path d="M 399 549 L 399 604.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" stroke-dasharray="9 6" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 399 613.32 L 396.17 604.82 L 401.83 604.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 587px; margin-left: 399px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">OrderPlaced</div></div></div></foreignObject><text x="399" y="590" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">OrderPlaced</text></switch></g></g></g><g data-cell-id="e_queue__worker"><g><path d="M 399 671 L 399 716.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" stroke-dasharray="9 6" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 399 725.32 L 396.17 716.82 L 401.83 716.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 699px; margin-left: 399px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">consume</div></div></div></foreignObject><text x="399" y="702" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">consume</text></switch></g></g></g><g data-cell-id="e_worker__db"><g><path d="M 372.28 783 L 372.29 788 Q 372.3 793 366.3 793 L 348.7 793 Q 342.7 793 342.7 799 L 342.72 873.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 342.72 882.32 L 339.88 873.82 L 345.55 873.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 811px; margin-left: 343px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">update status</div></div></div></foreignObject><text x="343" y="815" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">update status</text></switch></g></g></g><g data-cell-id="e_worker__email"><g><path d="M 425.72 783 L 425.7 1015 Q 425.7 1021 419.7 1021 L 364 1021 Q 358 1021 358 1027 L 358 1102.82" fill="none" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/><path d="M 358 1111.32 L 355.17 1102.82 L 360.83 1102.82 Z" fill="#64748b" stroke="#64748b" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(100, 116, 139), rgb(126, 140, 159)); stroke: light-dark(rgb(100, 116, 139), rgb(126, 140, 159));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1057px; margin-left: 358px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #475569; background-color: #FFFFFF; "><div style="display: inline-block; font-size: 11px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: light-dark(#475569, #9ba7b8); line-height: 1.2; pointer-events: all; background-color: light-dark(#FFFFFF, #121212); white-space: nowrap; ">receipt</div></div></div></foreignObject><text x="358" y="1061" fill="#475569" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="11px" text-anchor="middle" style="fill: light-dark(rgb(71, 85, 105), rgb(155, 167, 184));">receipt</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|