Sven Hodapp’s Post

Software architects don't start with diagrams. They start with outlines. So why do all our diagramming tools force us to draw boxes first? I built specplot — a Python library where you write your architecture as an outline, and it renders as a publication-ready SVG. The key idea: every component can be shown as a compact outline or an expanded group — your choice. ```python # Compact view: a bullet list with node(label="Database Layer", show_as="outline") as dbs:   node(label="PostgreSQL")   node(label="Redis Cache") # Expanded view: nested boxes with node(label="WebApp", show_as="group", grid=(3, 1)) as app:   node(icon="web", label="Presentation")   node(icon="account_tree", label="Business Logic")   persist = node(icon="storage", label="Persistence") ``` Same structure. Two representations. Switch between them by changing one parameter. You can wire edges to the outline as a whole — or directly to its inner nodes. → High-level: `user >> app` (connects to the group) → Detailed: `persist >> dbs | "read/write"` (connects inner node to inner node) One diagram. Multiple levels of detail. No redrawing. This is how I think about systems, and probably how you do too: Start rough → refine progressively → keep everything in one place. specplot makes that workflow native: → Your Python nesting IS the architecture hierarchy → SVGs clean enough for papers, RFCs, and architecture decision records → Version-controlled. CI/CD-ready. LLM-friendly. → 2000+ Material icons. Automatic A* edge routing. I just open-sourced this. The repo has examples from simple flows to full event-driven architectures — takes 30 seconds to run. 🔗 https://lnkd.in/ew8sSsUr #SoftwareArchitecture #Python #OpenSource #DiagramsAsCode #SystemDesign

  • diagram

If you've used Mermaid, PlantUML, or D2: the key difference is that specplot treats your architecture as an outline you can progressively expand. Outline nodes render as compact bullet lists. Group nodes render as nested boxes. Same structure, different zoom levels. Edges can connect at either level.

Hi Sven Hodapp cool idea! I will try it out! Do you have as well an Agents.md file so that I can help my coding Agent for the syntax support?

Like
Reply
See more comments

To view or add a comment, sign in

Explore content categories