Featured Video Play Icon

The ZodiacGraph

ZodiacGraph – A general-purpose, circular node graph GUI written in C++ using Qt.

Visit the repo at:

and download the pre-built showcase application from:

The ZodiacGraph is a spare-time project that I have been working on for about 4 months now, but the idea is a lot older.

I love the concept of working with node graphs, it just seems a very natural and efficient way of managing complexity in any domain. Yet whenever working with actual node graph implementations, I would quickly notice I was spending more time aligning nodes visually or cleaning up overlapping edges than actually being productive.
Most node graph implementations focus on a clear edge direction, either flowing horizontally or vertically. Having the inputs on the left and the outputs on the right implicitly tells the user that nodes evaluated later are further in the flow direction while earlier ones lie the other way.

This is generally a good thing, but only works for very clear-cut problem domains with an apparent execution order. The application for which the ZodiacGraph was originally designed however does not imply any order in execution and the resulting graphs tended to get messy really fast. Messy means incomprehensible, incomprehensible means impracticable, impracticable means a lot of time spend rearranging nodes, means a lot of wasted time, means frustration and tears etc.
The ZodiacGraph was designed as an alternative that was both easy to use and visually pleasing. There is actually quite a bit more going underneath the surface than might be apparent on the first look (notice in the video: “dynamic nodes” and “automatic edge arrangement”) but I’ll get to that in later posts.

Enough words. If you haven’t already, check out the 40 second teaser video above and download the pre-built showcase application to test out the UI for yourself.
As stated in the README, Contributions are welcome and encouraged!
Also, the list of future features is by no means exhaustive, in fact I could already add about 4 more feature just from recent conversations alone. Feel free to open an issue for feature requests or even better, a pull request ;-)

This is the first time I publish some work open source, so if I have neglected best practices or violated some sort of netiquette at any point, please let me know.