CMS-driven websites: collections, dynamic routes, and content modeling
A practical guide to building CMS-driven websites that scale: how to design collections, model content, generate dynamic routes, and keep SEO clean as you publish hundreds or thousands of pages.
Overview
Most websites don’t fail because of design. They fail because content grows faster than the structure holding it. After a few months, teams notice:
pages that look similar are actually built differently
the same content is duplicated across multiple URLs
slugs and folders evolve without rules
editors publish faster than developers can maintain templates
SEO becomes inconsistent (titles, canonicals, internal links, indexation)
A CMS-driven website prevents that by turning the site into a structured publishing system:
you define collections (content types)
you model fields (title, slug, body, references)
you render pages through templates + dynamic routes
you keep URL structure and SEO consistent while scaling content
This guide explains, in practical terms, how collections, dynamic routes, and content modeling work together and how to structure your CMS so it stays clean when you scale to hundreds or thousands of pages.
What is a CMS-driven website?
A CMS-driven website is a website where pages are generated from structured content rather than manually created one-by-one.
Instead of:
creating a new page, duplicating a layout, and copy/pasting content
You do:
define a content type once (a collection)
publish entries (items)
automatically generate pages from those entries
A CMS-driven website typically has:
Collections (Blog posts, Releases, Templates, Docs, Case Studies)
Fields (title, slug, summary, body, tags, cover image)
Templates (the layout used to render items)
Dynamic routes (URLs generated from item values like
slug)SEO rules applied consistently (metadata, canonicals, sitemaps)
The result is a site that scales publishing without scaling chaos.
Why collections matter more than pages
If you build a page-based website, every page is its own snowflake. If you build a collection-based website, every page is an instance of a system.
This changes everything:
editors can publish without developers
layouts remain consistent
SEO becomes systematic
content is easier to search, filter, and reuse
growth becomes predictable
The core idea is simple: Pages are outcomes. Collections are architecture.
Collections: your content types (the foundation)
A collection is a content type: a structured schema that defines what an item contains.
Examples of collections:
Blog
Releases / Changelog
Updates
Docs
Templates
Case Studies
Jobs
Help Articles
Landing pages (CMS-driven variants)
Each collection contains items (entries). Each item has fields. A good CMS strategy starts by defining the smallest set of collections that represent what you publish repeatedly.
Fields: what you store for each item
Fields are your content model. They define:
what editors can write
what templates can render
what SEO metadata can be generated
what URLs can be built from
A strong default field set for SEO-driven publishing looks like:
title(string)slug(string, unique)excerptorsummary(text)body(rich text / markdown)cover_image(image)published_at(date)author_name(string)tagsorcategory(multi-select)featured(boolean)
Then you add power fields depending on your use case:
referencesto other items (relationships)related_items(manual curation)canonical_url(advanced SEO)noindextoggle (indexation control)
Content modeling: the most underrated SEO skill
Content modeling is the practice of designing fields and relationships so content stays:
consistent
reusable
expandable
machine-readable
Poor content modeling creates:
duplicated pages
inconsistent metadata
unscalable templates
messy internal links
painful migrations later
Good content modeling creates:
clean dynamic routes
predictable sitemap generation
consistent snippet formatting
easy programmatic pages later (tags, categories, author pages)
A useful mindset: If you can’t describe your content as a schema, you can’t scale it.
Dynamic routes: how one template becomes thousands of pages
A dynamic route is a URL pattern generated from content, typically using a slug.
Examples:
/blog/[slug]/updates/[slug]/templates/[slug]/docs/[category]/[slug]
The template is built once. Then every CMS item becomes a page. This is where CMS-driven websites become real platforms:
you don’t create pages
you publish entries
the system generates pages
In production-grade Next.js architecture, dynamic routes often support:
static generation (SSG) for speed
incremental regeneration (ISR) for freshness
server rendering (SSR) for personalization when needed
The technical choice depends on content velocity and personalization requirements, but the publishing logic remains the same.
URL design: folders, slugs, and rules that scale
The URL structure is not cosmetic. It is your long-term SEO architecture. A good URL strategy is:
predictable
short
hierarchical when needed
stable over time
Recommended patterns:
Blog:
/blog/my-article-slugUpdates:
/updates/my-updateReleases:
/releases/v1-2-0Docs:
/docs/getting-started/installTemplates:
/templates/saas-landing
Avoid:
nesting too deeply without meaning
changing folders frequently
letting editors improvise slugs without rules
If you expect scale, define:
slug formatting rules (lowercase, hyphens, no stop words if possible)
uniqueness constraints per collection
reserved routes to avoid conflicts (e.g.,
blog,updates,auth,api)
References: relationships between content (pillars, clusters, and hubs)
Relationships are where a CMS becomes more than a database. Examples:
a cluster blog links to a pillar blog (
pillar_ref)a blog references a template (
template_ref)a case study references a product feature (
feature_ref)an update references a release (
release_ref)
For SEO, the most valuable relationship is: Pillar → Cluster
A pillar is the authoritative guide for a topic.
A cluster is a focused article targeting a specific long-tail query.
Clusters link back to the pillar, and the pillar links to clusters.
This creates a clean topical graph:
Google understands the topic depth
internal links become systematic
authority concentrates instead of spreading randomly
Your CMS field approach (type + pillar_ref) is exactly the right foundation to automate this later.
How CMS-driven architecture improves SEO (in practice)
CMS-driven publishing improves SEO because it enables consistent systems, not one-off pages. Key impacts:
Consistent metadata: titles, descriptions, Open Graph
Clean sitemaps: every published item becomes an indexable URL
Indexation control: you can block drafts, internal pages, duplicates
Internal linking at scale: pillars and clusters form structured link paths
Freshness signals: updates and release posts keep your site active
Topical authority: you publish depth, not random articles
SEO is not just content quality. It is content quality plus architecture.
A practical CMS blueprint that scales
If you want a CMS that stays clean as you scale, implement these principles early:
1) Define your core collections
Start with 4–8 collections that represent 90% of your publishing:
Blog
Updates
Releases
Docs
Templates
Case Studies (optional)
Comparisons (optional)
Glossary (optional)
2) Standardize the field set
Make fields consistent across collections where possible:
title,excerpt,body,published_at,cover_image,featured
3) Use references intentionally
Add references only when they create:
structured internal linking
reuse across pages
higher-level navigation (pillars/clusters)
4) Design dynamic routes before writing content
Do not publish 200 items then argue about URL structure. Define folders and patterns upfront.
5) Build sitemap generation from the CMS
Every published item should:
appear in sitemap automatically
include
lastModifiedlogicbe excluded if unpublished/draft/noindex
6) Add programmatic pages when ready
Once you have enough content volume, generate:
tag pages (
/blog/tags/[tag])category pages (
/blog/category/[category])author pages (
/blog/author/[author])
These pages multiply SEO coverage without multiplying editorial work.
Common mistakes (and how to avoid them)
Mistake 1: treating the CMS like a text editor
A CMS is a data model, not a document tool. If everything is inside body, you can’t scale structure.
Mistake 2: no slug rules
Slugs drift over time unless you enforce rules. Slugs should be stable and systematic.
Mistake 3: mixing drafts and published content in the sitemap
Never expose:
draft items
internal pages
admin-only content
duplicates (preview routes)
Mistake 4: creating too many collections too early
Start lean. Expand based on real publishing needs.
Mistake 5: no relationships
A pile of articles is not a strategy. Relationships create authority and navigation.
What this looks like in TheObviousBuilder
In TheObviousBuilder, a CMS-driven site typically follows this pattern:
You create collections like Blog, Updates, Releases, Docs
Each collection has structured fields (title, excerpt, body, cover image)
You publish items
The platform generates:
dynamic routes per host
sitemap entries per host
robots rules per host (app host vs tenant host)
You structure SEO through pillars/clusters using type + pillar_ref.
This is the foundation required to scale multi-site publishing without sacrificing maintainability or SEO consistency.
Next steps
If you want to go deeper, the next logical articles in this topic cluster are:
Dynamic routes in Next.js: how
[slug]scales contentHow to design a CMS schema for a SaaS marketing site
SEO for CMS-driven websites: sitemaps, canonicals, indexation control
Pillars and clusters: how to structure internal links for authority
If you are building a production-grade site, CMS architecture is not a nice-to-have. It is the system that decides whether your website stays clean as it grows or becomes a maintenance burden.
