One word per thing
The words Dee Wan uses in its screens and documentation, and what each one means. Where a word could mean two things, the entry says which one we mean and what we call the other.
Installation and sites
Section titled “Installation and sites”Installation
Section titled “Installation”One deployment of Dee Wan: an admin Worker, the admin UI, a control database, and the accounts
behind them. The command-line installer (npm run setup) creates it. The
web installer preview drives the same installer but is not a supported
install path.
- One installation serves many sites.
- It has one control database and one set of superadmins.
- Not “an install of a site”. A site is created inside an installation, not installed.
One tenant inside an installation: a name, a slug, a hostname, and its own content, languages, roles and grants.
- Created in the admin UI, never by the installer.
- A site’s hostname (its domain) is where its public read API serves requests. The
Hostheader of a public request must equal it. - Depending on the installation’s topology, a site has its own content database or shares one.
Cloudflare zone
Section titled “Cloudflare zone”The Cloudflare object that holds a domain’s DNS and edge settings. Cache purge credentials and rate limiting are configured per Cloudflare zone. Always written “Cloudflare zone” in these documents, so it is not confused with an ownership zone.
Content
Section titled “Content”The definition of one kind of content: its fields, and whether it is public or private. A model’s
slug is the path segment in /v1/<model>.
A model property with a name and data type: text, rich text, number, boolean, select, date, media, JSON, relation or component. A relation field links an item to items of another model.
Content item
Section titled “Content item”One entry of a model, for example one article. It has an id, a slug, and content in one or more
languages. In API responses, instance_id means a content item’s id.
Translation group
Section titled “Translation group”The language versions of one content item, kept together. Each language has its own workflow stage and its own published version. A group action moves every language at once; a language action moves one. (Older text may say “locale group”. It means the same thing.)
Locale policy
Section titled “Locale policy”A per-site setting for what the public API does when an item has no content in the requested language:
- strict: nothing is served for that language. Fallback languages are ignored.
- fallback: the requested language, then that language’s own fallback languages in the order
the site lists them (each expanded through its own fallbacks), then the site’s default language,
then the item’s own primary language. Only a published language is served. The response’s
localesays which language was served.
Publishing
Section titled “Publishing”Making a content item’s current version the one the public read API serves. Publishing acts on one language, or on every language of the translation group at once. Unpublishing one language withdraws only that language; the others stay live.
- Changes what
/v1/…answers on the site’s public hostname. It changes no code and deploys nothing. - Not “publishing the site”. A site is not published. Its content is.
Snapshot
Section titled “Snapshot”The immutable copy of an item’s content written when it is published. The public read API serves snapshots. Each has a version number. A snapshot is never edited: restoring an older version creates a new version.
A content item whose model has a slides field holding a page document. See the
page-document contract.
Public reading
Section titled “Public reading”Public read API
Section titled “Public read API”The read-only HTTP API on a site’s hostname, under /v1/. See the
public read API reference.
Public model, private model
Section titled “Public model, private model”A public model is readable by anyone. A private model is readable only with a site API token that names it. A request for a private model without a valid token gets the same 404 as a model that does not exist.
Site API token
Section titled “Site API token”A bearer token, created under Settings → API, that reads the private models it names. It starts
with dw_site_ (or dw_site2_ after a signing-key rotation), is shown once, may expire, and can be
revoked.
Preview token
Section titled “Preview token”A short-lived token (dw_prev_…) the CMS creates when an editor opens a preview. It grants access to one item’s draft
for 30 minutes. It is not a site API token.
Cursor
Section titled “Cursor”The opaque page.next_cursor value used to fetch the next page of a list. Send it back unchanged.
Standalone backend
Section titled “Standalone backend”Standalone backend
Section titled “Standalone backend”A typed backend project generated from a site’s models and published content: a Prisma schema, migrations, a Worker and typed routes, written into a repository you own. Settings → Source & delivery provides delivery and deployment controls; source generation runs locally.
- Its API makes no calls to Dee Wan at runtime.
- Generating it deploys nothing.
- It is generated on your machine (
npm run backend:generateornpm run backend:deliver). The CMS has no hosted source compiler. - It is a release of schema and content, not a live feed: later publishes reach it only when it is regenerated and redeployed.
Graduation is the internal name for this. You will see it in file names, such as
graduation.manifest.json. It means the same thing as generating a
standalone backend.
Ownership zone
Section titled “Ownership zone”Which files in a standalone backend belong to whom: generated (rewritten on every
regeneration), owned (src/owned/, never overwritten) or shared (written once, then
yours). See Extending your backend. An ownership zone is not a Cloudflare zone.
Detachment
Section titled “Detachment”Stopping regeneration from Dee Wan and keeping the standalone backend as an ordinary repository. See the detachment contract.
Deployment and provisioning
Section titled “Deployment and provisioning”Deployment
Section titled “Deployment”Getting a specific revision running on Cloudflare. The term refers to two different operations:
| Term | Acts on | How |
|---|---|---|
| installation deployment | the admin Worker and admin UI | npm run deploy |
| site deployment | one standalone backend’s Worker and database | the Deploy button, which calls the build webhook to the repository’s CI |
Generating a standalone backend produces the code. A site deployment runs it.
Provisioning
Section titled “Provisioning”Creating the Cloudflare resources something needs (databases, storage, DNS) and recording that they exist. Provisioning makes the resource. Deployment puts code on it.
Words we avoid
Section titled “Words we avoid”| Avoid | Because | Say |
|---|---|---|
| “tenant” in the UI | it is an implementation word | site |
| “instance” for an installation | it also means a content item | installation |
| “migrate” for importing content | migration means a schema change | import |
| “export” or “graduate” for the standalone backend | export is content leaving. Graduate names a mechanism | generate standalone backend |
| “locale group” | two names for one thing | translation group |
| “zone” on its own | it has two meanings | Cloudflare zone, or ownership zone |
| “sync” | it has meant several things | name the direction |
| “workflow” for a site with review off | the site has no review stage enabled | publish / unpublish |
Unreleased / pre-MVP; no stable version
Source revision: fe23db481c422b40e317b92fc98116b4c0c26a87 (modified checkout)
Build date (UTC): 2026-10-18T09:22:34.630Z
Upgrade target: unavailable: modified checkout. Release notes