The decision was then made to turn it into a real product. To pull this off, I created an easy-to-configure, production quality build system designed to build Windows, Mac and Linux versions of the app. I chose node.js and glup (a node.js make tool) to manage builds which could be run as a Jenkins job for continuous cloud integration. I replaced the MSI installer with NSIS because we needed more control over the installation, added code signing to make the app tamper proof and added C++ targets to build a multi-threaded native node.js module, I wrote, to support a new feature. The overall application structure ended up looking like this:
Finally, NSIS had to be extended to communicate with the Electron app (over named pipes) to enforce single running instances plus auto-terminate and restart the Electron app when updated. But, once Microsoft Teams was released, the OneRoom project was cancelled. It would have been too difficult to compete against Teams.