Project structure and loading
Documentation status: reference — see Maturity and evidence.
A logiCells application is assembled from coordinated declarative artifacts. A file existing on disk is not enough: it must be reachable through the application, package and manifest loading chain.
Main artifact families
| Artifact | Responsibility |
|---|---|
.application.yaml / .application.xml |
Runtime assembly: packages, services, storage, resources and execution options. |
.package.yaml / .package.xml |
Loadable module and its items, services and package resources. |
ClassItems.manifest.yaml / .xml |
Explicit allow-list of loadable classes in a model folder. |
*.model.yaml / .xml |
Concepts, facets, fields, relations, collections, actions, events and view attachments. |
*.form.yaml / .form |
View/page projection, data cache, DataSources, cursors, page model and components. |
*.service.yaml / .xml |
Publication contract for routes, endpoints, actions or virtual pages. |
A useful public project shape is:
project/
configurations/
BaseConsole.Memory.application.yaml
BaseConsole.Persistent.application.yaml
packages/
TaskManagement.package.yaml
meta/
TaskManagement/
ClassItems.manifest.yaml
Task.model.yaml
Project.model.yaml
TaskBelongsToProject.model.yaml
views/
TaskEdit.form.yaml
TaskList.form.yaml
services/
TaskManagement.service.yaml
tests/
Loading chain
Treat this sequence as the first debugging invariant:
application configuration
-> enabled package
-> schema/model path
-> ClassItems manifest
-> model declaration
-> metadata compilation
-> conceptual memory initialization
If a class cannot be resolved, diagnose this chain before investigating business code, views or actions.
XML and YAML
XML and YAML are two representations of the same declarative contract. Do not migrate notation as part of a first debugging exercise. Preserve the validated source-of-truth convention of an existing project; for a new project, choose one canonical representation and keep equivalent examples paired where useful.
First-success strategy
Start with the smallest executable path: load a package, expose one class through a manifest, compile one entity model, attach a persistence projection if needed, bind one view, create/edit/save one object, then add collections, actions, events and services incrementally.