Glossary
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 record that names a layout and a page template, and holds the page's component groups. A page usually has a route. See Layouts & Pages.
Page template
The Vue file a page renders through, in app/app/cwa/pages/. It places the page's component groups. In the admin it's the Page UI. Not the same as a template page.
Template page
A page record with isTemplate: true. It has no route of its own: every page data record of one type renders through it. In the admin it's a Dynamic page. Not the same as a page template. See Layouts & Pages → Template Pages.
Page data
A record for one item of repeating content, such as one blog article. It extends AbstractPageData, has its own route and fields, and renders through a template page. See Dynamic Pages.
Route
A record that maps a path, such as /about-us, to one page or page data record. 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 region where editors add components, such as main or banner. A layout, page or component owns it, and a Vue file declares it with <CwaComponentGroup reference="main">. Also called a group or a region. See <CwaComponentGroup />.
Component position
The slot that holds one component in a component group, and sets its order. Also called a position. The admin creates positions when an editor adds a component. See The Data Model.
Dynamic position
A component position bound to a page data property. It shows a different component on each page data record that shares the template page. See Dynamic Pages.
uiComponent
The field on a layout, page or component record that names the Vue file it renders through. A layout file landing.vue is stored as CwaLayoutLanding. See How uiComponent names resolve.
Stranded component group
A 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, an empty position, or a 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 → IRI.
Manifest
The resource manifest, GET /_/resource_manifest/{path}, lists every resource a page renders, grouped by rendering depth. The module requests it alongside the route, so it can fetch the whole page at once. 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 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 fixture class that extends AbstractCwaScaffold and builds layouts, pages, routes and components in code. 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, and each open browser applies the change 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.
Caching
Every cache between a visitor and the API in a CWA site, from the service worker to Cloudflare, Souin and the API's cache tags. What each one stores, how long, and what clears it.
Overview
Step-by-step guides that build a small CWA site, from a layout to a dynamic page. Who they're for and the order to follow.