Core Developer Concepts
The 0.9.50 SDK separates four things that are easy to accidentally treat as one:
| Layer | Question it answers |
|---|---|
| Declaration | What data exists, which constraints describe it, and how may it be collected? |
| Compilation | Is the declaration internally consistent, and what normalized artifacts does it produce? |
| Runtime state | What has this visitor entered, touched, revealed, repeated, or submitted? |
| Transport | Which artifact is sent to BusinessDash, and which remains inside your application? |
The data flows in one direction:
collection() + bd.* + optional layout
│
▼
createFormSchemaOrchestrator()
│ │
▼ ▼
databaseSchema uiFormTree
│ │
▼ ▼
data-model CLI your renderer/store
databaseSchema and uiFormTree share a declaration source, but they are
different outputs. The database CLI transports only databaseSchema.
uiFormTree is a local render definition, not live form state and not a
dashboard-authored FormSchema.
Read these concepts first
- Definitions and Runtime — understand compiled definitions, outputs, and transport boundaries.
- Validation and Form State — separate validation rules from current errors and visitor state.
- Inferred Types and Custom Forms — reuse collection types in Zod, React Hook Form, shadcn/ui, and code-owned UI.
- Boundaries and Layout — understand why feature ownership is independent from steps and groups.
Then build the declaration progressively in Schema Declarations.