@diagrammo/dgmo 0.8.3 → 0.8.4
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/.claude/commands/dgmo-diagram-this.md +60 -0
- package/.claude/commands/dgmo-document-project.md +128 -0
- package/.claude/commands/dgmo.md +185 -50
- package/.cursorrules +32 -37
- package/.github/copilot-instructions.md +35 -44
- package/.windsurfrules +32 -37
- package/README.md +4 -4
- package/dist/cli.cjs +153 -153
- package/dist/editor.cjs +336 -0
- package/dist/editor.cjs.map +1 -0
- package/dist/editor.d.cts +27 -0
- package/dist/editor.d.ts +27 -0
- package/dist/editor.js +305 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.cjs +3336 -1055
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3336 -1055
- package/dist/index.js.map +1 -1
- package/docs/language-reference.md +30 -29
- package/gallery/fixtures/arc.dgmo +18 -0
- package/gallery/fixtures/area.dgmo +19 -0
- package/gallery/fixtures/bar-stacked.dgmo +10 -0
- package/gallery/fixtures/bar.dgmo +10 -0
- package/gallery/fixtures/c4-full.dgmo +52 -0
- package/gallery/fixtures/c4.dgmo +17 -0
- package/gallery/fixtures/chord.dgmo +12 -0
- package/gallery/fixtures/class-basic.dgmo +14 -0
- package/gallery/fixtures/class-full.dgmo +43 -0
- package/gallery/fixtures/doughnut.dgmo +8 -0
- package/gallery/fixtures/flowchart-basic.dgmo +3 -0
- package/gallery/fixtures/flowchart-colors.dgmo +5 -0
- package/gallery/fixtures/flowchart-complex.dgmo +17 -0
- package/gallery/fixtures/flowchart-decision.dgmo +5 -0
- package/gallery/fixtures/flowchart-full.dgmo +13 -0
- package/gallery/fixtures/flowchart-groups.dgmo +10 -0
- package/gallery/fixtures/flowchart-loop.dgmo +7 -0
- package/gallery/fixtures/flowchart-nested.dgmo +7 -0
- package/gallery/fixtures/flowchart-shapes.dgmo +5 -0
- package/gallery/fixtures/function.dgmo +8 -0
- package/gallery/fixtures/funnel.dgmo +7 -0
- package/gallery/fixtures/gantt-full.dgmo +49 -0
- package/gallery/fixtures/gantt.dgmo +42 -0
- package/gallery/fixtures/heatmap.dgmo +8 -0
- package/gallery/fixtures/infra-full.dgmo +78 -0
- package/gallery/fixtures/infra-overload.dgmo +25 -0
- package/gallery/fixtures/infra.dgmo +47 -0
- package/gallery/fixtures/initiative-status-full.dgmo +46 -0
- package/gallery/fixtures/initiative-status-phases.dgmo +29 -0
- package/gallery/fixtures/initiative-status.dgmo +9 -0
- package/gallery/fixtures/line.dgmo +19 -0
- package/gallery/fixtures/multi-line.dgmo +11 -0
- package/gallery/fixtures/org-basic.dgmo +16 -0
- package/gallery/fixtures/org-full.dgmo +69 -0
- package/gallery/fixtures/org-teams.dgmo +25 -0
- package/gallery/fixtures/pie.dgmo +9 -0
- package/gallery/fixtures/polar-area.dgmo +8 -0
- package/gallery/fixtures/quadrant.dgmo +18 -0
- package/gallery/fixtures/radar.dgmo +8 -0
- package/gallery/fixtures/sankey.dgmo +31 -0
- package/gallery/fixtures/scatter.dgmo +21 -0
- package/gallery/fixtures/sequence-tags-protocols.dgmo +45 -0
- package/gallery/fixtures/sequence-tags.dgmo +41 -0
- package/gallery/fixtures/sequence.dgmo +35 -0
- package/gallery/fixtures/sitemap-basic.dgmo +12 -0
- package/gallery/fixtures/sitemap-full.dgmo +156 -0
- package/gallery/fixtures/slope.dgmo +8 -0
- package/gallery/fixtures/spr-eras.dgmo +62 -0
- package/gallery/fixtures/state.dgmo +30 -0
- package/gallery/fixtures/timeline-intraday.dgmo +14 -0
- package/gallery/fixtures/timeline.dgmo +32 -0
- package/gallery/fixtures/venn.dgmo +10 -0
- package/gallery/fixtures/wordcloud.dgmo +24 -0
- package/package.json +51 -2
- package/src/c4/layout.ts +372 -90
- package/src/c4/parser.ts +100 -55
- package/src/chart.ts +91 -28
- package/src/class/parser.ts +41 -12
- package/src/cli.ts +168 -61
- package/src/completion.ts +378 -183
- package/src/d3.ts +887 -288
- package/src/dgmo-mermaid.ts +16 -13
- package/src/dgmo-router.ts +69 -23
- package/src/echarts.ts +646 -153
- package/src/editor/dgmo.grammar +69 -0
- package/src/editor/dgmo.grammar.d.ts +2 -0
- package/src/editor/dgmo.grammar.js +18 -0
- package/src/editor/dgmo.grammar.terms.d.ts +5 -0
- package/src/editor/dgmo.grammar.terms.js +35 -0
- package/src/editor/highlight.ts +36 -0
- package/src/editor/index.ts +28 -0
- package/src/editor/keywords.ts +220 -0
- package/src/editor/tokens.ts +30 -0
- package/src/er/parser.ts +48 -14
- package/src/er/renderer.ts +112 -53
- package/src/gantt/calculator.ts +91 -29
- package/src/gantt/parser.ts +197 -71
- package/src/gantt/renderer.ts +1120 -350
- package/src/graph/flowchart-parser.ts +46 -25
- package/src/graph/state-parser.ts +47 -17
- package/src/infra/parser.ts +157 -53
- package/src/infra/renderer.ts +723 -271
- package/src/initiative-status/parser.ts +138 -44
- package/src/kanban/parser.ts +25 -14
- package/src/org/layout.ts +111 -44
- package/src/org/parser.ts +69 -22
- package/src/palettes/index.ts +3 -2
- package/src/sequence/parser.ts +193 -61
- package/src/sitemap/parser.ts +65 -29
- package/src/utils/arrows.ts +2 -22
- package/src/utils/duration.ts +39 -21
- package/src/utils/legend-constants.ts +0 -2
- package/src/utils/parsing.ts +75 -31
|
@@ -28,6 +28,11 @@ Syntax changes introduced in the consistency cleanup. Old forms now produce erro
|
|
|
28
28
|
| `show-sub-node-count: yes` | `show-sub-node-count` (flag) | Org |
|
|
29
29
|
| `import: path` | `import path` | Org |
|
|
30
30
|
| `tags: path` | `tags path` | Org |
|
|
31
|
+
| `xlabel` | `x-label` | Data charts, function |
|
|
32
|
+
| `ylabel` | `y-label` | Data charts, function |
|
|
33
|
+
| `sizelabel` | `size-label` | Scatter/bubble |
|
|
34
|
+
| `x-axis` | `x-label` | Quadrant |
|
|
35
|
+
| `y-axis` | `y-label` | Quadrant |
|
|
31
36
|
|
|
32
37
|
---
|
|
33
38
|
|
|
@@ -420,7 +425,7 @@ Bracket syntax only.
|
|
|
420
425
|
|
|
421
426
|
### 4.6 Options
|
|
422
427
|
|
|
423
|
-
- `direction-
|
|
428
|
+
- `direction-lr` (boolean; default is TB)
|
|
424
429
|
- `orientation-vertical` (boolean; default is horizontal)
|
|
425
430
|
|
|
426
431
|
---
|
|
@@ -1018,8 +1023,8 @@ Commas between values are optional. Thousands commas are supported (`3,984,078.6
|
|
|
1018
1023
|
**Options (space-separated, NO colon):**
|
|
1019
1024
|
```
|
|
1020
1025
|
title My Chart
|
|
1021
|
-
|
|
1022
|
-
|
|
1026
|
+
x-label X Label
|
|
1027
|
+
y-label Y Label
|
|
1023
1028
|
orientation-horizontal
|
|
1024
1029
|
stacked
|
|
1025
1030
|
```
|
|
@@ -1056,9 +1061,9 @@ Commas between values are optional. Thousands commas supported.
|
|
|
1056
1061
|
|
|
1057
1062
|
**Options:**
|
|
1058
1063
|
```
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1064
|
+
x-label Weight
|
|
1065
|
+
y-label Height
|
|
1066
|
+
size-label Crew
|
|
1062
1067
|
no-labels
|
|
1063
1068
|
```
|
|
1064
1069
|
|
|
@@ -1084,8 +1089,8 @@ Commas between values are optional. Thousands commas supported.
|
|
|
1084
1089
|
|
|
1085
1090
|
```
|
|
1086
1091
|
function Trajectories
|
|
1087
|
-
|
|
1088
|
-
|
|
1092
|
+
x-label Distance
|
|
1093
|
+
y-label Height
|
|
1089
1094
|
x 0 to 250
|
|
1090
1095
|
|
|
1091
1096
|
15 degrees(blue): -0.001*x^2 + 0.27*x
|
|
@@ -1168,19 +1173,19 @@ navigation 88
|
|
|
1168
1173
|
- Data: space-separated only (`word value`)
|
|
1169
1174
|
- Options: `rotate none|mixed|angled`, `max N`, `size min max`
|
|
1170
1175
|
|
|
1171
|
-
### 16.3 Arc Diagrams
|
|
1176
|
+
### 16.3 Arc Diagrams
|
|
1172
1177
|
|
|
1173
1178
|
```
|
|
1174
1179
|
arc Pirate Alliances
|
|
1175
1180
|
|
|
1176
1181
|
[Caribbean](red)
|
|
1177
|
-
Blackbeard -> Bonnet
|
|
1178
|
-
Blackbeard -> Vane
|
|
1182
|
+
Blackbeard -> Bonnet 8
|
|
1183
|
+
Blackbeard -> Vane 5
|
|
1179
1184
|
|
|
1180
1185
|
order group
|
|
1181
1186
|
```
|
|
1182
1187
|
|
|
1183
|
-
- Link: `Source -> Target
|
|
1188
|
+
- Link: `Source -> Target weight` — space before optional weight
|
|
1184
1189
|
- Options: `order appearance|name|group|degree`
|
|
1185
1190
|
|
|
1186
1191
|
### 16.4 Venn Diagrams
|
|
@@ -1199,25 +1204,25 @@ sw + nav + lead Legendary Pirates
|
|
|
1199
1204
|
- Set declaration: `Name(color) alias X`
|
|
1200
1205
|
- Intersections: `Set1 + Set2 Label` — label follows the last set reference (no colon)
|
|
1201
1206
|
|
|
1202
|
-
### 16.5 Quadrant Diagrams
|
|
1207
|
+
### 16.5 Quadrant Diagrams
|
|
1203
1208
|
|
|
1204
1209
|
```
|
|
1205
1210
|
quadrant Crew Assessment
|
|
1206
|
-
x-
|
|
1207
|
-
y-
|
|
1211
|
+
x-label Low Skill, High Skill
|
|
1212
|
+
y-label Low Loyalty, High Loyalty
|
|
1208
1213
|
|
|
1209
|
-
top-right
|
|
1210
|
-
top-left
|
|
1211
|
-
bottom-left
|
|
1212
|
-
bottom-right
|
|
1214
|
+
top-right Promote (green)
|
|
1215
|
+
top-left Train (yellow)
|
|
1216
|
+
bottom-left Maroon (red)
|
|
1217
|
+
bottom-right Watch Closely (purple)
|
|
1213
1218
|
|
|
1214
|
-
Quartermaster
|
|
1215
|
-
Navigator
|
|
1219
|
+
Quartermaster 0.9, 0.95
|
|
1220
|
+
Navigator 0.85, 0.8
|
|
1216
1221
|
```
|
|
1217
1222
|
|
|
1218
|
-
- Axis labels: `x-
|
|
1219
|
-
- Position labels: `top-right
|
|
1220
|
-
- Data points: `Label
|
|
1223
|
+
- Axis labels: `x-label Low, High` — space-separated
|
|
1224
|
+
- Position labels: `top-right Label` — space-separated
|
|
1225
|
+
- Data points: `Label x, y` — space-separated, comma between coordinates
|
|
1221
1226
|
- Thousands commas supported in values
|
|
1222
1227
|
|
|
1223
1228
|
---
|
|
@@ -1235,10 +1240,6 @@ Navigator: 0.85 0.8
|
|
|
1235
1240
|
| Class method returns | class | `+ sail(): void` |
|
|
1236
1241
|
| Function expressions | function | `f(x): x^2 + 1` |
|
|
1237
1242
|
| Slope data rows | slope | `Blackbeard: 40 4` |
|
|
1238
|
-
| Quadrant axes | quadrant | `x-axis: Low, High` |
|
|
1239
|
-
| Quadrant positions | quadrant | `top-right: Promote` |
|
|
1240
|
-
| Quadrant data points | quadrant | `Quartermaster: 0.9 0.8` |
|
|
1241
|
-
| Arc link weight | arc | `Source -> Target: 8` |
|
|
1242
1243
|
| Hide tag values | initiative-status | `hide phase:Planning` |
|
|
1243
1244
|
|
|
1244
1245
|
### Colons OPTIONAL
|
|
@@ -1270,7 +1271,7 @@ Navigator: 0.85 0.8
|
|
|
1270
1271
|
|
|
1271
1272
|
**Colons appear in two contexts:**
|
|
1272
1273
|
1. **Value assignment** — `key: value` in pipe metadata, indented tag/metadata assignment (org, c4), and hide directives
|
|
1273
|
-
2. **Type/expression separation** — where labels can contain spaces and a delimiter is needed (function expressions, slope data,
|
|
1274
|
+
2. **Type/expression separation** — where labels can contain spaces and a delimiter is needed (function expressions, slope data, class members)
|
|
1274
1275
|
|
|
1275
1276
|
**Exception**: Known-schema properties (infra node properties, ER columns) remain space-separated even though they are indented. The colon rule applies to open-ended metadata, not fixed property schemas.
|
|
1276
1277
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
arc Microservice Dependencies
|
|
2
|
+
order group
|
|
3
|
+
|
|
4
|
+
[Frontend]
|
|
5
|
+
WebApp -> API Gateway 5
|
|
6
|
+
MobileApp -> API Gateway 3
|
|
7
|
+
|
|
8
|
+
[Core Services]
|
|
9
|
+
API Gateway -> AuthService 4
|
|
10
|
+
API Gateway -> UserService 5
|
|
11
|
+
API Gateway -> OrderService 3
|
|
12
|
+
UserService -> Database 4
|
|
13
|
+
OrderService -> Database 3
|
|
14
|
+
OrderService -> PaymentService 2
|
|
15
|
+
|
|
16
|
+
[External]
|
|
17
|
+
PaymentService -> Stripe 2
|
|
18
|
+
AuthService -> OAuth 3
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
area Memory Usage Over Time
|
|
2
|
+
x-label Hour
|
|
3
|
+
y-label GB
|
|
4
|
+
|
|
5
|
+
era 12am -> 9am Night (blue)
|
|
6
|
+
era 9am -> 6pm Day (green)
|
|
7
|
+
era 6pm -> 11pm Evening (purple)
|
|
8
|
+
|
|
9
|
+
12am 2.1
|
|
10
|
+
3am 1.8
|
|
11
|
+
6am 2.4
|
|
12
|
+
9am 5.7
|
|
13
|
+
10am 6.3
|
|
14
|
+
12pm 7.1
|
|
15
|
+
2pm 6.8
|
|
16
|
+
4pm 5.9
|
|
17
|
+
6pm 4.2
|
|
18
|
+
9pm 3.1
|
|
19
|
+
11pm 2.5
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
bar-stacked Support Tickets by Priority
|
|
2
|
+
x-label Month
|
|
3
|
+
y-label Tickets
|
|
4
|
+
|
|
5
|
+
series Critical (red), High (orange), Medium (yellow), Low (green), Info (blue)
|
|
6
|
+
January 8, 24, 45, 62, 31
|
|
7
|
+
February 12, 19, 51, 58, 28
|
|
8
|
+
March 6, 22, 38, 71, 35
|
|
9
|
+
April 10, 28, 42, 65, 40
|
|
10
|
+
May 5, 15, 48, 70, 33
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
c4 Online Bookstore — C4 Architecture
|
|
2
|
+
|
|
3
|
+
tag Technology alias tech
|
|
4
|
+
React(blue)
|
|
5
|
+
Node(green)
|
|
6
|
+
Python(orange)
|
|
7
|
+
PostgreSQL(purple)
|
|
8
|
+
|
|
9
|
+
tag Team alias t
|
|
10
|
+
Frontend(blue)
|
|
11
|
+
Backend(green)
|
|
12
|
+
Platform(teal)
|
|
13
|
+
Data(purple)
|
|
14
|
+
|
|
15
|
+
Customer is a person | t: Frontend
|
|
16
|
+
description: Browses and purchases books online
|
|
17
|
+
|
|
18
|
+
Admin is a person | t: Backend
|
|
19
|
+
description: Manages inventory and orders
|
|
20
|
+
|
|
21
|
+
Bookstore is a system | t: Backend
|
|
22
|
+
description: Core e-commerce platform for book sales
|
|
23
|
+
containers
|
|
24
|
+
WebApp is a container | tech: React, t: Frontend
|
|
25
|
+
description: Single-page storefront application
|
|
26
|
+
components
|
|
27
|
+
Catalog is a component
|
|
28
|
+
Cart is a component
|
|
29
|
+
Checkout is a component
|
|
30
|
+
API is a container | tech: Node, t: Backend
|
|
31
|
+
description: REST API gateway for all client requests
|
|
32
|
+
OrderSvc is a container | tech: Node, t: Backend
|
|
33
|
+
description: Order processing and fulfillment
|
|
34
|
+
SearchSvc is a container | tech: Python, t: Backend
|
|
35
|
+
description: Full-text search over book catalog
|
|
36
|
+
BookDB is a container is a database | tech: PostgreSQL, t: Data
|
|
37
|
+
description: Relational store — books, orders, users
|
|
38
|
+
CacheLayer is a container is a cache | tech: Redis, t: Platform
|
|
39
|
+
description: Session and query result cache
|
|
40
|
+
EventBus is a container | tech: Kafka, t: Platform
|
|
41
|
+
description: Async event backbone for order lifecycle
|
|
42
|
+
|
|
43
|
+
PaymentGW is a system | t: Platform
|
|
44
|
+
description: Stripe — external payment processing
|
|
45
|
+
|
|
46
|
+
EmailSvc is a system | t: Platform
|
|
47
|
+
description: SendGrid — transactional email delivery
|
|
48
|
+
|
|
49
|
+
Customer -Browses catalog-> Bookstore
|
|
50
|
+
Admin -Manages inventory-> Bookstore
|
|
51
|
+
Bookstore -Processes payments via-> PaymentGW | tech: REST
|
|
52
|
+
Bookstore ~Sends order confirmations~> EmailSvc | tech: SMTP
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
c4 Internet Banking System
|
|
2
|
+
|
|
3
|
+
Customer is a person
|
|
4
|
+
description: A customer of the bank
|
|
5
|
+
|
|
6
|
+
Banking is a system
|
|
7
|
+
description: Core internet banking system
|
|
8
|
+
containers
|
|
9
|
+
WebApp is a container | tech: React
|
|
10
|
+
API is a container | tech: Node.js
|
|
11
|
+
DB is a container is a database | tech: PostgreSQL
|
|
12
|
+
|
|
13
|
+
Email is a system
|
|
14
|
+
description: External email delivery service
|
|
15
|
+
|
|
16
|
+
Customer -Uses-> Banking
|
|
17
|
+
Banking -Sends emails via-> Email
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
chord Inter-Department Collaboration
|
|
2
|
+
|
|
3
|
+
Engineering -> Design 85
|
|
4
|
+
Engineering -> Product 72
|
|
5
|
+
Engineering -> QA 95
|
|
6
|
+
Design -> Product 68
|
|
7
|
+
Design -> Marketing 45
|
|
8
|
+
Product -> Marketing 58
|
|
9
|
+
Product -> Sales 42
|
|
10
|
+
Marketing -> Sales 65
|
|
11
|
+
QA -> Engineering 88
|
|
12
|
+
Sales -> Product 30
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
class Design Patterns
|
|
2
|
+
|
|
3
|
+
Drawable [interface]
|
|
4
|
+
+ draw(): void
|
|
5
|
+
+ resize(w: number, h: number): void
|
|
6
|
+
|
|
7
|
+
Shape implements Drawable [abstract] (purple)
|
|
8
|
+
# x: number
|
|
9
|
+
# y: number
|
|
10
|
+
+ area(): number
|
|
11
|
+
+ move(dx: number, dy: number): void
|
|
12
|
+
- validate(): boolean
|
|
13
|
+
|
|
14
|
+
Circle extends Shape
|
|
15
|
+
- radius: number
|
|
16
|
+
+ getRadius(): number
|
|
17
|
+
|
|
18
|
+
Rectangle extends Shape
|
|
19
|
+
- width: number
|
|
20
|
+
- height: number
|
|
21
|
+
+ getDiagonal(): number
|
|
22
|
+
|
|
23
|
+
Color [enum] (yellow)
|
|
24
|
+
Red
|
|
25
|
+
Green
|
|
26
|
+
Blue
|
|
27
|
+
|
|
28
|
+
Canvas
|
|
29
|
+
- shapes: Shape[]
|
|
30
|
+
+ render(): void
|
|
31
|
+
+ addShape(s: Shape): void
|
|
32
|
+
+ clear(): void
|
|
33
|
+
count: number {static}
|
|
34
|
+
*-- Shape : contains
|
|
35
|
+
..> Logger : uses
|
|
36
|
+
|
|
37
|
+
Logger
|
|
38
|
+
- instance: Logger {static}
|
|
39
|
+
+ log(msg: string): void
|
|
40
|
+
+ getInstance(): Logger {static}
|
|
41
|
+
|
|
42
|
+
Circle
|
|
43
|
+
-> Color : has fill
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
flowchart CI/CD Pipeline
|
|
2
|
+
|
|
3
|
+
(Push to Repo) -> [[Run Linter]] -> <Lint Pass?>
|
|
4
|
+
-yes-> [[Run Tests]]
|
|
5
|
+
-no-> [Lint Report~] -> /Notify Dev/ -> (Fix & Retry)
|
|
6
|
+
|
|
7
|
+
[[Run Tests]] -> <Tests Pass?>
|
|
8
|
+
-yes-> [Build Artifact]
|
|
9
|
+
-no-> [Test Report~] -> /Notify Dev/ -> (Fix & Retry)
|
|
10
|
+
|
|
11
|
+
[Build Artifact] -> <Environment?>
|
|
12
|
+
-staging-> [[Deploy to Staging]] -> /Run Smoke Tests/ -> <Smoke OK?>
|
|
13
|
+
-yes-> /Await Approval/
|
|
14
|
+
-no-> /Notify Team/ -> (Rollback)
|
|
15
|
+
-production-> [[Deploy to Prod]] -> /Health Check/ -> <Healthy?>
|
|
16
|
+
-yes-> (Done)
|
|
17
|
+
-no-> (Rollback)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
flowchart Order Processing Pipeline
|
|
2
|
+
|
|
3
|
+
(Receive Order) -> [Validate Input] -> <Valid?>
|
|
4
|
+
-yes-> [Check Inventory] -> <In Stock?>
|
|
5
|
+
-yes-> [[Process Payment]] -> <Payment OK?>
|
|
6
|
+
-yes-> [Ship Order] -> /Send Confirmation/ -> (Complete)
|
|
7
|
+
-no-> [Retry Payment] -> <Retries Left?>
|
|
8
|
+
-yes-> [[Process Payment]]
|
|
9
|
+
-no-> [Cancel Order] -> /Notify Customer/ -> (Failed)
|
|
10
|
+
-no-> /Notify Backorder/ -> <Accept Wait?>
|
|
11
|
+
-yes-> [Queue Order] -> [Check Inventory]
|
|
12
|
+
-no-> [Refund] -> (Cancelled)
|
|
13
|
+
-no-> [Log Validation Error~] -> /Show Error/ -> (Rejected)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
gantt Product Launch Plan — Full
|
|
2
|
+
start 2024-01-15
|
|
3
|
+
today-marker 2024-03-01
|
|
4
|
+
critical-path
|
|
5
|
+
dependencies
|
|
6
|
+
|
|
7
|
+
tag Team alias t
|
|
8
|
+
Engineering(blue)
|
|
9
|
+
Design(purple)
|
|
10
|
+
QA(orange)
|
|
11
|
+
Marketing(green)
|
|
12
|
+
|
|
13
|
+
tag Phase alias p
|
|
14
|
+
Foundation(green)
|
|
15
|
+
Growth(orange)
|
|
16
|
+
Launch(red)
|
|
17
|
+
|
|
18
|
+
era 2024-01-15 -> 2024-02-15 Investor Review
|
|
19
|
+
era 2024-03-10 -> 2024-03-14 GDC 2024 (purple)
|
|
20
|
+
marker 2024-02-26 Board Meeting
|
|
21
|
+
marker 2024-04-08 Trade Show Demo (orange)
|
|
22
|
+
|
|
23
|
+
// Independent task with offset — starts 8bd after project start
|
|
24
|
+
10bd Brand Guidelines | t: Design, p: Foundation, offset: 8bd
|
|
25
|
+
|
|
26
|
+
parallel
|
|
27
|
+
[Backend] | t: Engineering
|
|
28
|
+
30bd Database Layer | p: Foundation, 80%
|
|
29
|
+
10bd? Auth Module | p: Foundation, 100%
|
|
30
|
+
-blocks-> Frontend.API Integration | offset: -5bd
|
|
31
|
+
parallel
|
|
32
|
+
5bd Load Testing | t: QA, p: Growth
|
|
33
|
+
5bd Security Audit | t: QA, p: Growth
|
|
34
|
+
|
|
35
|
+
[Frontend] | t: Design
|
|
36
|
+
15bd Component Library | p: Foundation
|
|
37
|
+
10bd API Integration | t: Engineering, p: Growth
|
|
38
|
+
5bd Polish | p: Growth, 30%
|
|
39
|
+
|
|
40
|
+
[Marketing] | t: Marketing
|
|
41
|
+
10bd Landing Page | p: Growth
|
|
42
|
+
5bd Press Kit | p: Launch
|
|
43
|
+
-needs-> Landing Page
|
|
44
|
+
|
|
45
|
+
[Integration] | t: QA
|
|
46
|
+
10bd E2E Testing | p: Launch
|
|
47
|
+
-depends on-> Backend.Auth Module
|
|
48
|
+
// Final validation before release
|
|
49
|
+
0d Release Candidate | p: Launch
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
gantt Product Launch Plan
|
|
2
|
+
start 2024-01-15
|
|
3
|
+
today-marker 2024-03-01
|
|
4
|
+
critical-path
|
|
5
|
+
dependencies
|
|
6
|
+
|
|
7
|
+
tag Team alias t
|
|
8
|
+
Engineering(blue)
|
|
9
|
+
Design(purple)
|
|
10
|
+
QA(orange)
|
|
11
|
+
|
|
12
|
+
tag Phase alias p
|
|
13
|
+
Foundation(green)
|
|
14
|
+
Growth(orange)
|
|
15
|
+
|
|
16
|
+
era 2024-01-15 -> 2024-02-15 Investor Review
|
|
17
|
+
era 2024-03-10 -> 2024-03-14 GDC 2024 (purple)
|
|
18
|
+
marker 2024-02-26 Board Meeting
|
|
19
|
+
marker 2024-04-08 Trade Show Demo (orange)
|
|
20
|
+
|
|
21
|
+
// Independent task with offset — starts 8bd after project start
|
|
22
|
+
10bd Brand Guidelines | t: Design, p: Foundation, offset: 8bd
|
|
23
|
+
|
|
24
|
+
parallel
|
|
25
|
+
[Backend] | t: Engineering
|
|
26
|
+
30bd Database Layer | p: Foundation, 80%
|
|
27
|
+
10bd? Auth Module | p: Foundation, 100%
|
|
28
|
+
// Start frontend integration 5bd before Auth finishes (overlap)
|
|
29
|
+
-> Frontend.API Integration | offset: -5bd
|
|
30
|
+
parallel
|
|
31
|
+
5bd Load Testing | t: QA, p: Growth
|
|
32
|
+
5bd Security Audit | t: QA, p: Growth
|
|
33
|
+
|
|
34
|
+
[Frontend] | t: Design
|
|
35
|
+
15bd Component Library | p: Foundation
|
|
36
|
+
10bd API Integration | t: Engineering, p: Growth
|
|
37
|
+
5bd Polish | p: Growth, 30%
|
|
38
|
+
|
|
39
|
+
[Integration] | t: QA
|
|
40
|
+
10bd E2E Testing
|
|
41
|
+
// Final validation before release
|
|
42
|
+
0d Release Candidate
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
infra E-Commerce Platform — Full Infrastructure
|
|
2
|
+
|
|
3
|
+
tag Team alias t
|
|
4
|
+
Backend(blue)
|
|
5
|
+
Platform(teal)
|
|
6
|
+
Data(purple)
|
|
7
|
+
|
|
8
|
+
tag Tier alias r
|
|
9
|
+
Edge(green)
|
|
10
|
+
Core(blue)
|
|
11
|
+
Storage(orange)
|
|
12
|
+
|
|
13
|
+
edge
|
|
14
|
+
rps: 15000
|
|
15
|
+
-> CloudFront
|
|
16
|
+
|
|
17
|
+
CloudFront is a network | t: Platform, r: Edge
|
|
18
|
+
description: CDN — edge cache with 200+ PoPs
|
|
19
|
+
cache-hit: 85%
|
|
20
|
+
-> WAF
|
|
21
|
+
|
|
22
|
+
WAF is a gateway | t: Platform, r: Edge
|
|
23
|
+
description: Web Application Firewall — bot protection and rate limiting
|
|
24
|
+
firewall-block: 8%
|
|
25
|
+
-> ALB
|
|
26
|
+
|
|
27
|
+
ALB is a gateway | t: Platform, r: Core
|
|
28
|
+
-/api-> [API Tier] | split: 50%
|
|
29
|
+
-/shop-> [Commerce Tier] | split: 35%
|
|
30
|
+
-/static-> StaticBucket | split: 15%
|
|
31
|
+
|
|
32
|
+
[API Tier] | t: Backend, r: Core
|
|
33
|
+
APIServer is a service
|
|
34
|
+
description: Core REST API — auth, catalog, user profiles
|
|
35
|
+
instances: 4
|
|
36
|
+
max-rps: 800
|
|
37
|
+
latency-ms: 35
|
|
38
|
+
cb-error-threshold: 50%
|
|
39
|
+
-> Redis | fanout: 2
|
|
40
|
+
-> PostgreSQL
|
|
41
|
+
~order.placed~> EventBus
|
|
42
|
+
|
|
43
|
+
[Commerce Tier] | t: Backend, r: Core
|
|
44
|
+
CheckoutSvc is a service
|
|
45
|
+
description: Checkout and payment orchestration
|
|
46
|
+
instances: 2-10
|
|
47
|
+
max-rps: 400
|
|
48
|
+
latency-ms: 100
|
|
49
|
+
-> PaymentGW
|
|
50
|
+
-> PostgreSQL
|
|
51
|
+
~payment.confirmed~> EventBus
|
|
52
|
+
PaymentGW is a gateway
|
|
53
|
+
description: Stripe/Adyen payment gateway proxy
|
|
54
|
+
latency-ms: 250
|
|
55
|
+
|
|
56
|
+
Redis is a cache | t: Data, r: Storage
|
|
57
|
+
description: Session store and query cache
|
|
58
|
+
latency-ms: 2
|
|
59
|
+
|
|
60
|
+
PostgreSQL is a database | t: Data, r: Storage
|
|
61
|
+
description: Primary relational store — orders, users, catalog
|
|
62
|
+
latency-ms: 8
|
|
63
|
+
|
|
64
|
+
EventBus is a queue | t: Platform, r: Core
|
|
65
|
+
description: Async event backbone (Kafka)
|
|
66
|
+
~analytics~> ClickHouse
|
|
67
|
+
~notifications~> NotifySvc
|
|
68
|
+
|
|
69
|
+
ClickHouse is a database | t: Data, r: Storage
|
|
70
|
+
description: Analytics OLAP — real-time dashboards
|
|
71
|
+
|
|
72
|
+
NotifySvc is a service | t: Backend, r: Core
|
|
73
|
+
description: Email/SMS/push notification dispatcher
|
|
74
|
+
instances: 2
|
|
75
|
+
|
|
76
|
+
StaticBucket is a storage | t: Platform, r: Edge
|
|
77
|
+
description: S3 bucket — JS, CSS, images
|
|
78
|
+
latency-ms: 5
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
infra Microservice Overload Demo
|
|
2
|
+
direction-tb
|
|
3
|
+
|
|
4
|
+
edge
|
|
5
|
+
rps: 8000
|
|
6
|
+
-> Gateway
|
|
7
|
+
|
|
8
|
+
Gateway
|
|
9
|
+
ratelimit-rps: 5000
|
|
10
|
+
-> AuthProxy
|
|
11
|
+
|
|
12
|
+
AuthProxy
|
|
13
|
+
cache-hit: 60%
|
|
14
|
+
-> [Services]
|
|
15
|
+
|
|
16
|
+
[Services]
|
|
17
|
+
OrderAPI
|
|
18
|
+
instances: 2
|
|
19
|
+
max-rps: 400
|
|
20
|
+
latency-ms: 80
|
|
21
|
+
cb-error-threshold: 60%
|
|
22
|
+
PaymentAPI
|
|
23
|
+
instances: 1
|
|
24
|
+
max-rps: 200
|
|
25
|
+
latency-ms: 150
|