Artifacts
An artifact is the unit you author in wasabi: a declarative definition of a piece of your app, with no separate backend and frontend to keep in sync. There are four kinds:
- A form defines a data-entry screen and the shape of the records behind it, with validation and layout.
- A data source brings reference and tabular data into your app, from inline tables, files, or live collections.
- A browser configures how a collection of records is presented and acted on.
- A template generates text, such as a document or an email body, from record data.
Each artifact is a concise definition, and artifacts reference each other by name, for example a form field that points at @data/regions, so shared pieces are defined once and reused.
kind: form
label: Customer
fields:
name: { type: string, required: true }
region: '@data/regions'When you publish, a compiler validates every artifact, resolves those cross-references, catches cycles, and emits an immutable, content-hashed snapshot with full provenance: who published it, when, and exactly which version each reference resolved to. That snapshot is what deploys to the runtime. Because a version is identified by the hash of its content, an app is reproducible and auditable by construction, and nothing shifts underneath a running app until you publish again.
Artifacts are the foundation the rest of these concepts build on: views shape a data source, browsers present one, and workflows drive forms as people do their work.