Every CMS project needs to tackle a subset of what I like to call the “CMS problem”. A CMS is like a programming language where every feature has been lifted to the runtime.
- Data types = content schemas
- Type definitions = OpenAPI specs
- Type checking = content validation
- Data structures = content (defined by the schemas)
- Logic = end-user programmability, which results in extensive use of defunctionalization and scripting
- Linking = Dynamic linking over HTTP APIs