Skip to main content

Software stack

TypeScript is used for the front end because of the availability of graphics libraries such as Three.js, web-ifc.js and Google Blockly. For the back-end, Node.js, Go and Rust were considered. Node.js was selected because of high performance for I/O related tasks and the need for a JavaScript runtime engine for processing used defined scripts. TypeScript also has the benefit of offering a single language and environment for the front end and back end. Performance bottlenecks are avoided by using worker threads for CPU intensive tasks such as data import and analysis. Docker is used to package all front-end and back-end modules. Docker is also used for integration with third-party platforms. This allows the use of libraries written in various languages such as Python, Rust, or JavaScript while providing a consistent REST integration API. Kubernetes k3s is used for the deployment of microservices because it provides ease of installation and scalability and runs on low-end and high-end platforms.

AreaComponentUsage
FrontEndMaterial-UIFramework for front-end components such as buttons, date pickers and menus.
ReactFramework for development of app and progressive web applications.
Three.jsHigh performance 3D graphics framework based on WebGL.
That openReading IFC files and accessing BIM metadata.
BlocklyVisual programming for automation, compliance monitoring, and solid modeling.
CesiumDisplay of digital twins and sensor data in a 3D world view.
WebsocketsPush state updates to browsers and mobile apps.
TypeScriptMain development language for client and server.
IonicDevelopment of multi-platform apps with Bluetooth support.
ViteFrontend build tool, testing and module federation.
BackEndTensorFlowMachine learning framework for data analysis and forecasting.
Node.jsMain development environment for client and server.
VM2Sandbox for running user defined JavaScript customizations.
ExpressWeb application framework for implementing REST APIs and web sockets.
SwaggerOpenAPI 3.0 compliant REST API documentation.
MongoDBPersistent storage of IoT data, application data and documents.
RustHigh-performance and low footprint microservices for making custom connections to other systems.
C++Programming microcontrollers with sensors such as ESP32.
PuppeteerData collection using web crawling.
MochaAutomated unit testing and integration testing.
DevOpsDockerPacking of microservices into containers for deployment on ARM64 and AMD64 platforms.
KubernetesDeployment and scaling of docker containers.
HelmInstallation and upgrading releases in Kubernetes.
AnsibleConfiguration of linux and virtual machines.
SeleniumIntegration testing and generation of screenshots for documentation.
GitlabSource code management and continuous integration.