Skip to main content

Architecture

The environment is designed to run on low-cost ARM hardware such as Raspberry PI or Odroid and on cloud platforms such as AWS or Google Cloud Platform. All frontend and backend modules are implemented as Docker containers running in a Kubernetes environment. Helm is used to facilitate easy installation and automatic rolling upgrades without downtime.

Microfrontend

The frontend modules run on a standard web browser as a PWA (Progressive Web Application) and communicate with the backend via REST and Websockets. The frontend is split up into three different modules that are integrated as microfrondends in a single container. This facilitates modular development of frontend modules and avoid having to download large packages such as for visual programming or 3D modeling and animation when users just need to submit a form of view a panel.

Backend services

The server environment includes a set of microservices that are deployed on a kubernetes cluster. Users can access the service using a web browser or app running on a smartphone. Systems can access the service via a REST API. All data and documents are stored in a Mongo database. When the app is running on a smartphone nearby Bluetooth devices can be accessed and data is streamed to the server. IoT devices can push data via the MQTT protocol. Zwave and Zigbee devices are supported via a ZWave2MQTT and Zigbee2MQTT bridges. Third-party services can be integrated via plugins. These plugins are microservices are packages as docker containers and can be written in any language such as Javascript, Python, C++, Go or Rust.