A self-contained example site demonstrating Project Mockingbird - a local YAML-based CM shim that runs Sitecore Content SDK projects without a full XM Cloud stack (no CM, SQL Server, SOLR, Identity Server).
The site is North Star Outfitters, a fictional outdoor-gear company. It exercises the kinds of templates and components a real customer site would have - a home page, a handful of landings, and detail pages of several different shapes (products, guided trips, retail stores, field-guide articles).
- 50 content pages across a single Headless SXA site: 1 home + 1 about + 1 contact + 6 landings (Hiking, Climbing, Paddling, Trips, Stores, Field Notes) + 41 detail pages.
- 4 detail-page shapes, each with its own template + matching React component: Product, Trip, Store, Article.
- All-API authoring - no hand-written YAML. Content was authored against Mockingbird's HTTP API (
POST /api/items,PUT /api/items/{id}) from Node scripts. - Project configured with two content layers - a
platformlayer for templates, renderings, and site shape; acontentlayer for the actual page content + media library. Items that belong to both layers (e.g.Home) deduplicate by ID at runtime. - Modern head app - Next.js App Router with Content SDK 2.1, Tailwind v4 plus custom BEM CSS.
Four containers, Linux only:
| Service | Image | Role |
|---|---|---|
traefik |
traefik:v3.0 |
TLS-terminating reverse proxy. |
mockingbird |
projectmockingbird/mockingbird:latest |
Content-authoring server + GraphQL layout endpoint. |
rendering |
locally built from headapps/mockingbird/ |
Next.js head app in dev mode. |
hostswriter |
rahnemann/windows-hosts-writer:2.1-linux |
Keeps northstaroutfitters.local resolvable on the Windows host. |
That's the whole stack. No CM, SQL Server, EDB, marketplace, identity, or Solr - that is the point of running against Mockingbird.
Prereqs: Docker Desktop (Linux containers), PowerShell, Node 24+ (only needed for the helper scripts in scripts/).
# One-time: install a local mkcert CA and emit a SAN cert
.\start.ps1 -Init
# Bring the stack up
.\start.ps1
# Stop everything
.\stop.ps1Endpoints once the stack is up:
- Site: https://northstaroutfitters.local
- Mockingbird UI: https://mockingbird.northstaroutfitters.local
- Traefik dashboard: http://localhost:18080
After that, /api/status reports state: ready and the site renders.
config.mockingbird project registry; declares the two layers (platform + content)
sitecore.json platform layer SCS root
authoring/
items/
*.module.json platform modules (tenant + site shape)
items/ serialized templates, renderings, settings, presentation
content/
sitecore.json content layer SCS root
*.module.json content modules (pages + media)
items/ serialized page content + media library
headapps/
mockingbird/ Next.js head app (App Router, Content SDK 2.1, Tailwind v4)
docker/ compose file, rendering Dockerfile, traefik config, mkcert helper
scripts/ (gitignored) authoring helpers - generate-pages, fetch-media, ...
start.ps1 / stop.ps1 stack operators
RUNBOOK.md operator-facing daily ops + troubleshooting
For daily operations, restart-when matrices, and recovery sequences (Mockingbird cache poisoning, Next.js dev-cache wipes, project-state loss), see RUNBOOK.md.
This repository was bootstrapped from Sitecore's xmcloud-starter-js template and then specialized for Mockingbird: the examples/ directory was removed, an empty Content SDK app was generated at headapps/mockingbird/, the docker stack was retargeted at Mockingbird, and the site shape + content were built up via Mockingbird's HTTP API. Some upstream artifacts (CI configs, AI-assistant rules, contribution guides, etc.) remain in the tree from the original template and are not actively maintained here.
See LICENSE.MD.