@things-factory/operato-board 10.0.0-beta.98 → 10.0.0-y.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,99 +1,151 @@
1
- ![Data Analytics Dashboard](https://source.unsplash.com/1600x900/?data,analytics,dashboard)
1
+ ![Operato Board](https://source.unsplash.com/1600x900/?digital,twin,factory)
2
2
 
3
- ## Operato Board
3
+ # Operato Board
4
4
 
5
- - Operato : Solution family brand of hatiolab.com(http://www.hatiolab.com)
6
- - Board : Monitoring Solution
5
+ > **A Zero-to-Twin canvas** assemble a live, simulating digital twin from visual building blocks with near-zero external code, then drive it with real-time monitoring.
7
6
 
8
- ## prerequisites
7
+ `@things-factory/operato-board` is the production application of the `things-factory` platform that hosts the board modeler & viewer, the scene component runtime, and the real-time data backbone needed to author and operate digital twins.
9
8
 
10
- - nodejs version 12
9
+ ## What you can build
11
10
 
12
- ## build
11
+ - **Live dashboards & SCADA-style panels** — chart, gauge, table, gantt, sensor, news ticker, …
12
+ - **Factory / logistics digital twins** — conveyor lines, transports, racks, AGV, port, crane, …
13
+ - **3D / mixed-reality scenes** — IFC building models, URDF robots, 3D visualizer
14
+ - **Geospatial views** — Google Map, indoor map, polypath
15
+ - **Custom integrations** — GraphQL, RESTful, InfluxDB, OpenAI, MS Graph, weather, KR Juso/Data.go.kr, …
13
16
 
14
- ```
15
- $ yarn install && yarn upgrade
17
+ All of the above are plug-in *scene components*: drop them onto a board, wire them with bindings, and they animate, render, and respond to live data without writing application code.
18
+
19
+ ## Key features
20
+
21
+ - **Visual modeler** — drag-and-drop board authoring with property panels, layers, and bindings
22
+ - **Multi-mode runtime** — same board renders as a flat dashboard or a 3D world depending on viewer mode
23
+ - **Embedded simulation** — carriers, transports, and flow logic can be simulated in-place for design-time validation
24
+ - **Real-time data** — push subscriptions over GraphQL, polling integrations, and offline-capable client cache
25
+ - **Auth & licensing** — domain-scoped accounts, Azure AD / Google SSO, host-bound license enforcement
26
+ - **Internationalization** — built-in i18n for both authoring UI and runtime scenes
27
+ - **Extensible** — `@operato/scene-*` packages register components through a `sceneComponent` decorator; add your own without forking
28
+
29
+ ## Tech stack
30
+
31
+ | Layer | Stack |
32
+ |---|---|
33
+ | Language | TypeScript |
34
+ | UI | Web Components + LitElement |
35
+ | Graphics | `@hatiolab/things-scene` (canvas + WebGL/Three) |
36
+ | Backend | Node.js · `@things-factory/shell` (Express) · TypeORM |
37
+ | API | GraphQL (primary) · RESTful (fallback) |
38
+ | Auth | Passport + JWT · Google · Azure AD |
39
+ | Build | Webpack 5 · Lerna · Yarn workspaces |
40
+
41
+ ## Prerequisites
42
+
43
+ - Node.js **20 LTS** or later
44
+ - Yarn (Classic, v1.x)
45
+ - A supported database (PostgreSQL recommended; SQLite works for development)
46
+
47
+ ## Develop
48
+
49
+ ```bash
50
+ yarn install
51
+ yarn serve:dev
16
52
  ```
17
53
 
18
- ## run
54
+ Then open <http://localhost:3000> and sign in with the seeded admin account:
19
55
 
56
+ - id: `admin@hatiolab.com`
57
+ - password: `admin`
58
+
59
+ ## Build
60
+
61
+ ```bash
62
+ yarn build # build server + client
63
+ yarn build:app # build a deployable webpack bundle
20
64
  ```
21
- $ yarn serve:dev
65
+
66
+ ## Production install
67
+
68
+ Use the provided installer to download and lay out a release into a target folder:
69
+
70
+ ```bash
71
+ curl -fsSL https://raw.githubusercontent.com/things-factory/things-factory/master/packages/operato-board/installer/install.sh | bash -s
22
72
  ```
23
73
 
24
- ## browser
74
+ This produces:
25
75
 
26
- - http://localhost:3000
27
- - login with id/password (admin@hatiolab.com / admin)
76
+ | Script | Purpose |
77
+ |---|---|
78
+ | `start.sh [port]` | Start the application (defaults to port 4000) |
79
+ | `stop.sh` | Stop a running instance |
80
+ | `migrate.sh` | Run database migrations (required on first start) |
28
81
 
29
- ## install
82
+ First-time setup:
30
83
 
31
- - operato-board installation script
84
+ ```bash
85
+ ./start.sh
86
+ ./migrate.sh
87
+ ./stop.sh
88
+ ./start.sh 80
89
+ ```
32
90
 
33
- - create a folder for the application and change directory to your folder.
34
- - the script will download a& install operato-board
91
+ ## Docker
35
92
 
36
- ```
37
- # install script for operato-board
38
- curl -fsSL https://raw.githubusercontent.com/things-factory/things-factory/master/packages/operato-board/installer/install.sh | bash -s
39
- ```
93
+ Pre-built images are published to Docker Hub:
40
94
 
41
- - run 'start.sh' to start operato-board and 'stop.sh' to stop the running applicaton.
42
- - on initial start, run 'migrate.sh' first to migrate database.
95
+ ```bash
96
+ # pull & run the latest amd64 image on host port 4000
97
+ docker run --platform linux/amd64 -p 4000:3000 hatiolab/operato-board:latest
98
+ ```
43
99
 
44
- ```
45
- # data migration
46
- $ ./start.sh
47
- $ ./migrate.sh
48
- $ ./stop.sh
100
+ Build locally:
49
101
 
50
- # restart with service port no. defualt uses 4000
51
- $ ./start.sh 80
52
- ```
102
+ ```bash
103
+ yarn docker # amd64
104
+ yarn docker:arm # arm64
105
+ yarn docker:cn # mainland-China mirror variant
106
+ ```
53
107
 
54
108
  ## License
55
109
 
56
- ### License request process
57
-
58
- Edit bellowing data and send request to license manager(syj0130@hatiolab.com)
59
-
60
- - **Product Type** : Things or Operato
61
- - **License Type** : Production or Evaluation
62
- - **Purchase Date** : License purchased date
63
- - **Expiration Date** : License expiration Date
64
- - **Host Address** : host or UNLIMITED
65
- host can be
66
- - host: sub.scond-level.top-level
67
- > ex) board.hatiolab.com, \*.hatiolab.com
68
- - ip :
69
- > ex) 192.168.1.9, 192.168.\*.\*,
70
- - **Max Target(Board) Count**
71
- - Board count by domain
72
- - 0 means unlimited
73
- - **Max Domain Count**
74
- - Max domain count in this host
75
- - 0 means unlimited
76
-
77
- ### license format
110
+ Operato Board is shipped under the **MIT License**, but production deployments are gated by a host-bound license key.
111
+
112
+ ### Requesting a license
113
+
114
+ Email the following to the license manager at <syj0130@hatiolab.com>:
115
+
116
+ - **Product Type** `Things` or `Operato`
117
+ - **License Type** `Production` or `Evaluation`
118
+ - **Purchase Date / Expiration Date**
119
+ - **Host Address** — hostname, IP, wildcard (e.g. `*.hatiolab.com`, `192.168.*.*`), or `UNLIMITED`
120
+ - **Max Target (Board) Count** — `0` = unlimited
121
+ - **Max Domain Count** — `0` = unlimited
122
+
123
+ ### License file format
78
124
 
79
125
  ```json
80
126
  {
81
127
  "License Type": "Evaluation",
82
- "Purchase Date": "2021.03.23",
83
- "Expiration Date": "2021.06.30",
128
+ "Purchase Date": "2026.01.01",
129
+ "Expiration Date": "2026.12.31",
84
130
  "Host Address": "UNLIMITED",
85
131
  "Max Target Count": 0,
86
132
  "Max Domain Count": 0,
87
- "Key": ""
133
+ "Key": "<issued-key>"
88
134
  }
89
135
  ```
90
136
 
91
- ### import license
137
+ ### Wiring the license
92
138
 
93
139
  ```js
94
- var licenseKey = require('./license').Key // import license file
140
+ const licenseKey = require('./license').Key
141
+
95
142
  module.exports = {
96
143
  accessTokenCookieKey: 'access_token.board',
97
- licenseKey: licenseKey // put license key value to here
144
+ licenseKey
98
145
  }
99
146
  ```
147
+
148
+ ## Links
149
+
150
+ - Hatiolab — <https://www.hatiolab.com>
151
+ - things-factory platform — <https://github.com/hatiolab/things-factory>
package/_index.html CHANGED
@@ -3,10 +3,10 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="google" content="notranslate" />
6
- <title>Operato Board</title>
6
+ <title>Operato Board · Zero-to-Twin</title>
7
7
  <meta name="generator" content="Things Factory Starter Kit" />
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
9
- <meta name="description" content="Things Board Micro-Module Edition" />
9
+ <meta name="description" content="Zero-to-Twin." />
10
10
 
11
11
  <base href="/" />
12
12
 
@@ -21,13 +21,13 @@
21
21
  <!-- Add to homescreen for Chrome on Android. Fallback for manifest.json -->
22
22
  <meta name="mobile-web-app-capable" content="yes" />
23
23
  <meta name="application-name" content="Operato Board" />
24
- <meta name="application-description" content="Reimagining Visualization" />
24
+ <meta name="application-description" content="Zero-to-Twin." />
25
25
  <meta name="application-copyright" content="Copyright © hatiolab.com. All Rights Reserved." />
26
26
  <link rel="application-icon" href="/assets/manifest/icon-96x96.png" />
27
27
 
28
28
  <!-- Add to homescreen for Safari on iOS -->
29
29
  <meta name="apple-mobile-web-app-capable" content="yes" />
30
- <meta name="apple-mobile-web-app-status-bar-style" content="default" />
30
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
31
31
  <meta name="apple-mobile-web-app-title" content="Operato Board" />
32
32
 
33
33
  <!-- Homescreen icons -->
@@ -42,20 +42,16 @@
42
42
  <meta name="msapplication-TileColor" content="#897067" />
43
43
  <meta name="msapplication-tap-highlight" content="no" />
44
44
 
45
- <!-- Default twitter cards -->
45
+ <!-- Open Graph / Twitter cards -->
46
46
  <meta name="twitter:card" content="summary" />
47
- <meta name="twitter:site" content="@username" />
48
47
  <meta property="og:type" content="website" />
49
- <meta property="og:site_name" content="things-board" />
48
+ <meta property="og:site_name" content="Operato Board" />
50
49
  <meta property="og:image" content="assets/manifest/icon-144x144.png" />
51
50
 
52
- <!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
53
- <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
54
51
  <link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
55
52
  <link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
56
53
  <link rel="stylesheet" href="/theme.css" />
57
54
 
58
- <!-- Global site tag (gtag.js) - Google Analytics -->
59
55
  <script src="/static/index.js" defer></script>
60
56
  </head>
61
57
  <body class="light">
@@ -63,7 +59,5 @@
63
59
  <noscript> Please enable JavaScript to view this website. </noscript>
64
60
  <!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
65
61
  <script src="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
66
-
67
- <!-- Built with love using PWA Starter Kit -->
68
62
  </body>
69
63
  </html>