-
Layer 1: The Content Platform: Optimizely CMS
This is where editors, content producers and administrators work. It is the system of record for structured content. Not "pages with text" but structured, typed content objects with explicit relationships and validation rules.
A news article is more than a rich text field. It is a composition of a headline (string, max 200 characters, searchable), a subtitle (string, max 500 characters), a body (rich text, localised), an author (a reference to a Person content type), a category (enum: Research, Education, Corporate) and tags (array of strings, max 10). Each field has a data type, validation rules and indexing configuration.
A person is a reusable structured component, not a paragraph buried on an "About Us" page. Name, title, email, phone, photo, department, defined once as a _component base type and referenced from any page type that needs to display a human being. Change the person's title once, and it updates everywhere they appear across every site.
This is what Carrie Hane calls atomic content, and what the COPE principle (Create Once, Publish Everywhere) demands. The content model is the product. The CMS is the tool that enforces it.
In Optimizely CMS 13, content types are defined in TypeScript using the Content JS SDK, the same language your frontend developers already think in:
export const PersonBlockCT = contentType({
key: 'PersonBlock',
displayName: 'Person',
baseType: '_component',
properties: {
name: { type: 'string', required: true, indexingType: 'searchable' },
title: { type: 'string', localised: true },
email: { type: 'string' },
phone: { type: 'string' },
photo: { type: 'contentReference', allowedTypes: ['_image'] },
department: { type: 'string', localised: true, indexingType: 'queryable' },
},
});
Define it in code. Push it to the CMS with npx @optimizely/cms-cli config push. The content type appears in the editorial interface, gets indexed in the API layer and generates strongly typed objects for your frontend, all from a single source of truth. No XML configuration files. No admin UI clicking. Code-first, version-controlled, reviewable content modelling.