Ok, maybe a little over-dramatic, but I've been working on this (off and on) for the last few years and yesterday I started to put a GUI / UI around what I now have .. it's going a little better than expected.
IONMAN started out as a door-entry system, based on an IoT hub (Crossbar) and Raspberry PI devices, all connected up over websockets. Because it was "there", I ended up coding the main web server application using the same platform, which led to the realisation that Crossbar could be "much" more than just a messaging hub.
So now it's the core platform for I.NeedACandidate.Today, which is a live real-time SPA with 10's of thousands of lines of code. As part of the process I've been re-writing and refining the core so it's now pretty concise .. so remembering the days of writing C compilers in C, and having the application compile "itself", I thought I'd have a go at implementing the IDE using what was already there, so essentially implementing the IDE, in the as yet unwritten IDE.
Chicken, meet egg.
Well, here's 2-days in.
May not look impressive, but that file tree is being populated from a remote MongoDB via websockets (WAMP) and clicking on an end-point is loading code stored in MongoDB into a tabbed instance of CodeMirror. A combination of the code snippets pre-processed with library code produces a running Webserver (Crossbar server) and running MicroServices agent which connects into Crossbar and provides endpoints for the load tree and load file calls, and a static HTML, CSS and JS tree. When you put all these things together, you get the IDE you're looking at.
i.e. that there egg just laid a chicken ..
Anyway, this should take all the hard work out of Crossbar as it pre-generates all the difficult bits like the Crossbar configuration, all the "deferred" glue to handle in-line callbacks, the framework for defining, managing and launching microservices .. and because all the data is stored in Mongo, provisioning and updating gets a whole lot easier too, and (!) we no longer need "Git", as we can keep all the versioning data in Mongo. Although I love "git" to bits (sorry Linus, I lie, it's a pain) I would far rather see my historical data in a database.
I'm still using Visual Studio for editing (I know, what can I say, it's better than Atom), next challenge is to get everything off VS and into IONMan ...