How It Works


Druid provides a custom graphical interface for embedded devices (Arduino, nRF, Raspberry Pi and more).

The developer decide which commands/inputs/graphs are present, using the online builder,

and completes the project by filling in the generated source code as required, using their regular tools and IDE.  Druid handles display (on desktop and mobile) and communications (through USB serial or wireless.)

Brewing up the “Device Druid Experience” means getting a bunch of different parts talking to each other smoothly and happens in six steps, some of which involve the developer while others are automated behind the scenes.

The Process

1. Design

A developer uses Druid Builder to visually construct the user interface, organizing commands, input controls and menu structure.  Then she may use the Code tab in Builder to customize the experience, adding in application specific functionality.

2. Export

When everything’s setup and ready to test, the project is exported to the Druid code generation wizard with the click of a button. The generator ensures everything is in order and lets Builder know that the project has been queued.

3. Brewing Code

The generator hands off the job of transforming the project specification into working code to one of its worker wizards, a process running on a different server.

The worker is responsible for creating a program that will compile, that includes all the custom code in the project as well as all the configuration and setup of the SerialUI back-end.  When it’s done, it will test the result to see if it can figure out whether anything is wrong with the program and produces a report for the generator.

4. Delivery

After a bit, the project is ready and delivered back to the developer.  The report is presented, along with the opportunity to get a zip file containing the project code.

5. Installation

After optionally doing more customization, the code is combined with the SerialUI library to produce firmware and installed on the target device.

6. Device Druid

With the program running on an embedded device, say an Arduino Uno as depicted above, someone connects using Device Druid.  The dev’s interface is presented and all the functionality is available through the GUI.

The Technology

The Druid ecosystem is comprised of a number of core technologies and many supporting components.

The applications each use their own mix of web tech (DHTML, JavaScript, TypeScript, JS libraries) and native functionality through C++ plugins, some standard and a few custom modules.  Both Device Druid and the online Builder are ionic systems, ultimately based on the awesome Apache Cordova.

The core functions of the generator and its wizards are mostly based on Python but leverage a whole lot of functionality from web servers, message queues, databases etc.

The generated code is C++ and it relies on SerialUI, a C++ (LGPLed) library designed for use on embedded devices.