| name | architecture-diagram |
| description | Architecture and component diagrams as HTML/SVG (dark-themed) |
| category | creative |
| version | 1.0.0 |
| origin | aiden |
| license | Apache-2.0 |
| tags | architecture, diagram, svg, html, dark-theme, system-design, visualization, components, flowchart |
Architecture Diagram Generator
Create dark-themed, professional system architecture and component diagrams rendered as self-contained HTML+SVG files. No external tools needed — output opens in any browser.
When to Use
- User wants a system architecture diagram
- User wants a component interaction diagram
- User wants a data flow or pipeline diagram
- User wants a network topology visualization
- User wants a diagram they can open in the browser and share
How to Use
1. Plan the diagram layout
Before generating, outline:
- Components: what boxes/nodes exist?
- Relationships: which components talk to which? Direction?
- Groupings: are there logical layers (frontend, backend, data)?
- Key labels: service names, technologies, data formats
2. Generate a dark-themed HTML diagram (Python)
import textwrap
def make_diagram(title, components, connections, output="diagram.html"):
"""
components: list of { id, label, x, y, color }
connections: list of { from_id, to_id, label }
"""
box_w, box_h = 160, 50
width = max(c["x"] for c in components) + box_w + 80
height = max(c["y"] for c in components) + box_h + 80
def box(c):
bg = c.get("color", "#1e3a5f")
return f'''<rect x="{c['x']}" y="{c['y']}" width="{box_w}" height="{box_h}" rx="8"
fill="{bg}" stroke="#4a9eff" stroke-width="1.5"/>
<text x="{c['x']+box_w//2}" y="{c['y']+box_h//2+5}" text-anchor="middle"
fill="#e0e8ff" font-family="monospace" font-size="13">{c['label']}</text>'''
id_to_comp = {c["id"]: c for c in components}
def arrow(conn):
a, b = id_to_comp[conn["from_id"]], id_to_comp[conn["to_id"]]
x1, y1 = a["x"] + box_w, a[] + box_h //
x2, y2 = b[], b[] + box_h //
mid_x = (x1 + x2) //
lbl = conn.get(,)
html =
(output, ) f:
f.write(html)
()
make_diagram(,
components=[
{:, :, :, :, :},
{:, :, :, :, :},
{:, :, :, :, :},
{:, :, :, :, :},
{:, :, :, :, :},
],
connections=[
{:, :, :},
{:, :, :},
{:, :, :},
{:, :, :},
]
)
3. Add a group/layer box
To show layers (Frontend / Backend / Data), add a background rect before component boxes:
layer_rect = '<rect x="30" y="80" width="220" height="200" rx="12" fill="none" stroke="#334155" stroke-width="1" stroke-dasharray="6,3"/><text x="40" y="72" fill="#64748b" font-family="monospace" font-size="12">Frontend</text>'
Examples
"Draw a microservices architecture with API gateway, 3 services, and a database"
→ Use step 2 with 5 components (gateway, service1/2/3, db) and arrows showing request flow.
"Create a data pipeline diagram: raw data → ETL → warehouse → BI tool"
→ Use step 2 with a horizontal layout, 4 boxes, connecting arrows with labels for each transform step.
"Visualize a CI/CD pipeline from git push to production"
→ Components: GitHub, CI Runner, Test Suite, Docker Build, Registry, Deploy → Prod. Horizontal flow.
Cautions
- Keep diagrams to 10-15 components maximum — more than that becomes unreadable
- Plan x/y coordinates before writing code — use 250px horizontal spacing and 120px vertical spacing as defaults
- Arrows pointing left or upward require reverse x1/x2 coordinates — adjust
from_id/to_id if arrows cross
- SVG is resolution-independent — the output will look sharp at any zoom level