Show HN: Diagram as code tool with draggable customizations

https://news.ycombinator.com/rss Hits: 19
Summary

oxdraw_demo.mov Overview The goal of oxdraw is to make it easy to create and maintain high-quality diagrams using a declarative and reproducible syntax. Charts are written in Mermaid syntax, while a web interface allows users to fine-tune positions connector paths, colors, and other styling components. Whenever a diagram is tweaked visually, the structural changes are persisted back to the source file as declarative code so that everything remains deterministic and versionable. The changes are saved as comments in the mermaid file so it remains compatible with other Mermaid tools. The repo is composed of the Rust CLI to compile .mmd files into images and the React based web interface to editing the files. Vision The reason I started this project was I used Mermaid a lot in the past when making architecture diagrams or trying to understand large codebases through having AI tools generate .mmd files to visualize them. However what typically happened was since these diagrams couldn't be edited minutely for example cleaning up joints and chart organization, I would have to move over the diagrams I started to things like Lucidchart. So the big picture goal of this project is to unite the benefits of code generated diagramming like Mermaid with the customizability of diagram software like Lucidchart. Usage Install fom Cargo cargo install oxdraw Render a diagram from a file oxdraw --input flow.mmd Launch the interactive editor oxdraw --input flow.mmd --edit Features CLI Flags Flag Description -i, --input <PATH> Read a Mermaid source file; pass - to consume stdin instead. -o, --output <PATH> Write the rendered asset to a specific path; pass - to stream SVG to stdout. Defaults to <input>.svg (or <input>.<format> if an explicit format is chosen) and out.svg when reading from stdin. --png Shorthand for --output-format png --scale <FACTOR> Scale multiplier for PNG rasterization (default 10.0 ); values must be greater than zero. Ignored for SVG output. --edit Launch the interact...

First seen: 2025-10-25 21:38

Last seen: 2025-10-26 16:05