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.
Area | Component | Usage |
---|---|---|
FrontEnd | Material-UI | Framework for front-end components such as buttons, date pickers and menus. |
React | Framework for development of app and progressive web applications. | |
Three.js | High performance 3D graphics framework based on WebGL. | |
That open | Reading IFC files and accessing BIM metadata. | |
Blockly | Visual programming for automation, compliance monitoring, and solid modeling. | |
Cesium | Display of digital twins and sensor data in a 3D world view. | |
Websockets | Push state updates to browsers and mobile apps. | |
TypeScript | Main development language for client and server. | |
Ionic | Development of multi-platform apps with Bluetooth support. | |
Vite | Frontend build tool, testing and module federation. | |
BackEnd | TensorFlow | Machine learning framework for data analysis and forecasting. |
Node.js | Main development environment for client and server. | |
VM2 | Sandbox for running user defined JavaScript customizations. | |
Express | Web application framework for implementing REST APIs and web sockets. | |
Swagger | OpenAPI 3.0 compliant REST API documentation. | |
MongoDB | Persistent storage of IoT data, application data and documents. | |
Rust | High-performance and low footprint microservices for making custom connections to other systems. | |
C++ | Programming microcontrollers with sensors such as ESP32. | |
Puppeteer | Data collection using web crawling. | |
Mocha | Automated unit testing and integration testing. | |
DevOps | Docker | Packing of microservices into containers for deployment on ARM64 and AMD64 platforms. |
Kubernetes | Deployment and scaling of docker containers. | |
Helm | Installation and upgrading releases in Kubernetes. | |
Ansible | Configuration of linux and virtual machines. | |
Selenium | Integration testing and generation of screenshots for documentation. | |
Gitlab | Source code management and continuous integration. |