After quite a lot more work on the prototype I now have some of the basic building blocks in place both for the UI and the core entities in the application.
Layers, nodes and parameters
Like in other graphics software the output is divided into layers that you can edit independently and reorder, and in the prototype there’s now a rudimentary layers panel displaying the current document layers, with support for grouping, un-grouping and reordering.
Unlike in more traditional graphics software each layer is actually a stack of what I call nodes (from Patternodes) that either generate or modify the graphics in this layer. For example a simple circle shape might have a shape generator node that generates a circle based on some size parameters, with fill and stroke defined by other parameters. Other nodes in sequence might then modify or repeat this circle in different ways. Finally, everything is placed on the art board and transformed by parameters of the layer.
All these nodes and parameters can be edited in the inspector panel to the right for the currently selected layer(s).
While this is quite convoluted and complicated for something as simple as drawing a circle, it’s a structure that will hopefully enable some very complex functionality going forward with more complex nodes and ways of establishing relationships between layers and parameters.