New Demo Application with NodeJS backend

Understand the connections in your data.


Understanding what your users are doing doesn’t have to be a complicated setup process. Once you install the Sankey NodeJS server, you can pick and choose which actions to track in your app.
Have you ever wanted to know if people used the comment feature or tapped that button in your app? Just point and click to choose the interactions you want to measure. Now you can spend more time learning how to make your app better.

Uses cases:

  • Phone registration failures over specific period

  • Tracking transaction payment processing platform

  • Tracking a renewal or new signup transaction

  • E-Commerce: typical user session, anomalous checkout transactions, catching drop off in checkout

  • Tracking users on-boarding process

  • Attribution modeling - Determining the origin of a user action

Learn something surprising about your users


Draw2D with Node.js backend

Binding the front- and back-end together with node.js and


It is just about 40 lines of server side code to connect draw2d with node.js and load/save JSON files or have access to the RaspberryPI GIO ports. Just checkkout the sample application on GitHub: or install this application with npm if you have already installed node.js

bash: npm install -g brainbox

you can now start the server with brainbox. This works well even on you RaspberryPi. You have full access to your GPIO pins fro the circuit simulator in your browser!

New feature in Draw2D 6.1.27 - SmartDraggable decoration


With the release of 6.1.27 a new implementation of an draw2d.layout.locator.Locator is part of Draw2d. You can now add smart draggable decorations to any kind of shapes. This feature is seen in several desktop apps and is now part of Draw2D as well.


Digital Training Studio

Teach logic gates + digital circuits effectively - done with Draw2D
show case available on Github


  • Design circuits quickly and easily with a modern and intuitive user interface with drag-and-drop, copy/paste, zoom & more

  • Take control of debugging by pausing the simulation and watching the signal propagate as you advance step-by-step.

  • Don't worry about multiple platforms on student computers. DigitalTrainingStudio runs within Draw2D

Draw2D touch version 6.1.5 released

Designing shapes across different zoom levels

Figures have optimal legibility ranges—just like typefaces. Meaning a shape designed for 32 pixels will often be illegible at 50% and appear chunky at 300%. That’s why Iconic is being designed at three sizes for desktop applications.


You can now design your own shapes in Draw2D optimized for different zoom level. Either you use different SVG code or you can implement it as draw2d.StackFigure. Below you see a vey simple example how the figure behaves during zoomIn / zoomOut.


New feature Draggable decoration


With the release of 6.0.0 a new implementation of an draw2d.layout.locator.Locator is part of Draw2d. You can now add draggable decorations to any kind of shapes. This feature is seen in several desktop apps and is now part of Draw2D as well.


Draw2D touch version 6.0.0 (Beta) released

Be aware that the version changed from 5.x.x to 6.x.x. This means that some incompatible changes are part of this release. May you must adapt your code if you are want to use this release.

changing the "on("select",function)" event signature. "figure" is now part of an event parameter instead of a single callback argument. Incompatible changes to version 5.x.x
+ all "changes:" contains now the value in the event object
+ new DraggableLocator and sample for. You can now Drag&Drop labels as well
+ fixing typo in "InteractiveManhattanConnectionRouter". "undefinied" -> "undefined"
+ fixing "jitter" zoom in/out with mouse wheel
+ fixing several JSDoc issues
+ new demo for changing figure representation during zoom in/out
+ fixing broken InteractiveManhattanRouter. Broken start/end if shape is moved
+ new method required callback method Locator.bind/Locator.unbind
+ changing "zoom" and "zoomed" event parameter from factor -> value
+ new Layout figure "StackLayout".
+ fadeOut/fadeIN option in the "setVisible" method of all shapes
+ fixing broken toBack method for sets in the raphael implementation
+ new sample for StackLayout. Click and show the next fixure within the stack
+ add getter/setter for SVGFigure. Now you can change the SVG during figure live time
+ canvas fires new events: zoom, zoomed, removed

Draw2D touch version 5.8.0 released

+ implement zoom as new CanvasEditPolicy
+ new zoom implementation with MouseWheel support
+ fixing background gradient error if transparency is set to <1 for ports
+ fix broken MySlider implementation in the samples
+ don't force redraw or call of "attr" if the attributes are empty
+ remove deprecated currentHoverElement variable in ports

Mouse Wheel Zoom: New for this release is a mouse wheel zoom. This tool requires you to press the [Shift] key to activate the mouse wheel zoom function. Holding [Shift] and rolling the mouse wheel forward zooms in, while rolling it backwards zooms out. Draw2D will shift the center of the zoom focus to where your cursor is on the screen, allowing you to zoom in and out from one area of a presentation to another smoothly.


Draw2D touch version 5.7.1 released

+ fixing broke resize of SetFigure (e.g. Icons).
+ source and target decoration of an connection isn't handle correct with the toFront and toBack operation - fixed.
+ fix broken serialization of "Line" if the vertices in the JSON document contains less than 2 vertex. This will break the complete reading of the document.
+ fixing wrong icon size of collapsible figure
+ respect the "visible" flag of a child by calling the method "add"
+ fixing wrong width calculation of verticalLayout
+ fixing that ports are not moved when a figure is moved.

Draw2D touch version 5.7.0 released

+ undo/redo support for LabelInplaceEditor and LabelEditor
+ new class draw2d.command.CommandAttr to support any kind of attribute undo/redo

Draw2D touch version 5.6.9 released

+ adding Polygon.setDashArray

Draw2D touch version 5.6.8 (TEST) released

+ fixing method Line.setEndY. The broken implementation swaps end/start coordinate.
+ enable selection of connections within Composites
+ fix broken drag/drop of lines. Line didn'T update end/start after drag&drop end points
+ add the start/end point of a draw2d.shape.basic.Line to the JSON document. Lines can now read/write to JSON too.
+ extend constructor of ShowGridPolicy that the policy can listen to the "zoom" event of the canvas and apply them to the grid size.
+ support Layout.clone()
+ fix grouping error of connections with a label as a child. Label pushed into the background after grouping

Draw2D touch version 5.6.7 released

+ provide method that the ReadOnlyEditPolicy can override/block the onClick method.

Draw2D touch version 5.6.6 released

+ handle "Groups" and "Composites" correct for the SnapToXYZ edit policies.