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. Node.js also has the benefit of offering a single TypeScript 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 data 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
Front-endMaterial-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.
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.
Back-endTensorFlowMachine 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.
DevOpsClaude codeAI assistant for coding and documentation.
PuppeteerIntegration testing and generation of screenshots for documentation.
DockerPacking of microservices into containers for deployment on ARM64 and AMD64 platforms.
KubernetesDeployment and scaling of docker containers.
HelmInstallation and upgrading releases in Kubernetes.
GiteaSource code management and continuous integration.