User Story
In order to ensure CMS-managed pages are correctly discovered or hidden by search engines
As a content editor
I want to control the title, description, canonical URL, and indexability of each CMS page directly from the CMS
Acceptance Criteria
Background & Resources
Details: Next.js generateMetadata is called server-side. Contentful content type has an SEO field group. Noindex maps to robots: { index: false } in Next.js metadata. Canonical defaults to alternates.canonical = request URL if not set in CMS.
Key files:
apps/presentation/app/[locale]/(main)/p/[...slug]/page.tsx — generateMetadata function reads SEO fields from BFF CMS page response
- BFF CMS page response model — includes
seo.title, seo.description, seo.noindex, seo.canonical
Links/Screenshots: (Drag and drop images or paste links here)
User Story
In order to ensure CMS-managed pages are correctly discovered or hidden by search engines
As a content editor
I want to control the title, description, canonical URL, and indexability of each CMS page directly from the CMS
Acceptance Criteria
Background & Resources
Details: Next.js
generateMetadatais called server-side. Contentful content type has an SEO field group. Noindex maps torobots: { index: false }in Next.js metadata. Canonical defaults toalternates.canonical = request URLif not set in CMS.Key files:
apps/presentation/app/[locale]/(main)/p/[...slug]/page.tsx—generateMetadatafunction reads SEO fields from BFF CMS page responseseo.title,seo.description,seo.noindex,seo.canonicalLinks/Screenshots: (Drag and drop images or paste links here)