> After that, Graphviz calculates the layout and renders SVG and PNG
I was going to ask: why not GraphViz?
The interesting part for me was separating the semantic structure from the layout completely.