Architecture
Nodelab uses a container environment, with a backend Java/Spring server, called Nodelab Engine, and a frontend NGINX/Angular server, called Nodelab Control.
The Nodelab Control has an administration page, used for editing and viewing applications and data.
It can also publish pages for non-administrators to view.
The Nodelab Engine has proprietary APIs, for fundamental editing of local data like asset information.
The 'com.nodelab.api' package can also be used to publish dynamic APIs.
The APIs may be accessed both by Nodelab Control in a browser and external consumers.
Local data is stored as files, which can be stored, synchronized and shared with a GIT repository.
- UNN is a CSV format for storing node data. The CSV format is useful for bulk editing of large data structures.
- Edgescript is a programming language, inspired by Swift and SQL, but with modifications to support Nodelab.
- Excel and CSV files are uploaded to the file system and parsed into the PostgreSQL database.
Dynamic data is accessed through assets, which is a DataStream abstraction.
The PostgreSQL database is used for caching and accessing parsed data.
Edgescript supports automatic caching of asset replies.
Diners are local databases with any number of tables, which may be used for publishing data to external consumers.
Deployment
-
A configuration contains information about the Nodelab Engine Spring server, including
Java application configuration.
A vault contains information about private and public keys for secure communication and storage. -
A deployment contains files for a backend environment.
A deployment normally contains one site, but may contain multiple, e.g. when developing,
testing or comparing multiple sites.
Users are defined on deployment level, and shared for all sites. - A site contains data about one production environment. It may contain any number of accounts.
-
An account contains data and applications for an organization.
Roles and permissions are defined per account. - A project is a package that contains data and applications for an organization project.
- A project may be split into multiple domains to segregate data but share functionality, e.g. for different departments.
Package
A package is a protocol for communicating data and behavior.
A package may be globally defined, with a package identifier like 'org.nodelab.asset', or
a project, with a package identifier like '@main' or '@f3eab6c83a'.
A package has two parts; application and data.
An application of one package is applied on data from one package.
The packages may be different, e.g. if a common application is used in many projects, but one package may be
applied on itself, e.g. to bundle data with data models and applications.
A application is defined with the Edgescript programming language.
- Classes are data models with storage information.
- Context states are states that may be shared between the menu and different pages of the application.
- The menu is used viewing data content and opening pages.
- Pages are declarative Edgescript code for building interactive pages.
All Nodelab Control pages are defined using Edgescript, which means that dynamic pages of any project may have similar looks and interactions as the preloaded packages.