Skip to main content

Software stack

TypeScript is used because the asynchronous functionality is very suited for IO-intensive scalable applications. TypeScript also has the benefit of offering a single language and environment for the front end and back end. Parallel processing with Node.js worker threads is implemented to avoid performance bottlenecks for CPU-intensive tasks such as importing and data analysis with neural networks. Also, Kubernetes can automatically scale performance by spinning up additional containers that run in parallel. 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 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.
JestAutomated unit testing and UI testing.
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.