wisewigdocs

WiseWig overview

WiseWig is an Astro-first CMS framework for agencies and developers building small-business sites. The public site is server-rendered HTML that can be edge cached. An authenticated editor sees that same page rendered from draft content inside a React editor workspace. There is one component implementation per feature, not separate public and editable components.

The mental model

ConceptWhat it owns
SiteA customer-facing hostname, pages, settings, navigation, forms, redirects, media, and a selected developer-owned theme.
PageA stable ID, one-segment route slug, title, SEO description, and a typed document of sections. The empty slug is the protected home page.
ComponentA developer-defined, schema-validated section type: its content fields, defaults, editor controls, approved variants, and structural/placement limits.
ThemeAppearance tokens and layout slots. Themes style and arrange components; customer content does not contain arbitrary CSS or HTML.
Draft and published stateEditors change drafts. A confirmed publish makes a version public. Published requests do not load editor metadata or perform authentication work.
Editor workspaceA same-origin, server-rendered draft page that acts as the canvas, plus a narrow React sidebar. Inline fields own the caret; the sidebar owns the palette, approved controls, assets, save state, preview, and publishing without hydrating the whole site.
Hosting adapterThe implementation of persistence and deployment. Cloudflare is the reference adapter: D1 controls tenants/domains, a tenant Durable Object serializes writes, and R2 stores asset bytes.

Editing boundaries

The component developer, not a page editor, decides the allowed changes:

  • Content — schema-defined property values such as heading, image, FAQ items, or a link.
  • Presentation — named variant choices such as left, center, or split.
  • Structure — whether an instance can move, be removed, or be duplicated, plus instance limits.
  • Placement — regions and limits in which the component may appear.

WiseWig does not persist arbitrary rendered HTML, arbitrary iframe code, arbitrary classes, or editor-authored JavaScript. The public and private MCP services follow the same boundary: public tools see public content only; engagement and personal data are private, permission-gated tools.

Rendering modes

ModeContentCache policyEditor UI
publishedPublished snapshotPublic edge cacheNone
previewDraft snapshotprivate, no-storeNone or minimal controls
editDraft snapshotprivate, no-storeReact workspace and edit metadata

The browser editor is the first supported workspace. It is intentionally document-like: edit text where it appears, drag approved components onto the page, and use the sidebar only for properties or operations that need more space. The browser extension remains a convenience launcher for the same server-owned experience rather than a second editor implementation. Both start the site’s OAuth flow and activate a server-only editing-mode marker on an ordinary clean page URL. /api/auth/start provides browser-only entry, and ?__edit=1 remains a compatibility request. The mode marker, fallback route, and query parameter never grant a role: the server validates a signed revocable session, current tenant/site membership, and the exact permission before loading a draft or accepting a mutation.

What is concrete today

The tested reference site supports twelve marketing components: Hero, Content, Image + Text, Card Grid, Gallery, Testimonials, FAQ, Contact Details, Form, Call to Action, Video/approved YouTube embed, and Download. The management UI supports page templates, routing, SEO, primary navigation synchronization, redirects, and atomic publish of that page-routing bundle.

Start with Getting started, then use the component interface reference when you need custom behavior. For the agency handoff/deployment path, see Agency five-page workflow.