Case study / Powerhouse Museum
Content API: an event-driven headless content platform
Museums are content businesses with unusually many heads: web, in-gallery, apps, partners. The Content API decouples every content source from every consumer with an event-driven core, so each side can change — and fail — independently.
- Role
- Architecture lead
- Timeline
- 2025 — present
- Pattern
- Event-driven, headless
- Stack
- AWS · Node.js [VERIFY]
The problem
The content that describes a museum object lives in at least three systems: the collection management system (the curatorial source of truth), the CMS (editorial and interpretive copy), and the DAMS (images and media). Every channel — website, in-gallery screens, mobile, partner feeds — needs a stitched view of all three, and historically each channel stitched it itself with point-to-point calls.
That shape fails predictably: N sources × M consumers integrations, cache invalidation nobody owns, and every downstream launch blocked on every upstream team.
The architecture: events at the core
The platform inverts the dependency. Source systems don't get called — they emit. Every create, update or unpublish in the CMS, collection system or DAMS lands on an event backbone as a typed domain event (content.updated, object.republished, asset.derived). Consumers subscribe to the events they care about and maintain their own read models.
The public face is a single Content API: one contract for every head, backed by read models that are rebuilt from the event stream rather than assembled per-request from the sources.
- CMSeditorial
- Collectionobjects
- DAMSmedia
- Event bustyped domain events
- Transformerstitch + enrich
- Search indexer
- Cache invalidator
- Content APIone contract
- Web
- In-gallery
- Apps
- Partners
Why event-driven, specifically
- Isolation of failure — a slow DAMS never takes the website down; consumers serve their last-known-good read model
- Independent deployability — a new consumer (say, a new gallery interactive) subscribes to existing events; no upstream change requests
- Replayability — read models are disposable; rebuild search or cache from the event history instead of migrating them
- Auditability — 'what changed, when, and who consumed it' is a query over the stream, not forensics
Outcomes
The same content contract now feeds the web estate and exhibition interactives, and new consumers onboard without touching the source systems. [VERIFY] The deeper win is organisational: editorial, curatorial and digital teams ship on their own cadence because the event contract — not a meeting — is the integration point.