Build a museum platform, documented end to end.
Everything your team and your agency need: connecting collections, translating content, theming the site, building pages, and the API beneath it all.
Platform overview
MuCoDi is a headless platform for museums. It connects to your collection system, structures the data, and gives you the tools to publish it — as a website, an online collection, AI search, interactive maps, and in-gallery screens.
You manage everything from one place. Your collection stays the source of truth in your existing system; MuCoDi keeps a live, structured copy and hands it to every audience-facing surface through a single API. Non-technical staff work in the page builder; developers (yours or your agency's) work against the API.
- 01Connect your collection system — Axiell, MuseumPlus, Primus, TMS or a custom source.
- 02Map each field to a MuCoDi content type once; syncing is automatic from then on.
- 03Curate content — translate objects with AI assistance, and curate content like themes, periods and exhibitions.
- 04Build pages with the component-based page builder and theme them to your brand.
- 05Publish to web, kiosks and search — all reading from the same API.
How it fits together
Three layers, one pipeline: your sources feed the MuCoDi core, which publishes to everything your visitors see.
- —Sources — your CMS / collection database, archives, and any other data source via the API.
- —Core — import, curate, model your data, build and theme the site, then publish. The API sits underneath every step.
- —What visitors see— online collections, archives, AI search, touchscreen & QR, interactive maps, exhibition websites, or a custom experience you build on the platform.
Adding files & collections
Collections come in through a connection to your existing system. Individual files — images, documents, 3D models, audio — are added in the media library and attached to records.
Connect a collection source
- 01In
Settings → Sources, choose your system (Axiell, MuseumPlus, Primus, TMS) orCustom API. - 02Authenticate with the credentials your system provides. MuCoDi only ever reads from the source.
- 03Map each source field to a MuCoDi content type and field. Save the mapping — it is reused on every sync.
- 04Run the first import. Progress, retries and the sync queue are visible in
Sources → Activity.
Add individual files
Drag files into the media library or upload in bulk. MuCoDi generates responsive derivatives and IIIF tiles for high-resolution images automatically.
- —Supported: JPEG, PNG, WebP, TIFF, PDF, MP3/MP4, glTF/GLB for 3D.
- —Each file carries its own metadata, alt text and rights statement.
- —Attach a file to any record or page block by reference — never by duplicating it.
Managing translations
MuCoDi is multilingual at the content-type level. Every text field can hold a value per locale, with a defined fallback so nothing ever renders empty.
Set up locales
- 01In
Settings → Languages, add the locales you publish in (e.g.da,kl,en). - 02Pick a default locale — this is the fallback when a translation is missing.
- 03Optionally mark a locale as
draftso it stays hidden from visitors until ready.
Translate content
Open any record or page and switch locale with the language selector. Fields show side-by-side with the default-locale value for reference. Imported collection fields can be machine-pre-translated and then reviewed by staff.
kl (Kalaallisut) has no value for a field, the visitor sees the default-locale value rather than a blank — so a half-translated record is still complete and usable.Themes
A theme controls how your site looks — type, colour, spacing and the styling of every component — without touching content. Start from a theme, restyle it, and extend it with new functionality.
What a theme defines
- —Design tokens — typefaces, colour palette, spacing scale, radii and shadows.
- —Component styles — how the collection grid, object detail, hero and navigation render.
- —Layout — page widths, header/footer structure, breakpoints.
Edit tokens visually in Design → Theme, or take over with custom CSS and components for a fully bespoke look. Themes are versioned, so you can preview and roll back.
Components live in the theme
A theme is more than styling — it is a package that also contains the site’s React (Puck) page-builder components. Tokens, layout, component styles and the components themselves all travel together in one bundle.
Download, edit & re-upload
- 01Download the theme as a package from
Design → Theme → Export. - 02Edit it locally — adjust tokens, restyle components, or add new React/Puck components to the bundle.
- 03Upload the package back in. Themes are versioned, so you can preview and roll back.
Page builder & components
The components your pages are built from live inside the theme package (above). Each block — collection grid, object detail, artist directory, your own custom hero — is a React component with typed props, edited in a visual drag-and-drop page builder.
Using the page builder
- 01Create a page and drag components from the palette onto the canvas.
- 02Select any block to edit its typed props in the side panel — no code.
- 03Bind a block to live data (e.g. “objects where period = Bronze Age”) so it updates as the collection does.
- 04Preview across breakpoints, then publish.
Built-in & custom components
Ship with the components we provide, or have your developer add new ones to the theme package. A component declares its props; the page builder renders the right controls automatically. The editor runs on Puck, so custom React components drop straight into the same drag-and-drop surface your staff already use — and travel with the theme whenever it is exported.
API platform
Everything in MuCoDi is reachable through a REST API documented with an OpenAPI 3.1 spec. The page builder, search and kiosks all use the same endpoints your developers do.
Authentication
Requests are authenticated with a bearer token from Settings → API keys. Tokens are scoped (read-only, content, admin) so you grant only what an integration needs.
Core endpoints
/v1/objects/v1/objects/{id}/v1/search/v1/objects/{id}/media/v1/pages/{slug}/v1/openapi.jsonExample response
/v1/openapi.json into Postman, an SDK generator, or your editor. Your team never has to see a line of code; your developers get a fully typed contract.