How brXM Fits Together
If you’re coming from any other CMS, the closest analogy is: the JCR repository is the database, document types are the content model that constrains what goes into it, and everything else in brXM is either a way of authoring that content or a way of serving it to a visitor. Every piece of content — a news article, an image, a folder — is a node in one big hierarchical tree, addressed by a path much like a file path.
A document type is declared once, in a compact schema language called CND, and that declaration is what generates the document’s fields in the CMS edit form and the Java bean a template reads it through. Nothing gets saved that doesn’t match its type’s declared fields and constraints — the repository enforces the schema, not just the edit form.
Getting that content in front of a visitor is where HST (the Hippo Site Toolkit) comes in: it matches an incoming request URL against a channel’s sitemap, resolves that match to a page made of components, and each component resolves its own piece of content and renders a template with it. That’s the traditional path — full server-rendered HTML, the same shape as a classic server-side CMS.
The Delivery API is the modern alternative to that path: instead of HST rendering HTML, a REST endpoint returns a document’s fields (or a whole page’s structure) as JSON, and a separately built front end — a React app, a mobile client, anything that can call a REST API — renders it. It’s the same role a headless CMS’s REST or GraphQL API plays anywhere else; the content model underneath is identical either way, only the last step differs.
The rest of this page follows that same order: the repository these pieces live in, then the document types that shape its content, then channels and HST rendering, then the Delivery API as headless delivery, and finally the Groovy/console tools and content-reuse patterns that keep a larger content model manageable.
The big picture before the details: the JCR repository underneath, document types as its schema, channels that render it, and the Delivery API as the headless alternative.
- JCR
- The repository underneath everything in brXM — one big tree of nodes, addressed by path
- Document type
- A CND-declared schema a piece of content must conform to, similar to a content model in any other CMS
- HST
- Hippo Site Toolkit — resolves an incoming URL to a channel, a page, and the components/templates that render it
- Delivery API
- A REST alternative to HST rendering — content and page structure as JSON, for a separately built front end