alf: the atproto Latency Fabric
alf.fly.dev/
1direction: down
2
3classes: {
4 base: {
5 style: {
6 stroke: "#0f172a" # deep slate (strong contrast)
7 stroke-width: 2
8 border-radius: 16
9 shadow: true
10 font-color: "#0f172a" # dark text (better on pastels)
11 font-size: 16
12 bold: true
13 padding: 14
14 }
15 }
16
17 # Pastel fills (high contrast with deep stroke + dark text)
18 write_call: {style.fill: "#dbeafe"} # sky-100
19 draft: {style.fill: "#bfdbfe"} # blue-200
20 scheduled: {style.fill: "#e9d5ff"} # purple-200
21 publishing: {style.fill: "#fed7aa"} # orange-200
22 published: {style.fill: "#bbf7d0"} # green-200
23 failed: {style.fill: "#fecaca"} # red-200
24 cancelled: {style.fill: "#e2e8f0"} # slate-200
25
26 edge_default: {
27 style: {
28 stroke: "#64748b" # slate-500
29 stroke-width: 2
30 font-color: "#334155" # slate-700 (readable)
31 font-size: 13
32 bold: false
33 }
34 }
35}
36
37# Apply base to all nodes, then override fill via class
38"write call".class: base
39draft.class: base
40scheduled.class: base
41publishing.class: base
42published.class: base
43failed.class: base
44cancelled.class: base
45
46"write call".class: write_call
47draft.class: draft
48scheduled.class: scheduled
49publishing.class: publishing
50published.class: published
51failed.class: failed
52cancelled.class: cancelled
53
54# Edges
55"write call" -> draft: "" {class: edge_default}
56
57draft -> scheduled: schedulePost {class: edge_default}
58draft -> publishing: publishPost {class: edge_default}
59scheduled -> publishing: scheduler fires {class: edge_default}
60
61publishing -> published: success {
62 class: edge_default
63 style.stroke: "#16a34a" # green-600
64}
65
66publishing -> failed: max retries {
67 class: edge_default
68 style.stroke: "#dc2626" # red-600
69}
70
71publishing -> scheduled: "retry · 1m / 5m / 15m" {
72 class: edge_default
73 style.stroke: "#ea580c" # orange-600
74 style.stroke-dash: 6
75}
76
77draft -> cancelled: deletePost {
78 class: edge_default
79 style.stroke-dash: 6
80}
81
82scheduled -> cancelled: deletePost {
83 class: edge_default
84 style.stroke-dash: 6
85}