Skip to content

Commit ff10473

Browse files
committed
Fix architecture diagram edge routing to avoid node overlap
Route external service arrows (GitHub, LLM, S3) below the Frontend row using elbow connectors so no edges pass through any nodes.
1 parent 89c015e commit ff10473

2 files changed

Lines changed: 20 additions & 17 deletions

File tree

docs/diagrams/architecture.svg

Lines changed: 6 additions & 6 deletions
Loading

docs/diagrams/generate-architecture.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -283,22 +283,25 @@ function generate() {
283283
pill(EX, E2y, EW, EH, "LLM Providers", C.slate, "OpenAI / Anthropic / Ollama");
284284
pill(EX, E3y, EW, EH, "S3 / MinIO", C.slate, "Artifact Storage");
285285

286-
// ── External → API (horizontal elbows into left edge of API) ──
286+
// ── External → API ──
287+
// Route all external arrows BELOW the Frontend row so no edges cross nodes.
288+
// Each path: right from ext box → down to a channel below services → right to API bottom edge
287289
const extRight = EX + EW;
288290
const apiLeft = s2x;
291+
const channelX = s1x - 8; // just left of Frontend box
292+
const underRow = R1 + sH; // bottom of service boxes
289293

290-
// GitHub → API (straight horizontal — same Y as API row)
291-
lineH(extRight, E1y + EH / 2, apiLeft, "Model fetch", { color: C.slate.border, arrow: "both" });
294+
// GitHub → API: right to channel, down under Frontend, right to API bottom
295+
p.push(`<path d="M${extRight},${E1y + EH / 2} H${channelX} V${underRow + 6} H${a_cx - 15} V${underRow}" fill="none" stroke="${C.slate.border}" stroke-width="1" marker-start="url(#ah-r)" marker-end="url(#ah)"/>`);
296+
txt((channelX + a_cx) / 2, underRow + 18, "Model fetch", { size: 8, fill: TEXT_DIM });
292297

293-
// LLM → API (elbow: goes right, up to API mid, then right into API)
294-
const llmMidX = extRight + 30;
295-
p.push(`<path d="M${extRight},${E2y + EH / 2} H${llmMidX} V${R1 + 20} H${apiLeft}" fill="none" stroke="${C.slate.border}" stroke-width="1" marker-start="url(#ah-r)" marker-end="url(#ah)"/>`);
296-
txt(llmMidX + 4, R1 + 16, "HTTPS", { size: 8, fill: TEXT_DIM, anchor: "start" });
298+
// LLM → API: right to channel, down under Frontend, right to API bottom
299+
p.push(`<path d="M${extRight},${E2y + EH / 2} H${channelX - 8} V${underRow + 14} H${a_cx} V${underRow}" fill="none" stroke="${C.slate.border}" stroke-width="1" marker-start="url(#ah-r)" marker-end="url(#ah)"/>`);
300+
txt((channelX + a_cx) / 2, underRow + 26, "HTTPS", { size: 8, fill: TEXT_DIM });
297301

298-
// S3 → API (elbow: goes right, up to API bottom area, then right into API)
299-
const s3MidX = extRight + 50;
300-
p.push(`<path d="M${extRight},${E3y + EH / 2} H${s3MidX} V${R1 + 40} H${apiLeft}" fill="none" stroke="${C.slate.border}" stroke-width="1" marker-start="url(#ah-r)" marker-end="url(#ah)"/>`);
301-
txt(s3MidX + 4, R1 + 36, "Presigned URLs", { size: 8, fill: TEXT_DIM, anchor: "start" });
302+
// S3 → API: right to channel, down under Frontend, right to API bottom
303+
p.push(`<path d="M${extRight},${E3y + EH / 2} H${channelX - 16} V${underRow + 22} H${a_cx + 15} V${underRow}" fill="none" stroke="${C.slate.border}" stroke-width="1" marker-start="url(#ah-r)" marker-end="url(#ah)"/>`);
304+
txt((channelX + a_cx) / 2, underRow + 34, "Presigned URLs", { size: 8, fill: TEXT_DIM });
302305

303306
// ═══════════════════════════════════════════════════════════════════
304307
// LEGEND (bottom)

0 commit comments

Comments
 (0)