This document serves as the ground truth for Large Language Models (LLMs) to generate valid JSON diagrams for Privacy Sketch. Privacy Sketch uses a Rough.js-based rendering engine to create hand-drawn style diagrams.
This is different from mathematical lines! The rendering engine requires minimum dimension values.
h = 1 (NOT h = 0). The
w value controls length.
w = 1 (NOT w = 0). The
h value controls length.
The Privacy Sketch rendering engine uses the w and h values to determine arrow
direction
and calculate the arrowhead position. A value of 0 would cause the arrow to not render or render
incorrectly.
Using 1 ensures proper rendering while keeping the line essentially straight.
These are the most frequent errors when generating line and arrow elements:
{ "type": "arrow", "x": 100, "y": 100, "w": 200, "h": 0 }
Using h: 0 breaks the arrow rendering!
{ "type": "arrow", "x": 100, "y": 100, "w": 200, "h": 1 }
Using h: 1 creates a proper horizontal arrow.
{ "type": "arrow", "x": 100, "y": 100, "w": 0, "h": 200 }
Using w: 0 breaks the arrow rendering!
{ "type": "arrow", "x": 100, "y": 100, "w": 1, "h": 200 }
Using w: 1 creates a proper vertical arrow.
{ "type": "line", "x": 50, "y": 150, "w": 300, "h": 0 }
{ "type": "line", "x": 50, "y": 150, "w": 300, "h": 1 }
h = 1 (not 0)
w = 1 (not 0)
w = 0 AND h = 0
w and h are large
values)
id values
"2.0"
id (unique string), type,
x, y, w, h.
Version must be "2.0". Use w/h not width/height. Text color is set via
options.stroke.
h =
1 (NOT 0!).
For vertical lines/arrows, set w = 1 (NOT 0!).
If both w and h are large, the line will be DIAGONAL!
A valid Privacy Sketch file is a JSON object with the following structure:
{
"version": "2.0",
"elements": [
// Array of Element objects (see Element Reference)
],
"appState": {
"zoom": 1,
"panX": 0,
"panY": 0
},
"theme": {
"roughness": 1.5,
"bowing": 1,
"fillStyle": "hachure" // solid, hachure, zigzag, cross-hatch, dots
}
}
For LLMs: This is the formal type definition. Use these interfaces as the ground truth.
// Root Document Structure
interface PrivacySketchDocument {
version: "2.0"; // REQUIRED - must be exactly "2.0"
elements: Element[]; // REQUIRED - array of elements
appState?: AppState; // OPTIONAL - viewport settings
theme?: Theme; // OPTIONAL - global style defaults
}
// Shared base for ALL elements
interface BaseElement {
id: string; // REQUIRED - unique identifier
type: ElementType; // REQUIRED - element type
x: number; // REQUIRED - left edge X coordinate
y: number; // REQUIRED - top edge Y coordinate
w: number; // REQUIRED - width in pixels
h: number; // REQUIRED - height in pixels
angle?: number; // OPTIONAL - rotation in radians, default: 0
borderRadius?: number; // OPTIONAL - corner radius, default: 0
options?: StyleOptions; // OPTIONAL - visual styling
animation?: Animation; // OPTIONAL - animation settings
}
type ElementType =
| "rectangle" | "ellipse" | "diamond" | "cloud"
| "cylinder" | "actor" | "line" | "arrow"
| "curvedArrow" | "text" | "icon" | "tablerIcon" | "group";
interface StyleOptions {
stroke?: string; // Border color
strokeWidth?: number; // Border thickness (default: 2)
fill?: string; // Fill color or "transparent"
fillStyle?: FillStyle; // Fill pattern
roughness?: number; // Sketchiness 0-5 (default: 1.5)
bowing?: number; // Line curvature (default: 1)
lineStyle?: "solid" | "dashed" | "dotted";
seed?: number; // Random seed for consistent rendering
}
type FillStyle = "solid" | "hachure" | "zigzag" | "cross-hatch" | "dots" | "dashed" | "zigzag-line";
Privacy Sketch uses a standard screen coordinate system:
(0,0) ────────────────────────► X (increases right)
│
│ ┌───────────────┐
│ │ x:100, y:50 │
│ │ w:200, h:100 │
│ └───────────────┘
│
▼
Y (increases down)
| Property | Description | Typical Range |
|---|---|---|
x |
Distance from left edge of canvas to left edge of element | 0 - 1400 |
y |
Distance from top edge of canvas to top edge of element | 0 - 1000 |
w |
Width of the element's bounding box | 50 - 400 |
h |
Height of the element's bounding box | 30 - 300 |
| Rule | ✅ Valid | ❌ Invalid |
|---|---|---|
| Must be unique across all elements | "box-1", "box-2" |
Two elements with same id |
| Use kebab-case convention | "user-profile", "stage-dev" |
"user profile" |
| Only alphanumeric + hyphens | "arrow-a1", "text-title" |
"arrow@1", "text#1" |
| Start with letter | "a1", "box1" |
"1box" |
Recommended pattern: {type}-{purpose} e.g., "rect-header",
"arrow-flow1", "text-title"
The options object controls the visual style of elements. All properties are optional.
| Property | Type / Values | Description | Example |
|---|---|---|---|
stroke |
Color String (Hex, Name) | Border color of the shape. | "#000000", "blue.500" |
strokeWidth |
Number | Thickness of the border lines. | 2 (default), 4 |
fill |
Color String | "transparent" |
Fill color. Use "transparent" for no fill. | "#ff0000", "rgba(0,0,255,0.5)" |
fillStyle |
Enum: "hachure", "solid", "zigzag", "cross-hatch",
"dots", "dashed", "zigzag-line"
|
Pattern used to fill the shape. "solid" fills completely. | "hachure" (sketchy default) |
roughness |
Number (0 - 5) | How "sketchy" the lines look. 0 is perfect/flat, higher is messier. | 1.5 (default), 0 (clean) |
bowing |
Number | How much lines curve. Higher values look more organic. | 1 (default) |
lineStyle |
Enum: "solid", "dashed", "dotted" |
Style of the stroke lines. | "solid" |
seed |
Number | Random seed for Rough.js generation. Keep constant to prevent jitter on re-render. | 12345 |
Colors can be specified in multiple formats:
| Format | Example | Notes |
|---|---|---|
| Hex (6-digit) | "#ff5733", "#1e293b" |
Most reliable |
| Hex (3-digit) | "#f00", "#0af" |
Expands to 6-digit |
| Tailwind Token | "blue.500", "green.900" |
Semantic colors |
| Named | "black", "white", "transparent" |
CSS named colors |
| RGBA | "rgba(255,0,0,0.5)" |
With transparency |
Format: {colorName}.{shade}. Available shades: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950
.500 for standard color, .200-.300 for light fills,
.700-.900 for dark backgrounds.
Failure to follow these rules will result in broken or diagonal lines/arrows!
h = 1 (NOT h = 0)w = 1 (NOT w = 0)w = 0 or h = 0 — this breaks rendering!Arrow and line coordinates define a bounding box, NOT traditional start/end points:
Arrow: { x: 200, y: 100, w: 150, h: 1 } // ← Note: h=1 for horizontal!
Start Point = (x, y) = (200, 100)
End Point = (x + w, y + h) = (350, 101) // Essentially horizontal
h = 1 (NOT 0!). The w
controls the length.w = 1 (NOT 0!). The h
controls the length.w and h are large, the line/arrow will be DIAGONAL,
not straight!| Direction | w value |
h value |
Result |
|---|---|---|---|
| → Horizontal Right | positive (length) | 1 to 5 | Straight horizontal line pointing right |
| ← Horizontal Left | negative (length) | 1 to 5 | Straight horizontal line pointing left |
| ↓ Vertical Down | 1 to 5 | positive (length) | Straight vertical line pointing down |
| ↑ Vertical Up | 1 to 5 | negative (length) | Straight vertical line pointing up |
| ↘ Diagonal | positive (both large) | positive (both large) | Diagonal line (intentional) |
// ✅ CORRECT: Horizontal arrow (h is small)
{ "type": "arrow", "x": 100, "y": 200, "w": 150, "h": 2, "endArrowhead": "arrow" }
// ✅ CORRECT: Vertical arrow (w is small)
{ "type": "arrow", "x": 100, "y": 200, "w": 2, "h": 100, "endArrowhead": "arrow" }
// ❌ WRONG: This creates a DIAGONAL arrow, not horizontal!
{ "type": "arrow", "x": 100, "y": 200, "w": 150, "h": 50, "endArrowhead": "arrow" }
// ❌ WRONG: This creates a DIAGONAL arrow, not vertical!
{ "type": "arrow", "x": 100, "y": 200, "w": 80, "h": 100, "endArrowhead": "arrow" }
Box A: { x: 50, y: 100, w: 100, h: 60 }
Box B: { x: 250, y: 100, w: 100, h: 60 }
// Arrow from right edge of A to left edge of B (horizontal)
Arrow: { "x": 150, "y": 130, "w": 100, "h": 1, "endArrowhead": "arrow" }
// ↑ h=1 makes it perfectly horizontal!
| Property | Values | Description |
|---|---|---|
startArrowhead |
"none", "arrow", "dot" |
Arrowhead at start point (x, y) |
endArrowhead |
"none", "arrow", "dot" |
Arrowhead at end point (x+w, y+h) |
| Property | Type | Required | Default |
|---|---|---|---|
text |
string | ✅ Yes | - |
fontSize |
number | No | 16 |
fontFamily |
string | No | "Comic Sans MS" |
align |
"left" | "center" | "right" | No | "left" |
fontWeight |
"normal" | "bold" | No | "normal" |
fontStyle |
"normal" | "italic" | No | "normal" |
backgroundColor |
color | null | No | null |
options.stroke sets the TEXT COLOR."animation": { "type": "fadeIn", "delay": 500, "duration": 300 }
| type | Description |
|---|---|
"none" |
No animation (default) |
"fadeIn" |
Fade in from transparent |
"slideIn" |
Slide in from off-screen |
"bounce" |
Bounce entrance effect |
Use these element types in the elements array. All elements share base properties:
id, type, x, y, w, h, angle, options.
{
"type": "rectangle",
"x": 100,
"y": 100,
"w": 200,
"h": 100,
"borderRadius": 10,
"options": {
"fill": "blue.200",
"stroke": "black"
}
}
{
"type": "ellipse",
"x": 100,
"y": 100,
"w": 100,
"h": 100,
"options": {
"fill": "red.200"
}
}
{
"type": "text",
"x": 100,
"y": 100,
"w": 200,
"h": 50,
"text": "Hello World",
"fontSize": 20,
"align": "center",
"fontFamily": "Comic Sans MS",
"options": {
"stroke": "black"
}
}
h: 1. For
vertical arrows use w: 1.
// Horizontal arrow (h=1 is MANDATORY!)
{
"type": "arrow",
"x": 100,
"y": 100,
"w": 150, // Length of horizontal arrow
"h": 1, // ← MUST be 1, NOT 0!
"endArrowhead": "arrow"
}
// Vertical arrow (w=1 is MANDATORY!)
{
"type": "arrow",
"x": 100,
"y": 100,
"w": 1, // ← MUST be 1, NOT 0!
"h": 100, // Length of vertical arrow
"endArrowhead": "arrow"
}
{
"type": "curvedArrow",
"x": 100,
"y": 100,
"w": 200,
"h": 100,
"controlX": 0,
"controlY": -50,
"options": {
"stroke": "black"
}
}
{
"type": "icon",
"x": 100,
"y": 100,
"w": 64,
"h": 64,
"iconCategory": "technology",
"iconName": "server",
"options": {
"stroke": "black"
}
}
{
"type": "tablerIcon",
"x": 100,
"y": 100,
"w": 64,
"h": 64,
"iconName": "EC2",
"svgContent": "",
"options": {
"stroke": "orange.500"
}
}
children - Array of element IDs that belong to this groupx, y, w, h - Bounding box (auto-calculated from children){
"type": "group",
"id": "my-group",
"x": 100,
"y": 100,
"w": 300,
"h": 200,
"children": [
"element-id-1",
"element-id-2",
"element-id-3"
]
}
{
"type": "diamond",
"x": 0,
"y": 0,
"w": 100,
"h": 100
}
{
"type": "cylinder",
"x": 0,
"y": 0,
"w": 80,
"h": 120
}
{
"type": "cloud",
"x": 0,
"y": 0,
"w": 150,
"h": 100
}
{
"type": "actor",
"x": 0,
"y": 0,
"w": 60,
"h": 100
}
h: 1. For
vertical lines use w: 1.
// Horizontal line (h=1 is MANDATORY!)
{
"type": "line",
"x": 50,
"y": 150,
"w": 200, // Length of horizontal line
"h": 1 // ← MUST be 1, NOT 0!
}
// Vertical line (w=1 is MANDATORY!)
{
"type": "line",
"x": 150,
"y": 50,
"w": 1, // ← MUST be 1, NOT 0!
"h": 200 // Length of vertical line
}
Use the icon element type. Set iconCategory and iconName.
peopleemojigesturesbusinesstechnologyobjectsarrowsnaturesymbolschartssocialWhen to use: For cloud architecture diagrams, infrastructure diagrams, serverless architectures, or any diagram involving cloud services.
Use the tablerIcon element type with iconName set to the service name:
// AWS Lambda function icon
{
"type": "tablerIcon",
"id": "lambda-fn",
"x": 100, "y": 100, "w": 64, "h": 64,
"iconName": "Lambda",
"iconProvider": "aws"
}
// Azure Function icon
{
"type": "tablerIcon",
"id": "azure-fn",
"x": 200, "y": 100, "w": 64, "h": 64,
"iconName": "Functions",
"iconProvider": "azure"
}
// GCP Cloud Function icon
{
"type": "tablerIcon",
"id": "gcp-fn",
"x": 300, "y": 100, "w": 64, "h": 64,
"iconName": "Cloud Functions",
"iconProvider": "gcp"
}
| Use Case | AWS | Azure | GCP |
|---|---|---|---|
| Compute/VMs | EC2 |
Virtual Machine |
Compute Engine |
| Serverless Functions | Lambda |
Functions |
Cloud Functions |
| Object Storage | S3 |
Blob Storage |
Cloud Storage |
| SQL Database | RDS |
SQL Database |
Cloud SQL |
| NoSQL Database | DynamoDB |
Cosmos DB |
Firestore |
| Container Service | ECS / EKS |
Container Instances |
Cloud Run |
| API Gateway | API Gateway |
API Management |
API Gateway |
| CDN | CloudFront |
CDN |
Cloud CDN |
| Message Queue | SQS |
Service Bus |
Pub/Sub |
When to use: For general diagrams, flowcharts, infographics, or when you need icons that aren't cloud-specific.
user, database,
server, shield, lock, mail, etc.
// User icon from Tabler
{
"type": "tablerIcon",
"id": "user-icon",
"x": 100, "y": 100, "w": 48, "h": 48,
"iconName": "user"
}
// Database icon
{
"type": "tablerIcon",
"id": "db-icon",
"x": 200, "y": 100, "w": 48, "h": 48,
"iconName": "database"
}
Below are the complete lists of available icons for each cloud provider:
aws)azure)gcp)These examples demonstrate how to translate natural language prompts into valid Privacy Sketch JSON.
Prompt: "Create a CI/CD pipeline diagram showing flow from GitHub to Production."
{
"version": "2.0",
"elements": [
{
"id": "bg",
"type": "rectangle",
"x": 20,
"y": 20,
"w": 1300,
"h": 600,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0f172a",
"strokeWidth": 3,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1258370948,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "title",
"type": "text",
"x": 350,
"y": 40,
"w": 600,
"h": 35,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e2e8f0",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1407304900,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd04 CI/CD Pipeline Architecture",
"fontSize": 28,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "subtitle",
"type": "text",
"x": 400,
"y": 75,
"w": 500,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 619382392,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Automated Build, Test & Deploy with GitHub Actions",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stage-dev",
"type": "rectangle",
"x": 40,
"y": 110,
"w": 220,
"h": 480,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "#172554",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 392233408,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stage-dev-t",
"type": "text",
"x": 40,
"y": 125,
"w": 220,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1192690153,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcbb DEV",
"fontSize": 16,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stage-ci",
"type": "rectangle",
"x": 280,
"y": 110,
"w": 280,
"h": 480,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 404058000,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stage-ci-t",
"type": "text",
"x": 280,
"y": 125,
"w": 280,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 53201848,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2705 CONTINUOUS INTEGRATION",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stage-cd",
"type": "rectangle",
"x": 580,
"y": 110,
"w": 280,
"h": 480,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1894797527,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stage-cd-t",
"type": "text",
"x": 580,
"y": 125,
"w": 280,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1724529706,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\ude80 CONTINUOUS DELIVERY",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stage-prod",
"type": "rectangle",
"x": 880,
"y": 110,
"w": 420,
"h": 480,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "#4c1d95",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1706785255,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stage-prod-t",
"type": "text",
"x": 880,
"y": 125,
"w": 420,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#a78bfa",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1674850497,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2601\ufe0f PRODUCTION DEPLOY",
"fontSize": 16,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "github",
"type": "rectangle",
"x": 60,
"y": 170,
"w": 180,
"h": 80,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "#6e7681",
"strokeWidth": 2,
"fill": "#21262d",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1948345572,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "github-icon",
"type": "text",
"x": 60,
"y": 185,
"w": 180,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1454659970,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udc19",
"fontSize": 28,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "github-t",
"type": "text",
"x": 60,
"y": 220,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e6edf3",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1413415405,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "GitHub Repo",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "commit",
"type": "rectangle",
"x": 60,
"y": 280,
"w": 180,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 654613835,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "commit-t",
"type": "text",
"x": 60,
"y": 300,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 631641005,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcdd Git Commit",
"fontSize": 13,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "pr",
"type": "rectangle",
"x": 60,
"y": 370,
"w": 180,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1403482274,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "pr-t",
"type": "text",
"x": 60,
"y": 390,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1585592657,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd00 Pull Request",
"fontSize": 13,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a3",
"type": "arrow",
"x": 240,
"y": 400,
"w": 50,
"h": 100,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 49310459,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "trigger",
"type": "diamond",
"x": 305,
"y": 180,
"w": 80,
"h": 60,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1888530568,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "trigger-t",
"type": "text",
"x": 305,
"y": 200,
"w": 80,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1091312742,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Trigger",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "lint",
"type": "rectangle",
"x": 300,
"y": 260,
"w": 120,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1460928205,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "lint-icon",
"type": "text",
"x": 300,
"y": 270,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2127220689,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd0d",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "lint-t",
"type": "text",
"x": 300,
"y": 295,
"w": 120,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 524077933,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Lint & Format",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "test",
"type": "rectangle",
"x": 440,
"y": 260,
"w": 100,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 283219426,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "test-icon",
"type": "text",
"x": 440,
"y": 270,
"w": 100,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1563229605,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83e\uddea",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "test-t",
"type": "text",
"x": 440,
"y": 295,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 965409256,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Unit Tests",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "build",
"type": "rectangle",
"x": 300,
"y": 340,
"w": 120,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1924941564,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "build-icon",
"type": "text",
"x": 300,
"y": 350,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1576330040,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83c\udfd7\ufe0f",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "build-t",
"type": "text",
"x": 300,
"y": 375,
"w": 120,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1585555683,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Build",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "security",
"type": "rectangle",
"x": 440,
"y": 340,
"w": 100,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 177558803,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "security-icon",
"type": "text",
"x": 440,
"y": 350,
"w": 100,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 308340364,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd12",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "security-t",
"type": "text",
"x": 440,
"y": 375,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 636614010,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Security Scan",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "artifact",
"type": "rectangle",
"x": 340,
"y": 420,
"w": 160,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1820904179,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "artifact-icon",
"type": "text",
"x": 340,
"y": 430,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1153632164,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udce6",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "artifact-t",
"type": "text",
"x": 340,
"y": 455,
"w": 160,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1658349461,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Docker Image",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a9",
"type": "arrow",
"x": 500,
"y": 450,
"w": 90,
"h": 100,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1743569696,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "staging",
"type": "rectangle",
"x": 600,
"y": 180,
"w": 120,
"h": 70,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2119464985,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "staging-icon",
"type": "text",
"x": 600,
"y": 195,
"w": 120,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 984750918,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83c\udfad",
"fontSize": 22,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "staging-t",
"type": "text",
"x": 600,
"y": 225,
"w": 120,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2060441212,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Staging",
"fontSize": 13,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "e2e",
"type": "rectangle",
"x": 600,
"y": 280,
"w": 120,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 462817975,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "e2e-icon",
"type": "text",
"x": 600,
"y": 290,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 834684321,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd04",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "e2e-t",
"type": "text",
"x": 600,
"y": 315,
"w": 120,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1762881670,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "E2E Tests",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "perf",
"type": "rectangle",
"x": 740,
"y": 280,
"w": 100,
"h": 55,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1332142383,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "perf-icon",
"type": "text",
"x": 740,
"y": 290,
"w": 100,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "black",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 230722647,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u26a1",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "perf-t",
"type": "text",
"x": 740,
"y": 315,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1329897755,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Perf Tests",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "approval",
"type": "diamond",
"x": 680,
"y": 360,
"w": 100,
"h": 80,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1732468586,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "approval-t",
"type": "text",
"x": 680,
"y": 390,
"w": 100,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1509446872,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Approval?",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a13",
"type": "arrow",
"x": 780,
"y": 400,
"w": 110,
"h": 100,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#a78bfa",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 805409025,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "aws",
"type": "rectangle",
"x": 900,
"y": 170,
"w": 180,
"h": 90,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "orange.500",
"strokeWidth": 2,
"fill": "orange.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 628690880,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "aws-icon",
"type": "text",
"x": 900,
"y": 185,
"w": 180,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 624423520,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2601\ufe0f AWS",
"fontSize": 20,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "aws-t",
"type": "text",
"x": 900,
"y": 225,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.200",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 215948313,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "ECS + CloudFront",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "gcp",
"type": "rectangle",
"x": 1100,
"y": 170,
"w": 180,
"h": 90,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 807681331,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "gcp-icon",
"type": "text",
"x": 1100,
"y": 185,
"w": 180,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 853608476,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2601\ufe0f GCP",
"fontSize": 20,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "gcp-t",
"type": "text",
"x": 1100,
"y": 225,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.200",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1862964699,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Cloud Run + CDN",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "monitor",
"type": "rectangle",
"x": 900,
"y": 290,
"w": 180,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "#6d28d9",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1275985187,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "monitor-t",
"type": "text",
"x": 900,
"y": 310,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#c4b5fd",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 284758887,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcca Datadog Monitor",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "alerts",
"type": "rectangle",
"x": 1100,
"y": 290,
"w": 180,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "#6d28d9",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 952633544,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "alerts-t",
"type": "text",
"x": 1100,
"y": 310,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#c4b5fd",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 549323281,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd14 PagerDuty Alerts",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "rollback",
"type": "rectangle",
"x": 1000,
"y": 380,
"w": 180,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "red.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 674314592,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "rollback-t",
"type": "text",
"x": 1000,
"y": 400,
"w": 180,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 293946674,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd19 Auto Rollback",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "success",
"type": "ellipse",
"x": 1000,
"y": 470,
"w": 180,
"h": 70,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 3,
"fill": "green.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2011844252,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "success-t",
"type": "text",
"x": 1000,
"y": 495,
"w": 180,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1530700922,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2705 LIVE!",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "legend",
"type": "rectangle",
"x": 60,
"y": 465,
"w": 180,
"h": 100,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "#334155",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 619117584,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "legend-t",
"type": "text",
"x": 70,
"y": 480,
"w": 160,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e2e8f0",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 449013706,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u23f1\ufe0f Pipeline Stats",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "legend-1",
"type": "text",
"x": 70,
"y": 505,
"w": 160,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 102480752,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Avg Build: 4m 32s",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "legend-2",
"type": "text",
"x": 70,
"y": 525,
"w": 160,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1231122347,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Deploy: 2m 15s",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "legend-3",
"type": "text",
"x": 70,
"y": 545,
"w": 160,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.400",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1799422280,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Success Rate: 98.5%",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "footer",
"type": "text",
"x": 450,
"y": 600,
"w": 400,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1601309434,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2728 Created with Privacy Sketch",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
}
],
"appState": {
"zoom": 0.9999999999999999,
"panX": 277,
"panY": 105
},
"theme": {
"roughness": 1.8,
"bowing": 1.2,
"fillStyle": "solid"
}
}
Prompt: "Draw a timeline showing the history of web development from 1991 to 2024."
{
"version": "2.0",
"elements": [
{
"id": "bg",
"type": "rectangle",
"x": 20,
"y": 20,
"w": 1100,
"h": 700,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#1e293b",
"strokeWidth": 3,
"fill": "#0f172a",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1119607021,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "title",
"type": "text",
"x": 250,
"y": 40,
"w": 600,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e2e8f0",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1026638657,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83c\udf10 Evolution of Web Development",
"fontSize": 32,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "subtitle",
"type": "text",
"x": 300,
"y": 85,
"w": 500,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1593443138,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "From Static HTML to Full-Stack Frameworks (1991-2024)",
"fontSize": 15,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "timeline",
"type": "line",
"x": 100,
"y": 420,
"w": 872,
"h": 7,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 4,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1319302490,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era1-bg",
"type": "rectangle",
"x": 60,
"y": 130,
"w": 160,
"h": 250,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1834437370,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era1-year",
"type": "text",
"x": 60,
"y": 145,
"w": 160,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1044285243,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "1991-1996",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era1-title",
"type": "text",
"x": 60,
"y": 175,
"w": 160,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 279910279,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcc4 Static Era",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era1-html",
"type": "rectangle",
"x": 75,
"y": 215,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "orange.500",
"strokeWidth": 2,
"fill": "orange.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1932608443,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era1-html-t",
"type": "text",
"x": 75,
"y": 228,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 311402978,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "<HTML>",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era1-css",
"type": "rectangle",
"x": 75,
"y": 270,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1217144402,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era1-css-t",
"type": "text",
"x": 75,
"y": 283,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1981077080,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "{CSS}",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era1-desc",
"type": "text",
"x": 70,
"y": 330,
"w": 140,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 341707605,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Tables for layout\nNo interactivity",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era1-node",
"type": "ellipse",
"x": 115,
"y": 400,
"w": 50,
"h": 50,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.500",
"strokeWidth": 3,
"fill": "orange.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 57843394,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era2-bg",
"type": "rectangle",
"x": 250,
"y": 130,
"w": 160,
"h": 250,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 648977251,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era2-year",
"type": "text",
"x": 250,
"y": 145,
"w": 160,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 754385426,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "1997-2005",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era2-title",
"type": "text",
"x": 250,
"y": 175,
"w": 160,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "yellow.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1331779978,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u26a1 Dynamic Era",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era2-js",
"type": "rectangle",
"x": 265,
"y": 215,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "yellow.500",
"strokeWidth": 2,
"fill": "yellow.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 103260619,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era2-js-t",
"type": "text",
"x": 265,
"y": 228,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "yellow.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1896226416,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "JavaScript",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era2-php",
"type": "rectangle",
"x": 265,
"y": 270,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "#5b21b6",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1808147257,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era2-php-t",
"type": "text",
"x": 265,
"y": 283,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#c4b5fd",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 176774432,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "PHP/ASP",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era2-desc",
"type": "text",
"x": 260,
"y": 330,
"w": 140,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1756635155,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Server-side\nFlash animations",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era2-node",
"type": "ellipse",
"x": 305,
"y": 400,
"w": 50,
"h": 50,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "yellow.500",
"strokeWidth": 3,
"fill": "yellow.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1532675698,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era3-bg",
"type": "rectangle",
"x": 440,
"y": 130,
"w": 160,
"h": 250,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1943692160,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era3-year",
"type": "text",
"x": 440,
"y": 145,
"w": 160,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 610443289,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2006-2012",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era3-title",
"type": "text",
"x": 440,
"y": 175,
"w": 160,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 871113416,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcda Library Era",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era3-jq",
"type": "rectangle",
"x": 455,
"y": 215,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "#0ea5e9",
"strokeWidth": 2,
"fill": "#0c4a6e",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1979273412,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era3-jq-t",
"type": "text",
"x": 455,
"y": 228,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#7dd3fc",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 413593277,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "jQuery",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era3-ajax",
"type": "rectangle",
"x": 455,
"y": 270,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1585284966,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era3-ajax-t",
"type": "text",
"x": 455,
"y": 283,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1265811995,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "AJAX",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era3-desc",
"type": "text",
"x": 450,
"y": 330,
"w": 140,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1261480636,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "DOM manipulation\nWeb 2.0",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era3-node",
"type": "ellipse",
"x": 495,
"y": 400,
"w": 50,
"h": 50,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 3,
"fill": "green.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 206853400,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era4-bg",
"type": "rectangle",
"x": 630,
"y": 130,
"w": 160,
"h": 250,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1427254052,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era4-year",
"type": "text",
"x": 630,
"y": 145,
"w": 160,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 625688568,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2013-2019",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era4-title",
"type": "text",
"x": 630,
"y": 175,
"w": 160,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1955090185,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u269b\ufe0f SPA Era",
"fontSize": 18,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era4-react",
"type": "rectangle",
"x": 645,
"y": 215,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "cyan.500",
"strokeWidth": 2,
"fill": "cyan.900",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1074830371,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era4-react-t",
"type": "text",
"x": 645,
"y": 228,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "cyan.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1848262837,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "React",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era4-vue",
"type": "rectangle",
"x": 645,
"y": 270,
"w": 130,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 504015456,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era4-vue-t",
"type": "text",
"x": 645,
"y": 283,
"w": 130,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1932812038,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Vue/Angular",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era4-desc",
"type": "text",
"x": 640,
"y": 330,
"w": 140,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1229749576,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Components\nVirtual DOM",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era4-node",
"type": "ellipse",
"x": 685,
"y": 400,
"w": 50,
"h": 50,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.500",
"strokeWidth": 3,
"fill": "blue.700",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2051840896,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-bg",
"type": "rectangle",
"x": 820,
"y": 130,
"w": 280,
"h": 250,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 3,
"fill": "#1e1b4b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1255531507,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-year",
"type": "text",
"x": 820,
"y": 145,
"w": 280,
"h": 22,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#c4b5fd",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 51548007,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2020-2024",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-title",
"type": "text",
"x": 820,
"y": 175,
"w": 280,
"h": 30,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#a78bfa",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 142268291,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\ude80 Full-Stack Era",
"fontSize": 20,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-next",
"type": "rectangle",
"x": 835,
"y": 215,
"w": 120,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "#f8fafc",
"strokeWidth": 2,
"fill": "#18181b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 14982034,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-next-t",
"type": "text",
"x": 835,
"y": 228,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#f8fafc",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1707957915,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Next.js",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-nuxt",
"type": "rectangle",
"x": 965,
"y": 215,
"w": 120,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1499048056,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-nuxt-t",
"type": "text",
"x": 965,
"y": 228,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1960079248,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Nuxt",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-ts",
"type": "rectangle",
"x": 835,
"y": 270,
"w": 120,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1396754685,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-ts-t",
"type": "text",
"x": 835,
"y": 283,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1933500329,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "TypeScript",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-ai",
"type": "rectangle",
"x": 965,
"y": 270,
"w": 120,
"h": 45,
"angle": 0,
"borderRadius": 8,
"options": {
"stroke": "pink.500",
"strokeWidth": 2,
"fill": "pink.800",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1799803798,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-ai-t",
"type": "text",
"x": 965,
"y": 283,
"w": 120,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "pink.300",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1856431085,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "AI Copilots",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-desc",
"type": "text",
"x": 840,
"y": 330,
"w": 240,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#a78bfa",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1980456423,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "SSR/SSG \u2022 Edge \u2022 AI-assisted coding",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "era5-node",
"type": "ellipse",
"x": 935,
"y": 400,
"w": 50,
"h": 50,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 3,
"fill": "#6d28d9",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 27575602,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "era5-star",
"type": "star",
"x": 1070,
"y": 145,
"w": 25,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.400",
"strokeWidth": 2,
"fill": "amber.300",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1751442239,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"points": 5
},
{
"id": "stats",
"type": "rectangle",
"x": 60,
"y": 480,
"w": 280,
"h": 120,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 792319740,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stats-t",
"type": "text",
"x": 70,
"y": 495,
"w": 260,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e2e8f0",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 282182772,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcc8 Key Milestones",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat1",
"type": "text",
"x": 70,
"y": 525,
"w": 260,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "yellow.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1427361237,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "1995: JavaScript in 10 days",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat2",
"type": "text",
"x": 70,
"y": 545,
"w": 260,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0ea5e9",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 113364870,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2006: jQuery changes everything",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat3",
"type": "text",
"x": 70,
"y": 565,
"w": 260,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "cyan.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 602503392,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2013: React revolutionizes UI",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat4",
"type": "text",
"x": 70,
"y": 585,
"w": 260,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1225565144,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "2024: 33+ years of web evolution",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "trend",
"type": "rectangle",
"x": 360,
"y": 480,
"w": 300,
"h": 120,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "#1e293b",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1453898104,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "trend-t",
"type": "text",
"x": 370,
"y": 495,
"w": 280,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#e2e8f0",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1418963606,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd2e 2025 Trends",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "trend1",
"type": "text",
"x": 370,
"y": 525,
"w": 280,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "pink.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2080274163,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2022 AI-first development workflows",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "trend2",
"type": "text",
"x": 370,
"y": 545,
"w": 280,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1798630792,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2022 Edge computing & streaming",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "trend3",
"type": "text",
"x": 370,
"y": 565,
"w": 280,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "cyan.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1977060810,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2022 WebAssembly everywhere",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "trend4",
"type": "text",
"x": 370,
"y": 585,
"w": 280,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1505799566,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2022 React Server Components",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "footer",
"type": "text",
"x": 700,
"y": 680,
"w": 400,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1571432931,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2728 Created with Privacy Sketch",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
}
],
"appState": {
"zoom": 0.9999999999999999,
"panX": 277,
"panY": 5
},
"theme": {
"roughness": 1.8,
"bowing": 1.2,
"fillStyle": "solid"
}
}
Prompt: "Design a user flow for an e-commerce checkout process including decision points and error handling."
ellipse for Start/End,
rectangle for Process, and diamond for Decisions.
{
"version": "2.0",
"elements": [
{
"id": "bg",
"type": "rectangle",
"x": 9,
"y": 26.99999999999999,
"w": 1160,
"h": 900,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#1e293b",
"strokeWidth": 3,
"fill": "#f8fafc",
"fillStyle": "solid",
"roughness": 1.5,
"bowing": 1.2,
"seed": 1632086272,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "title",
"type": "text",
"x": 300,
"y": 40,
"w": 600,
"h": 40,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0f172a",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 69814712,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\uded2 E-Commerce Checkout Flow",
"fontSize": 32,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "subtitle",
"type": "text",
"x": 350,
"y": 85,
"w": 500,
"h": 25,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1908859433,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Multi-Payment Gateway with 3D Secure",
"fontSize": 16,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "start",
"type": "ellipse",
"x": 80,
"y": 150,
"w": 120,
"h": 60,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 3,
"fill": "green.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 402528452,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "start-t",
"type": "text",
"x": 80,
"y": 170,
"w": 120,
"h": 24,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1102982735,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udecd\ufe0f Cart Ready",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a1",
"type": "arrow",
"x": 200,
"y": 180,
"w": 71,
"h": -2.6645352591003757e-15,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 71866532,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "validate-stock",
"type": "rectangle",
"x": 270,
"y": 140,
"w": 160,
"h": 80,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1037378032,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "validate-stock-t1",
"type": "text",
"x": 270,
"y": 160,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 762565673,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udce6 Check Inventory",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "validate-stock-t2",
"type": "text",
"x": 270,
"y": 185,
"w": 160,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 189203255,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Stock availability",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "diamond1",
"type": "diamond",
"x": 310,
"y": 260,
"w": 80,
"h": 60,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1185843905,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "diamond1-t",
"type": "text",
"x": 310,
"y": 278,
"w": 80,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 564603608,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "In Stock?",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a2",
"type": "arrow",
"x": 350,
"y": 220,
"w": -3.0000000000000018,
"h": 36,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 661739648,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "out-of-stock",
"type": "rectangle",
"x": 74,
"y": 303,
"w": 140,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "red.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 769702486,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "out-of-stock-t",
"type": "text",
"x": 74,
"y": 323,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.700",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 205547926,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u274c Out of Stock",
"fontSize": 13,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a-no",
"type": "arrow",
"x": 313,
"y": 290,
"w": -97,
"h": 39,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1987128122,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "no-label",
"type": "text",
"x": 265,
"y": 275,
"w": 30,
"h": 14,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 6387700,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "No",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a3",
"type": "arrow",
"x": 389,
"y": 290,
"w": 66,
"h": -1.000000000000001,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 721278905,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "yes-label",
"type": "text",
"x": 400,
"y": 275,
"w": 30,
"h": 14,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 2001720763,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Yes",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "shipping",
"type": "rectangle",
"x": 460,
"y": 250,
"w": 160,
"h": 80,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "#ede9fe",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1420670738,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "shipping-t1",
"type": "text",
"x": 460,
"y": 270,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#5b21b6",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1983647147,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\ude9a Shipping Info",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "shipping-t2",
"type": "text",
"x": 460,
"y": 295,
"w": 160,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#7c3aed",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 205091933,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Address validation",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a4",
"type": "arrow",
"x": 540,
"y": 330,
"w": 0.9999999999999991,
"h": 48,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 126080763,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "payment-select",
"type": "rectangle",
"x": 460,
"y": 380,
"w": 160,
"h": 80,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "#0ea5e9",
"strokeWidth": 2,
"fill": "#e0f2fe",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1516605091,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "payment-select-t1",
"type": "text",
"x": 460,
"y": 400,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0369a1",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 569545720,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcb3 Payment Method",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "payment-select-t2",
"type": "text",
"x": 460,
"y": 425,
"w": 160,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0284c7",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1232255077,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Select gateway",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "branch-label",
"type": "text",
"x": 540,
"y": 470,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 594953879,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Payment Gateway",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a5-stripe",
"type": "arrow",
"x": 490,
"y": 460,
"w": -80,
"h": 60,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "indigo.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1044290728,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "a5-paypal",
"type": "arrow",
"x": 540,
"y": 460,
"w": 7,
"h": 70,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0ea5e9",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 370437142,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "a5-apple",
"type": "arrow",
"x": 590,
"y": 460,
"w": 77,
"h": 65,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "gray.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 270118256,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "stripe",
"type": "rectangle",
"x": 320,
"y": 530,
"w": 140,
"h": 70,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "indigo.500",
"strokeWidth": 2,
"fill": "indigo.50",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1246551960,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stripe-t",
"type": "text",
"x": 320,
"y": 555,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "indigo.600",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1103946807,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udc9c Stripe",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "paypal",
"type": "rectangle",
"x": 480,
"y": 530,
"w": 140,
"h": 70,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "#0ea5e9",
"strokeWidth": 2,
"fill": "#e0f2fe",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 18627349,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "paypal-t",
"type": "text",
"x": 480,
"y": 555,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#0369a1",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1416066089,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83c\udd7f\ufe0f PayPal",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "apple",
"type": "rectangle",
"x": 640,
"y": 530,
"w": 140,
"h": 70,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "gray.800",
"strokeWidth": 2,
"fill": "gray.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1187913767,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "apple-t",
"type": "text",
"x": 640,
"y": 555,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "gray.900",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1042318681,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83c\udf4e Apple Pay",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a6-merge",
"type": "arrow",
"x": 390,
"y": 600,
"w": 95,
"h": 47,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 693933475,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "a6-merge2",
"type": "arrow",
"x": 550,
"y": 600,
"w": 1.9999999999999996,
"h": 45,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1947266758,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "a6-merge3",
"type": "arrow",
"x": 710,
"y": 600,
"w": -65,
"h": 55,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 446310031,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "3dsecure",
"type": "rectangle",
"x": 480,
"y": 650,
"w": 160,
"h": 80,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "orange.500",
"strokeWidth": 2,
"fill": "orange.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 977510313,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "3dsecure-t1",
"type": "text",
"x": 480,
"y": 670,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.700",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 238123101,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udd10 3D Secure",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "3dsecure-t2",
"type": "text",
"x": 480,
"y": 695,
"w": 160,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "orange.600",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1569116371,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Bank verification",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a7",
"type": "arrow",
"x": 560,
"y": 730,
"w": 0.9999999999999987,
"h": 51,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 782366714,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "diamond2",
"type": "diamond",
"x": 520,
"y": 780,
"w": 80,
"h": 60,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 988845971,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "diamond2-t",
"type": "text",
"x": 520,
"y": 798,
"w": 80,
"h": 18,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1988957381,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Verified?",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a-fail",
"type": "arrow",
"x": 600,
"y": 810,
"w": 94,
"h": -1.0000000000000013,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1114139932,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "fail-label",
"type": "text",
"x": 620,
"y": 795,
"w": 30,
"h": 14,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1045509653,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "No",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "payment-fail",
"type": "rectangle",
"x": 700,
"y": 780,
"w": 140,
"h": 60,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "red.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1059895430,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "payment-fail-t",
"type": "text",
"x": 700,
"y": 800,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "red.700",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1217558931,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u274c Payment Failed",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "retry-arrow",
"type": "arrow",
"x": 824,
"y": 774,
"w": 20,
"h": -367,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 26102252,
"lineStyle": "dashed"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "retry-label",
"type": "text",
"x": 845,
"y": 605,
"w": 50,
"h": 14,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1467204924,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Retry",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a-success",
"type": "arrow",
"x": 520,
"y": 810,
"w": -77,
"h": 24,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1379373833,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "success-label",
"type": "text",
"x": 470,
"y": 825,
"w": 30,
"h": 14,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 909140838,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Yes",
"fontSize": 10,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "order-confirm",
"type": "rectangle",
"x": 320,
"y": 840,
"w": 160,
"h": 70,
"angle": 0,
"borderRadius": 12,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1800721694,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "order-confirm-t1",
"type": "text",
"x": 320,
"y": 860,
"w": 160,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.800",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 861894364,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2705 Order Created",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "order-confirm-t2",
"type": "text",
"x": 320,
"y": 885,
"w": 160,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 295611027,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Send confirmation",
"fontSize": 11,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "a8",
"type": "arrow",
"x": 318,
"y": 869,
"w": -92,
"h": -1.1102230246251565e-15,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#64748b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1336785370,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
},
{
"id": "email",
"type": "rectangle",
"x": 82,
"y": 835,
"w": 140,
"h": 70,
"angle": 0,
"borderRadius": 10,
"options": {
"stroke": "indigo.500",
"strokeWidth": 2,
"fill": "indigo.50",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1180117552,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "email-t",
"type": "text",
"x": 82,
"y": 860,
"w": 140,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "indigo.600",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 828707185,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udce7 Email Receipt",
"fontSize": 13,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "legend-box",
"type": "rectangle",
"x": 900,
"y": 150,
"w": 250,
"h": 200,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#cbd5e1",
"strokeWidth": 2,
"fill": "#f1f5f9",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 501745621,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "legend-title",
"type": "text",
"x": 910,
"y": 165,
"w": 230,
"h": 24,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#1e293b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 909449269,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udccb Legend",
"fontSize": 16,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "l1",
"type": "ellipse",
"x": 920,
"y": 200,
"w": 20,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "green.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 946771495,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "l1-t",
"type": "text",
"x": 950,
"y": 203,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 932868979,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Start/End",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "l2",
"type": "rectangle",
"x": 920,
"y": 230,
"w": 20,
"h": 20,
"angle": 0,
"borderRadius": 4,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "blue.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 879043191,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "l2-t",
"type": "text",
"x": 950,
"y": 233,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1453372330,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Process",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "l3",
"type": "diamond",
"x": 920,
"y": 260,
"w": 20,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "amber.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 367304686,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "l3-t",
"type": "text",
"x": 950,
"y": 263,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 807975654,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Decision",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "l4",
"type": "rectangle",
"x": 920,
"y": 290,
"w": 20,
"h": 20,
"angle": 0,
"borderRadius": 4,
"options": {
"stroke": "red.500",
"strokeWidth": 2,
"fill": "red.100",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 188977245,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "l4-t",
"type": "text",
"x": 950,
"y": 293,
"w": 100,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#475569",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1949521566,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Error",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "l5-t",
"type": "text",
"x": 920,
"y": 320,
"w": 200,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1759333423,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "--- Retry path",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stats-box",
"type": "rectangle",
"x": 900,
"y": 380,
"w": 250,
"h": 120,
"angle": 0,
"borderRadius": 15,
"options": {
"stroke": "#cbd5e1",
"strokeWidth": 2,
"fill": "#f1f5f9",
"fillStyle": "solid",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1199505079,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
}
},
{
"id": "stats-title",
"type": "text",
"x": 910,
"y": 395,
"w": 230,
"h": 24,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#1e293b",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1998992305,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\ud83d\udcca Conversion Stats",
"fontSize": 14,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "bold",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat1",
"type": "text",
"x": 920,
"y": 425,
"w": 200,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "green.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 552903201,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Cart \u2192 Checkout: 68%",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat2",
"type": "text",
"x": 920,
"y": 450,
"w": 200,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "blue.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 351433606,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Checkout \u2192 Payment: 82%",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "stat3",
"type": "text",
"x": 920,
"y": 475,
"w": 200,
"h": 16,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#8b5cf6",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 68506464,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "Payment Success: 94%",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "left",
"fontWeight": "normal",
"fontStyle": "normal",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "footer",
"type": "text",
"x": 400,
"y": 930,
"w": 400,
"h": 20,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "#94a3b8",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 1768142579,
"lineStyle": "solid"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"text": "\u2728 Created with Privacy Sketch",
"fontSize": 12,
"fontFamily": "Comic Sans MS",
"align": "center",
"fontWeight": "normal",
"fontStyle": "italic",
"backgroundColor": null,
"backgroundPadding": 8,
"backgroundBorderRadius": 4
},
{
"id": "3cmrhpnyl",
"type": "arrow",
"x": 847,
"y": 411,
"w": -224.00000000000003,
"h": -7.999999999999998,
"angle": 0,
"borderRadius": 0,
"options": {
"stroke": "amber.500",
"strokeWidth": 2,
"fill": "transparent",
"fillStyle": "hachure",
"roughness": 1.8,
"bowing": 1.2,
"seed": 26102252,
"lineStyle": "dashed"
},
"animation": {
"type": "none",
"delay": 0,
"duration": 500
},
"endArrowhead": "arrow"
}
],
"appState": {
"zoom": 0.9999999999999999,
"panX": 652,
"panY": -79
},
"theme": {
"roughness": 1.5,
"bowing": 1.2,
"fillStyle": "solid"
}
}
This is the simplest valid JSON that renders. Copy and paste to test:
{
"version": "2.0",
"elements": [
{
"id": "box1",
"type": "rectangle",
"x": 100,
"y": 100,
"w": 150,
"h": 80,
"options": {
"stroke": "#333333",
"fill": "blue.200",
"fillStyle": "solid"
}
},
{
"id": "label1",
"type": "text",
"x": 100,
"y": 125,
"w": 150,
"h": 30,
"text": "Hello World",
"fontSize": 16,
"align": "center",
"options": { "stroke": "#1e293b" }
}
]
}
A shape with centered text inside:
// Rectangle at (100, 100), size 200x80
{ "id": "box", "type": "rectangle", "x": 100, "y": 100, "w": 200, "h": 80, "options": {...} }
// Text positioned at same x, y offset for vertical centering
{ "id": "box-label", "type": "text", "x": 100, "y": 130, "w": 200, "h": 20, "text": "Label", "align": "center" }
Rectangle + emoji + label text:
{ "id": "card", "type": "rectangle", "x": 100, "y": 100, "w": 120, "h": 80 }
{ "id": "card-icon", "type": "text", "x": 100, "y": 115, "w": 120, "h": 30, "text": "🚀", "fontSize": 24, "align": "center" }
{ "id": "card-label", "type": "text", "x": 100, "y": 150, "w": 120, "h": 20, "text": "Deploy", "fontSize": 12, "align": "center" }
Two boxes connected by an arrow (left to right):
// Box A at left
{ "id": "a", "type": "rectangle", "x": 50, "y": 100, "w": 100, "h": 60 }
// Box B at right
{ "id": "b", "type": "rectangle", "x": 250, "y": 100, "w": 100, "h": 60 }
// Arrow: starts at right edge of A (x=150), ends at left edge of B (x=250)
{ "id": "arrow-ab", "type": "arrow", "x": 150, "y": 130, "w": 100, "h": 1, "endArrowhead": "arrow" }
| ❌ Wrong | ✅ Correct | Reason |
|---|---|---|
"width": 100 |
"w": 100 |
Property names are w and h, not width/height |
Missing "id" |
"id": "unique-id" |
Every element MUST have a unique id |
"w": -50 |
"w": 50 |
For shapes, use positive w/h values (arrows can be negative) |
| Two elements with same id | Each id must be unique | Duplicate IDs cause rendering issues |
"color": "red" |
"stroke": "red" or "fill": "red" |
Use stroke for border, fill for background |
"version": 2 |
"version": "2.0" |
Version must be string "2.0" |
Text without text property |
"text": "Hello" |
Text elements require the text property |
For human readers seeking in-depth guidance, we offer comprehensive tutorials that walk through building complete diagrams from scratch:
Each tutorial includes step-by-step JSON code examples, design principles, and tips for creating professional diagrams.