Snazy

Documentation · Snazy, explained in plain language.

Reference: how it all works

The guides tell you where to click. This page tells you what the machinery is actually doing, system by system, and how the systems fit together. Nothing here is required reading; all of it is true.

The request pipeline

Every address on a Snazy site is a query: ?page=slug (the home page is ?page=home). When a request arrives:

  1. Snazy looks the slug up in your Pages first. A published Page renders through the Layout pipeline below.
  2. An unpublished Page renders only for signed-in admins (that's the preview); visitors fall through.
  3. If no Page claims the slug, built-in routes (sign-in, forum, account) get their chance.
  4. Anything else lands on the 404 page.

Because Pages are checked first, you can take over almost any address on your site just by publishing a Page with that slug.

The content model

Six kinds of thing, each with one job:

  • Template: the field schema, what a kind of content is made of. References nothing.
  • Content entry: one filled-in instance of a Template. References its Template.
  • Block: picks content and renders it. References a Template and a source.
  • Layout: the skeleton, named regions in a responsive grid. References nothing.
  • Page: a URL. References a Layout and one Block per slot.
  • Theme: the look, tokens plus styling plus advanced CSS. References nothing.

The references only point one way. Content never knows what pages show it; blocks never know what pages hold them. That one-way flow is why you can reuse everything everywhere without anything breaking.

How a page renders

The Page names a Layout; the Layout defines slots; the Page's slot assignments name a Block per slot. Each Block resolves its source:

  • A single entry: always this one entry, by slug.
  • The current page's entry: the entry whose slug matches the page's slug. This is what the Static layout uses, and why a page named about finds the entry named about.
  • A list: the newest entries of a template, with a limit.
  • A datasource: a named feed, such as every published entry of one template, rendered as a set of cards through that template's own schema.

Lists and datasources serve published entries only. Single-entry sources honor your admin preview, so a draft page showing a draft entry previews fine.

Signals, precisely

Signals is a publish/subscribe wire protocol between blocks, visible in one place: the I/O bus in Admin.

  • The bus is a rack of numbered jacks. A block field's Send names an input jack; a Receive listens on an output jack.
  • Flow requires a cord patched between an input jack and an output jack. No cord, no delivery. This is deliberate: you can silence any interaction by unpatching one cord, and you can always see the whole wiring at a glance.
  • Events that can send: a value change, a click, a key press (held keys repeat), a mouse button, and one element touching another (contact).
  • Verbs a receive can run: set text, set an attribute, toggle a class (add, remove, pulse, or flash with an auto-timeout), count with min/max/reset, track and latch positions, nudge an element, show or hide by match, navigate, submit a form.
  • Matching: a receive can limit itself to specific payload values, and list-rendered blocks can match per item (each card reacts only to its own slug). The wheel demo's cards work exactly this way.
  • Guards: a receive can require the page to be in a state ("only if this selector matches") before its verb runs. All guards are checked before any verb fires, so multi-listener steps behave atomically.

Everything from a one-cord toggle to a playable arcade game is built from nothing but these pieces; Signals walks you in gently.

Themes and rendering hooks

A theme is tokens plus an advanced CSS layer. Tokens cover the wired-up basics (core colors, type, spacing); the Style editor writes targeted rules for everything else by letting you click the element you mean.

For hand-written CSS, the markup gives you stable hooks:

  • Every block wrapper carries phpew-section--<block-slug>.
  • Every rendered entry carries phpew-content--<entry-slug>.
  • The page body carries phpew-page--<page-slug>.

So "this exact block, on this exact page" is always one selector away, and your rules survive content edits because slugs are stable.

Drafts and publishing, exactly

  • An unpublished Page: 404 for visitors, full preview for admins.
  • An unpublished entry: skipped by lists and datasources, hidden from visitors everywhere, visible in your previews through single-entry sources.
  • Nothing cascades on publish: publishing a page doesn't publish its entries, and vice versa. Each thing flips when you flip it.

The AI connector, underneath

The connector exposes the same machinery through MCP tools: reading tools (site overview, listing and fetching pages, blocks, content, templates, themes) and writing tools (saving content and blocks, patching the theme, patching cords on the I/O bus). There is one universal endpoint, connect.snazy.com/mcp; you authenticate with your account, pick a site, and the issued token is scoped to that site: the server routes each call to the site the token names, so one connection can never reach another. Access is granted per assistant by an administrator, revocable from your account’s Connected apps page or the site’s own admin, and everything it writes is ordinary content: the same drafts, the same blocks, the same wiring you’d author by hand. There is no second, hidden way into your site.

Portability

Everything above round-trips as a content bundle: templates, blocks, layouts, entries, pages, themes, and the Signals wiring that the exported blocks use. Your site's authored state is data, and it travels.

Back to all docs.

Account
Your Snazy login. An account owns sites (matched by email) and can hold several; the account is the identity, a site is something it owns.
  • Account
Advanced CSS
A theme’s layer for hand-written CSS, for anything the visual controls don’t cover. Included on every plan.
  • Themes
Announcement
A dated update entry: release notes, news, notices. Ordinary content with a date and a place to shine.
  • Content
Block
A reusable piece of page: it picks content and renders it. Built from a Template plus a source, edited with a live preview.
  • Blocks
Column
A vertical division inside a Row. Layouts arrange Rows and Columns; blocks fill them.
  • Layouts
Connected apps
The page listing every AI assistant connected to your sites, each with a Disconnect button. In your account, and per site in admin.
  • AI connector
Connector
The address an AI assistant uses to reach your site over MCP. One universal address for all of Snazy; you pick the site when you connect.
  • AI connector
Content (entry)
One piece of what your site says, shaped by its Template: an article, a FAQ item, a team member.
  • Content
Cord
A patched connection between two jacks on the I/O bus. No cord, no flow.
  • Signals
Custom domain
A web address you already own, pointed at your Snazy site. Available on any plan.
  • Account
Datasource
A named feed of entries a block can render as a set, such as every published entry of one template. Powers grids, lists, and this glossary.
  • Blocks
  • Content
Draft
Anything unpublished. Visitors cannot see it; you can, as a preview. Nothing goes live until you publish it.
  • Pages
  • Content
Effects
Ready-made motion and polish a block can carry, toggled on per block. No code.
  • Blocks
Event
What a Signals Send fires on: a value change, a click, a key press, a mouse button, or one element touching another.
  • Signals
Field
One input a Template defines: a heading, a body, an image, a date. Filling in fields is how you write templated content.
  • Templates
  • Content
Free plan
Every design and content tool, unlimited pages, a real site at no cost. Reach and commerce features live on Pro.
  • Account
Guard
A condition on a Signals Receive: it reacts only when the page is in a named state. How simple cords add up to real behavior.
  • Signals
I/O bus (patch bay)
The rack of numbered jacks where Signals wiring lives, and the one place to see everything that is connected.
  • Signals
Jack
One numbered socket on the I/O bus. Sends publish into a jack; receives listen on one.
  • Signals
Layout
A page’s skeleton: named regions in a responsive grid, holding no content of its own.
  • Layouts
Markdown
A light way to write formatted text (headings, links, lists, bold) that renders to clean HTML. Some content bodies use it.
  • Content
Match
A filter on a Receive so it answers only to specific values. List items can match per item, each reacting to its own.
  • Signals
MCP (the AI connector)
The open Model Context Protocol. Snazy speaks it so assistants like Claude and ChatGPT can read and edit your site with your approval.
  • AI connector
Media library
Your site’s shared image store, on managed storage. Upload once, use anywhere.
  • Media
Meta description
The short summary a Page carries for search engines and link previews. Each page sets its own.
  • Pages
Nav (navigation)
Your site’s menu. A Page joins it when “Include in nav” is ticked, and sort order arranges the items.
  • Pages
Page
A URL on your site: a title, a Layout, and a Block in each slot.
  • Pages
Pro plan
Adds the outward-facing machinery: a store, forms, a newsletter, community features, the AI connector, custom branding, more editors, and a write API.
  • Account
Prose
A plain writing surface for an entry’s body: paragraphs, no fields to fill in. The Article template’s body is prose.
  • Content
  • Templates
Publish
The switch that makes a draft visible to the world. Pages, entries, and changes all wait for it.
  • Pages
  • Content
Receive
A block’s listening side: it reacts to a value arriving on a jack with a verb (set text, toggle a class, count, filter, show or hide).
  • Signals
Region
A named area of a Layout (hero, body, sidebar). Regions hold the slots a Page fills with Blocks.
  • Layouts
Row
A horizontal band of a page. The Wheel appears around a Row while editing; the add-arrows create new Rows.
  • The Wheel
  • Layouts
Search box
A live search field you drop on a list: as the visitor types, a filter cord hides the items that don’t match. No code.
  • Signals
Send
A block field’s publishing side: on an event (click, keypress, typing, contact) it publishes a value into a jack.
  • Signals
Share image
The image a Page shows when its link is posted to a social network or chat. Set per page.
  • Pages
Signals
The wiring system that lets blocks talk to each other: sends, receives, jacks, and cords. Interactivity with zero code.
  • Signals
Site
One website you own on Snazy, with its own address, content, and theme. A single account can own several sites.
  • Account
Slot
One named position in a Layout that a Page fills with a Block.
  • Layouts
  • Pages
Slug
The short lowercase name that identifies a page or entry, and forms the page’s address: ?page=about.
  • Pages
  • Content
Source
Where a Block gets its content: one specific entry, the entry named after the current page, a list of entries, or a datasource.
  • Blocks
Static layout
The simplest Layout: one column that renders the content entry sharing the page’s slug. The quickest way to make a written page.
  • Pages
  • Layouts
Style editor
The click-to-style tool: click any element on your live site and change exactly that.
  • Themes
Template
The field schema behind a kind of content, driving both its edit form and its rendering. Yours to author on every plan.
  • Templates
The Wheel
The ring of editing controls that appears around a Row. Every seat keeps its place, so your hands learn it fast.
  • The Wheel
Theme
Everything about how the site looks: tokens, styling, and advanced CSS, kept separate from the words.
  • Themes
Theme assets
Images that belong to a theme (textures, backgrounds) rather than to your shared Media library.
  • Themes
  • Media
Token
A named design value in a theme (a core color, a font choice, a spacing step) that the basics refer to.
  • Themes
Verb
What a Signals Receive does when a value arrives: set text, toggle a class, count, filter, show or hide, and more.
  • Signals