H1 Sites¶
Version 1.0.1-SNAPSHOT · Magnolia 6.4 · Java 21
H1 Sites turns "which brand is this request for?" into a question the content team answers in a form. One entry per site holds the domains that resolve to it, the page in the tree it starts at, its logo, its favicon, its default social image, its Schema.org organization type, its phone number and its social profiles. A headless front end asks once per request — who am I serving? — and gets the whole identity back in a single call, so adding a brand or moving a domain stops being a deploy.
It ships as one JAR with a single light module, and it is designed to be optional to everyone who reads it: the SEO pack enriches its output when H1 Sites is installed and simply omits those values when it is not.
| Feature | What it solves | Light module |
|---|---|---|
| Site registry | Every site you run described in one app, with its identity and its social profiles, instead of spread across front-end constants. | h1-sites-light-module |
| Domain resolution | One call answers "which site serves this domain?", so a multi-brand front end resolves branding per request rather than per build. | h1-sites-light-module |
| Site globals for SEO | The organization type, the default social image and the social profiles that structured data and social cards need, filled in once per site. | h1-sites-light-module |
| Theme association | A site can point at a Material Design theme, and the resolution call returns the whole theme with it — one round trip, not two. | h1-sites-light-module |
| REST + AI access | A read/write JSON API and an MCP tool, so both a front end and an assistant can work with the registry. | h1-sites-light-module |
Why use H1 Sites?¶
- A new brand is a form, not a release. Domains, logo, social image and organization type are
content. Pointing
newbrand.comat an existing tree is an edit an author makes and sees live on the next request, with no build and no environment variable. - One call returns everything the page needs.
getSiteanswers with the identity, the social profiles and the full Material Design theme when one is linked — the front end does not follow a reference to a second workspace to paint the first byte. - Domain patterns, not domain lists. A pattern covers
www, staging and every subdomain at once, and the same syntax accepts a plain glob (*.brand.com) or a real regular expression. - Optional to its consumers, by design. The SEO pack reads the site globals without depending on this module: with H1 Sites installed the structured data carries the organization and the social profiles, without it the pages still render. Nothing breaks by not installing it.
- Safe to read from a public instance. The linked theme is resolved with system credentials, so a public visitor gets the theme without you granting read access to the theme storage.
Documentation¶
- Authors — the Sites app field by field, how the domain patterns are matched, what an empty field falls back to, and what the order of the list decides.
- Developers · Installation — what the JAR contains, Maven coordinates, deploy, the wiring the module cannot do for you, the permissions the public channels need, and the version deltas.
- Developers · Configuration — every field, the resolution rules, the REST reference with its request and response shape, and the MCP tool.
- Troubleshooting — symptom to cause, with the silent failures first.
Requirements¶
| Magnolia | 6.4 (built against bundle 6.4.4; DX Core or Community) |
| Java | 21 |
| Magnolia modules | core, ui-admincentral, ui-contentapp, rest-integration, rest-services (all declared in the module descriptor) |
| H1 modules | h1-helpers (mandatory, ships with the module) · h1-mcp-api (optional, only for the MCP tool) |
| Optional integrations | frontend-md3 — adds the Material Design Theme field and makes the theme travel in the resolution response · h1-seo — reads the site globals for structured data and social cards |
| Magnolia platform APIs used | magnolia-core, magnolia-templating, magnolia-dam-templating, magnolia-rest-integration (all provided — supplied by the bundle) |