title: Node server GUI frontend
body: <p>Well, we all know about headless servers. Actually, probably the vast majority of servers out there <em>are</em> headless.</p>
  
  <p>As usual (it seems), my situation asked for quite something else. Basically, the proposed architecture looks more or less like:</p>
  
  <p><img src="https://i.stack.imgur.com/JuQcn.png" alt="RTG SA"></p>
  
  <p>The app server (node.js) is situated on a physical machine physically connected to two screens.</p>
  
  <p>Between this machine and the 'net there are all sorts of regular networking layers. Please keep in mind that one of the main reasons for this setup is physical portability: ie, the client gets the necessary hardware as the product. The server itself relies on CDN for static files etc.</p>
  
  <p>Each monitor/screen needs to show something different, <em>produced by the same node server</em>.</p>
  
  <p>For now this server will probably run on Windows, but given a concept (which is what my question is after), I can change the code to run on the target platform. Well, depending on my code, this could even be done automatically.</p>
  
  <p>So, my actual question. Node is quite flexible in that it can be run by anything - even custom made software (C++, Delphi, even GM). Just <code>shell_exec('node server.js')</code> and we're off.</p>
  
  <p>But the screens themselves need to be quite dynamic. So node needs to influence both screens in some way. A few options I'm considering:</p>
  
  <ul>
  <li>A custom app which creates two resizable, featureless windows with an embedded chromium browser to be controlled by the node server somehow (how node react with these browsers?)</li>
  <li>A custom app which, according to node CLI output, updates the two screens' UI. Since I need something flashy as the UI, this app would be created in something like GameMaker, or a similar engine.</li>
  </ul>
  
  <p><strong>PS:</strong> Just in case you're asking; the physical connection opposed to a network one (eg; web-based GUI frontend) is <strong>by design</strong>.</p>