Show HN: OneModel – Diagramming tailor-made for Software Engineers
onemodel.app
onemodel.app
In previous jobs, I’ve had to draw many diagrams, whether to accompany design specifications or to explain something to peers. I’ve always felt drawing diagrams was too time consuming even though it was incredibly beneficial to my peers. That led me to creating a diagramming tool that allows software engineers to create diagrams quickly while remaining neat and presentable.
A few notable features:
- When drawing arrows, the tool automatically routes the arrows for you (using A* pathfinding and a nudging algorithm [1]).
- The tool has a wide variety of icons to choose from and I’m adding more. The goal here is to add all the icons a software engineer might need.
- Everything is placed on a grid with placement rules so the user doesn't have to worry about alignment.
- Embedding live (auto-updating) diagrams in Notion or using IFrames. GitHub support coming soon.
I understand the tool doesn’t support all use cases, I was primarily focused on architecture diagrams. I hope to support more types of diagrams (sequence, db schemas, flow charts, etc) in the future. Hopefully this is a good starting point to gauge feedback on the direction I’m heading towards.
OneModel is in beta and is completely free to use. It will remain free for individuals after the beta. I’d love to hear your thoughts and feedback! I’ll be around to answer any questions.
If you’d like to reach out to me, feel free to email me at khaled[at]onemodel.app
[1] If you’re interested in these types of algorithms, this paper is great: https://users.monash.edu/~mwybrow/papers/wybrow-gd-2009.pdf
Thanks for sharing!
Personally, I'm a huge draw.io fan, and I use the desktop app for many things. While draw.io is great for many types of diagrams it's certainly perfect at none of them. At the end of the day I find myself creating boxes of the same size, formatting lines to be the same style, and routing arrows all around the place.
That's what I love about OneModel: it's currently built as a tool to design system diagrams. I don't have to muck around with box sizes, OneModel knows that a box is a service. I don't have to muck around with line widths and arrow styles, OneModel knows that an arrow represents a service relationship. I don't need to route arrows, OneModel knows that an arrow shouldn't overlap a service icon.
I'm really looking forward to some of the obvious places this tool can go. Attach metadata to a service that points to a GitHub repo and get deployment status. Attach metadata to a line to specify protocol, jump to a firewall rule, or consume Prometheus metrics. Maybe we'll even be able to export a diagram as a Terraform script one day!
It's also natively rendered in obsidian [1] without any plugins.
Not affiliated, just very happy with this plain text and local workflow.
However, nomnoml is more like UML tool than diagramming tool like OneModel. So a big issue could be how to keep all the icons in the text format. With SVGs, the file would be big/or would include some extra assets folder, or with the links directly hosted on OneModel, the file would be tightly coupled.
What I liked best is that OneModel doesn't get in your way. It does the ugly aligning and routing of arrows so that your model stays beautiful. I really only sat down to play around with it. But after two hours, I had fully diagrammed my new project including every module and component. It's probably also the best looking software architecture diagram, and perhaps the most easily-read, that I've ever made.
OneModel is really enjoyable to use. The quick feedback of getting to something readable and pleasing inspires you to continue completing and improving your diagram. It's easy to get into the "flow state" that's critical for this kind of work, like programming itself.
My only requests would be custom icons and/or coloring of existing icons. But I was able to get everything I needed by just renaming the components it has.
Awesome job. Something I would pay for. The next diagram I want to make is a state model. I think the auto-routing arrows will be a huge plus.
Looks good though and I will try again on a non-FF browser in work. Where do the files get saved? One of the best things about draw.io is that it just works off local files.
There is one feature I always wished existed in engineering diagramming tools: it's the ability to hook up some logging or status report.
For instance, on each of these nodes, there could be an ID, and I would send a post request from my servers that says "node ID x is down", and the tool would just show a red dot and maybe a "take me to the logs" button, that would be huge.
Which is to say, I don't just want a diagram, cause diagrams get outdated, I want a dashboard. Dashboards get updated, cause you look at them.
Anyways, just a thought.
Plus VSCode extension which will make editing these diagrams inside the git repo a first class citizen.
Our team usually uses LucidCharts but we'll give this a try. A basic folder system would go a long way in helping to keep my charts organized.
Maybe consider making a VScode extension out of it; you could then have it generate actual class files from the drawing.
This is something VSCode lacks that big brother Visual Studio has had forever (cd designer).