This repo is one of 6 repos that make up the BubblesNet project. If you've arrived at this repo through the side door (direct search), then you probably want to start at the documentation repository for this project. You can not understand this repo without seeing how it interacts with the other repos.
The controller is a control, and data collection and analysis service designed to work with the bubblesnet edge-device. It consists of:
Client - a React application for controlling one or more edge devices and viewing the data from those devices.
Server - a set of three NodeJS servers (api, websocket, queue) that serve both the controller React application AND the edge devices manipulating the physical environment and queueing data for storage. Any of the three servers can be run from the server directory by calling the correct main for api, queue or websocket.
The system uses a common JSON messaging structure throughout. See here for details.