CWA 2 is a prerelease (2.0.0-alpha), heading for a beta. It runs production sites; configuration can still change between releases, always with upgrade notes. View versions and support
Core Concepts

Glossary

Every CWA term used in these docs, defined once, from IRI and component position to manifest, track, Souin and orphan.

Each term has a short definition and a link to the page that covers it. Key Ideas explains the main ones in more words, for readers about to start the guides.

Content structure

Layout

The outer shell a page renders in: header, footer, navigation. A layout is a record in the database, and its Vue file is in app/app/cwa/layouts/. See Layouts & Pages.

Page

A page saved in the database. It says which layout and page template to use, and holds the page's component groups. A page usually has a route. See Layouts & Pages.

Page template

The Vue file that arranges a page's component groups on screen, in app/app/cwa/pages/. In the admin it's the Page UI. Not the same as a template page.

Template page

A page that is the shared design for one type of page data, such as every blog article. It has isTemplate: true and no route of its own: each page data item of that type is shown through it. In the admin it's a Dynamic page. Not the same as a page template. See Layouts & Pages › Template Pages.

Page data

One item of repeating content, such as one blog article, with its own fields and its own route. Its PHP class extends AbstractPageData, and it is shown through a template page. See Dynamic Pages.

Route

The link from a URL path, such as /about-us, to the page or page data item shown there. A route can also redirect to another route, and can have a go-live date. See Routes.

Component

One piece of content, such as a title, a quote or an image. A component type is a PHP entity that extends AbstractComponent, plus a Vue file that displays it and admin tabs that edit it. See Components.

Component group

A named, ordered list of components, such as main or banner, that belongs to a layout, page or component. Each component in it sits in a component position. A Vue file declares the group with <CwaComponentGroup reference="main">, and editors add components to it in edit mode. Also called a group. See <CwaComponentGroup />.

Component position

The entry that puts one component into a component group and sets where it comes in the group's order. Also called a position. A dynamic position holds a binding to a page data property instead of a component. The admin creates positions when an editor adds a component. See The Data Model.

Dynamic position

A component position with no component of its own: it shows a component from the current page data item instead, such as each article's body. It sits in a component group on a template page, so every item shown through that template page shows its own component there. See Dynamic Pages.

uiComponent

The name of the Vue file that displays a layout, page or component, saved with it in the database. For the layout file landing.vue, it's CwaLayoutLanding. See How uiComponent names resolve.

Stranded component group

A component group still attached to a record after its reference was renamed in code, so visitors no longer see it. The admin bar offers to merge or delete it. See Maintenance.

Orphan

A record that nothing uses: a component nothing displays, a component position with neither a component nor a page data property, or a component group nothing owns. An orphaned file is a stored upload that no row references. The admin and console commands find and delete them. See Orphaned Data.

Identifying and loading

IRI

The path that identifies a record in the API, such as /_/pages/018e… or /component/titles/018e…. The module passes a record's IRI to its Vue file as the iri prop, and the API uses IRIs as cache tags. See Key Ideas › How records are identified.

Manifest

The list of everything a page displays, which the module fetches with the route so it can load the whole page at once. It comes from GET /_/resource_manifest/{path}, grouped by how deeply each item is nested. See Routes › The Resource Manifest.

Draft and published

A publishable component has two versions. Editors change the draft; visitors see the published version until an editor publishes it. See Draft & Publish Workflow.

Edit mode

What an editor turns on with Edit in the admin bar. Empty component groups show a +, and clicking a component selects it and opens the manager panel. See The Admin Panel.

Layer

@cwa/nuxt is installed as a Nuxt layer (extends: ['@cwa/nuxt/layer']). The layer adds the module, the sign-in pages and the /_cwa admin pages. See The CWA Layer.

Scaffold

A PHP class that creates layouts, pages, routes and components in code, to fill the database with starting content. It extends AbstractCwaScaffold. See Data Fixtures.

Caching and deployment

Souin

The HTTP cache inside Caddy, in the template's php container. It stores page HTML and /_api responses, and drops them when the API purges their tags. See Caching.

Cache tag

A label on a cached response that lets it be purged. CWA tags each response with the IRIs of the resources in it, in the Surrogate-Key header. See HTTP Caching › Cache Tags and Purging.

cwa-html

The cache tag on every page that Nuxt renders. Purging it drops every cached page but keeps cached API responses. Saving site config and every deploy purge it. See Purging Every Rendered Page.

Purge

Removing cached responses by tag, so the next request gets a fresh copy. A full flush empties the whole cache. See Caching › Purges.

Mercure

The real-time hub, inside Caddy in the template. The API publishes every change to it. Each open browser is told about the change and shows an Update notice that applies it without a reload. See Real-Time Updates.

Track

A deploy target in the template's pipeline: stable (production), staging, canary or review. See CI/CD.

Next: Build Your First Layout

The guides put these ideas to work. Start with Your First Layout.