How the system is assembled
Updated
ZuloOne is metadata plus C# scripts. An application object is a json description. Behaviour that metadata cannot express is a script. From those two the platform generates the tables, the entity classes, the REST API, and the screens.
Note
Adding a module means adding metadata and scripts in a model. It does not mean a new controller, a migration, or a UI component. Those are kernel work.
This page is the kernel map. Kinds of metadata hang under Kinds. One object at a time hangs under Sales, Purchasing, Warehouse — the catalog. There are no SQL migrations. Schema builds physical tables without foreign keys in the database. Scripts stay sandboxed: no file system, network, or process APIs.
Kernel#
| Piece | What it is |
|---|---|
| Models and layers | The unit of ownership and of transfer. Extensions only look down. |
| Metadata | The Meta* rows. The kinds of object the kernel knows. |
| Identity | MetaId is the PK. ID is the human number. Keys are not portable. |
| Permissions | Roles and MetaObjectPermissions. A command with no Execute row is open. |
| Scripts | Events, commands, postings, services. Compiled in process, sandboxed. |
| Schema | SchemaSynchronizer makes physical tables. There are no FKs in the database. |
| Runtime | CRUD, events, posting, SignalR, the compiler in memory. |
| Posting | IDocumentPostingService, Mix, tx scripts, the posting boundary. |
| Totals | IRegisterMovementService / ITotalsManager, Mix, totals drivers. |
Kinds#
A kind page is the vocabulary. An object card is one entity.
| Kind | Role |
|---|---|
| Model | A deliverable folder with a version |
| Dictionary | Master data |
| Document | An operation with states |
| Table part | The lines of a document |
| Link table | An M:N link (LT_) |
| Command | The button that changes a document's state |
| Posting script | The movements a state writes |
| Accumulation register | Totals that documents move |
| Information register | A slice of values over time |
| EDT | The type of a field |
| Enum | A closed list stored as an integer |
| Global constant | A named value the model ships |
| Service | Logic more than one script calls |
| Job | A scheduled or on-demand script in a model |
| Web service | RPC /api/rest/{Name} |
| Data entity | A public OData collection |
| Form | A screen that is not a record card |
| Print form | A MetaPrintForm bound to a document or dictionary |
| Menu | How the user reaches an object |
| Number sequence | The human ID / Number |
| Data package | Seed JSON the model ships |
How to create each of these is What to create, not this tree.
The catalog lists each object on its own card. This tree is the map of those cards.