Today Platform Web — Dev Docs
Workspace

Docs sites — boundary

The hard rule for which of the three Fumadocs sites a given doc belongs in. Read once so you never write a doc in the wrong place.

The monorepo has three Fumadocs sites. They are deliberately separate. Putting a doc in the wrong one is the single most common docs mistake; this page exists to make the rule unambiguous.

The three sites

SitePackageOwnsRead by
apps/dev-docs (this one)@today/dev-docshow this monorepo runsnew contributors + AI agents
apps/webview-bridge-docs@today/webview-bridge-docsthe WebView Bridge wire contract + web SDKnative client implementers + web SDK users
design-system/docs@today/tdx-docsthe TDX design system (tokens, ui, opal) for consumersproduct developers using TDX

The decision table

If your doc is about...It belongs in...
The TDX Button component's props or usagedesign-system/docs
A new TDX design tokendesign-system/docs
A new TDX Opal flow primitivedesign-system/docs
The WebView Bridge track capability's payload shapeapps/webview-bridge-docs → contract
How to write web code that calls @today/webview-bridgeapps/webview-bridge-docs → web SDK
How iOS should implement the bridgeapps/webview-bridge-docs → platforms
Why this repo uses tsgo --build instead of tsc --noEmitapps/dev-docs → toolchain
The PR-A...PR-Z letter conventionapps/dev-docs → workflow
How scripts/affected.ts worksapps/dev-docs → workflow
The Better-Auth oauthProviderClient.onRequest injection quirkapps/dev-docs → architecture
How to run Playwright smoke tests locallyapps/dev-docs → toolchain → testing
The OpalShaderShell used by the three auth pagesapps/dev-docs → architecture (it's a cross-package shell, not a TDX primitive)
The chat runtime's MessageStore APIapps/web/docs/chat/ — single-app local docs, not any Fumadocs site
How to write a new .claude/skills/ skillapps/dev-docs → automation

The principle

When a doc could plausibly live in two sites, choose the one closest to the code it describes, and link from the other site:

  • Component / contract / package reference → near the published package (design-system/docs, webview-bridge-docs, or the package's README.md).
  • Repo-wide operations and cross-package architecture → this site.
  • Single-app deep internals that one team owns → local apps/<app>/docs/.

Cross-site linking is encouraged: this site has a chapter on the bridge from the repo-wide architecture angle ("which apps mount the bridge, how the fallback is wired"), but it points to apps/webview-bridge-docs for the contract itself. Don't paste the wire contract into multiple sites — pick one home and link.

Why three sites instead of one

Each site has a distinct publishing audience:

  • webview-bridge-docs is read by external native teams who may not even have the rest of this monorepo checked out. It needs to be self-contained.
  • design-system/docs is read by product developers and designers who want a zero-friction component reference. It should not be cluttered with build toolchain details.
  • dev-docs is read by people working in this repo. It expects you to have the repo open in your editor.

Mixing these would either dilute the audience-specific surfaces or force every reader to filter out 80% of the content. The cost is one extra Vercel project per site; the benefit is each site stays focused.

Renaming, deprecating, or splitting a site

This site is the canonical place to record any change to the docs-site topology. If a future PR adds a fourth site, splits one, or merges two, update this page in the same PR — otherwise contributors will keep writing into the wrong one.

On this page