/

User Guide

Upload a Digital Twin

A building is created by uploading a single JSON file that describes its rooms and 3D layout. This page covers that file format and how to upload it, then explains private domains.


How to upload

  1. Open the Digital Twin view.
  2. In the left menu, click Register Building.
  3. Select your \.json file.
  4. Review the name, thresholds, and per-room capacity, then save. The building appears in the 3D scene.

Alternatively, from the Administrator Panel, select a domain and use Upload Building Data (JSON) to attach the building to that domain at the same time.

The Register Building modal

Figure 1 — The Register Building modal: upload the JSON, then review name, thresholds, and capacities.


The building JSON

A building cannot be built room by room in the UI; the whole structure is one file.

{
  "id": "building-main",
  "name": "Main Campus Building",
  "rooms": [
    {
      "id": "room-101",
      "name": "Lecture Hall A",
      "capacity": 120,
      "color": "#4f86c6",
      "position": { "x": 0, "y": 0, "z": 0 },
      "dimensions": { "width": 20, "height": 4, "depth": 15 }
    },
    {
      "id": "room-102",
      "name": "Study Room B",
      "capacity": 30,
      "position": { "x": 25, "y": 0, "z": 0 },
      "dimensions": { "width": 10, "height": 4, "depth": 8 }
    }
  ]
}

Building fields

FieldTypeRequiredDescription
idstringYesStable, human-readable identifier (e.g. main-campus).
namestringNoDisplay name. Defaults to id if omitted.
roomsarrayYesAt least one room object.

Room fields

FieldTypeRequiredDescription
idstringYesUnique room id within the building.
namestringNoDisplay name. Defaults to id.
capacitynumberYesMaximum safe occupancy; drives the dashboard status indicators.
positionobjectYes{ x, y, z } — the room’s centre point in the 3D scene.
dimensionsobjectYes{ width, height, depth } — the room’s size, same unit as position.
colorstring (hex)NoDefault room colour (e.g. #4f86c6).

Coordinate system

Rooms are placed by their position (centre) and dimensions (size). The origin { x: 0, y: 0, z: 0 } is the centre of the scene.

To place rooms side by side without overlap, offset x or z by at least width / 2 + neighbour_width / 2.

Thresholds are set after upload

Temperature limits are not part of the JSON. Set them per room or per building after upload, through Edit Room / Edit Building (see The Digital Twin.


Private domains

Every domain is either public or private:

Joining a private domain

Administrators: creating a private domain

When creating a domain in the Administrator Panel, leave Visible from outside off (the default). Share the invite QR code only with the people you want to onboard.