What is a Surface?
A surface is one page inside an app, and the unit the platform API addresses. It is the render of a Receipt: reproducible, versioned, and capability-bound from the moment it ships.
Start with What is an App? if you have not read it. An app is what a customer gets — its pages together with the records they write, the sign-in its visitors use and the appearance that ties them together. A surface is one of those pages. Composing a surface is not the same as shipping an app; publishing, addresses and exports belong to the app, not to the page.
Page vs Surface
Pages are documents you author once and update by hand. Surfaces are the materialised form of a Receipt — a line-numbered recipe of blocks, properties, capabilities and theme that PhiCo proposes and you accept before publish.
| Page | Surface |
|---|---|
| Static document | Receipt-materialised render |
| Hand-authored content | Composable from a typed catalog |
| One-shot render | Reproducible from the same Receipt |
| No audit trail | Diffable revision history |
What a surface carries
- Identity — an ID that stays stable as the surface changes.
- Metadata — title, slug, description and preview image.
- Blocks — the tree of typed pieces that renders.
- Capabilities — the powers it declared, and their configuration.
- Revisions — every accepted Receipt, kept as a snapshot.
How surfaces change
Every change is a new Receipt, and nothing publishes until a human accepts the diff.
- Add capabilities — any of the canonical four:
platform/persistence,platform/entities,platform/navigation,platform/interaction. Their configuration goes into the Receipt. - Revision history — every accepted Receipt is a snapshot; roll back to a previous one, or diff two of them line by line. How far back the history reaches depends on your plan.
- Responsive layout — block layouts declare
xs/sm/md/lgbreakpoints, and the runtime renders the right one per device.
Surfaces connect
- Link — navigate to the other surfaces of the same app.
- Share — travel with their app when it is published, exported or listed on the marketplace.
- Inherit — start from a starter and change it.
Going live is an app-level act: an app claims one public address and every one of its surfaces is served under it. See Publishing your app.
Surface composition
Surfaces are composed from blocks:
Surface
├── Block (container)
│ ├── Block (heading)
│ ├── Block (text)
│ └── Block (button)
├── Block (grid)
│ ├── Block (image)
│ └── Block (image)
└── Capabilities
├── persistence
├── interaction
└── navigationLearn more about blocks and the composition model.
Next
- What is an App? — the whole a surface belongs to
- Create your first app
- Explore block primitives