Projects
A project is the unit of authored work. One gateway hosts many projects; each has its own views, scripts, named queries, pipelines, assets and runtime identity binding.
What a project owns
| Owned by the project | Shared across the gateway |
|---|---|
| Views (operator screens) | Connections |
| Client and Gateway scripts | The tag namespace and bindings |
| Named queries | User-defined types |
| Pipelines and their execution history | Alarm definitions (attached to tags) |
| The asset/file tree | The file library |
| Its LiveView access policy and identity binding | Platform users, roles and permissions |
The split is deliberate: the plant model is one thing; the applications built on it are many. Two projects can present the same tags to different audiences without duplicating the namespace.
Naming
| Field | Rules |
|---|---|
| Name | The URL slug. Lowercase letters, digits, - and _; must start with a letter or digit. No spaces. Immutable in practice — it appears in every LiveView URL. |
| Title | Free text, shown in the interface. Change freely. |
| Description | Free text. |
The name becomes the first path segment of every runtime URL:
https://qubiq.example.com/line1-hmi LiveView home
https://qubiq.example.com/line1-hmi/login runtime login, when identity is bound
Choose it as carefully as you would a hostname.
Lifecycle
| State | Effect | Permission |
|---|---|---|
| Active | Normal. Pipelines run, LiveView serves. | — |
| Disabled | Pipelines stop, entry is blocked, all data is retained. Fully reversible. | Manage projects |
| Trashed | Removed from the project list, retained for 30 days, then eligible for permanent deletion. | Manage projects |
| Purged | Permanently deleted. | Manage projects |
| Deleted | Immediate deletion, bypassing the trash. | Delete projects |
Disabling is the right tool for "take this offline, keep everything" — an out-of-service line, a project pending review, a commissioning environment. Trash is for "I believe this is finished" with a safety net.
Permissions
| Action | Permission |
|---|---|
| See the project list and open a project | View projects |
| Create a project | Create projects |
| Edit name, title, description | Edit projects |
| Disable, enable, trash, restore, purge | Manage projects |
| Delete outright | Delete projects |
| Export/import the view tree | Manage the Designer |
| Export/import a project backup | Manage projects (import: Create projects) |
Project resources
Everything a project contains is addressed under one namespace and served through a single resource API, which is also what LiveView loads at runtime.
| Resource | What it is |
|---|---|
| Manifest | The project's declared structure: views, routes, exports, settings. |
| Views | One resource per screen, addressed by slug. |
| Scripts | Client scripts (browser) and Gateway scripts (server-side Python entry points). |
| Named queries | Saved, parameterised queries with their connection baked in. |
| Access policy | Who may view the project's runtime, and how. |
| Files | Images, models, documents and other assets in the project tree. |
Resources are optimistically locked: saving a view carries the revision you loaded, and a conflicting concurrent save is rejected rather than silently overwriting. Two engineers on the same screen get a conflict to resolve, not a lost edit.
Runtime identity binding
A project may be bound to a User Database — an external identity source for its operators.
- Unbound (default): LiveView is public. Anyone who can reach the URL sees the screens.
- Bound: LiveView requires a runtime login at
/{project}/login, and runtime roles govern what each operator may see and write.
The binding is authoritative and is written only through its dedicated endpoint — never through the project manifest, so an author cannot grant themselves access by editing a resource.
Backup and transfer
Two granularities:
| Scope | Contains | Use for |
|---|---|---|
| Project backup | One project's resources, assets and pipeline definitions | Moving an application between environments |
| Gateway backup | Connections, namespace, tags, bindings, alarms, UDTs, users and the project registry | Disaster recovery, machine migration |
Both can be passphrase-encrypted; only an encrypted archive carries connection secrets.