Skip to content
Dee Wan 1.0 is not yet released (pre-MVP). See the 1.0 product boundary.

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.

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 Host header of a public request must equal it.
  • Depending on the installation’s topology, a site has its own content database or shares one.

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.

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.

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.

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.)

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 locale says which language was served.

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.

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.

The read-only HTTP API on a site’s hostname, under /v1/. See the public read API reference.

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.

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.

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.

The opaque page.next_cursor value used to fetch the next page of a list. Send it back unchanged.

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:generate or npm 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.

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.

Stopping regeneration from Dee Wan and keeping the standalone backend as an ordinary repository. See the detachment contract.

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.

Creating the Cloudflare resources something needs (databases, storage, DNS) and recording that they exist. Provisioning makes the resource. Deployment puts code on it.

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