Content Platform — Launch Checklist¶
Pre-launch verification for content platform builds. Every CHECK must pass before going live.
Content Model Completeness¶
CHECK: All content types defined with typed fields and validation rules CHECK: Content type relations tested (article → author, article → categories) CHECK: Slug generation produces clean, unique, URL-safe slugs CHECK: Content status transitions enforced — no invalid state changes possible CHECK: Required fields enforced at API level (not just frontend) CHECK: Sample content loaded — minimum 10 articles to verify layouts CHECK: Media library tested with various image sizes and formats CHECK: Rich text editor produces valid JSON that renders correctly CHECK: Content versioning creates snapshots on every publish CHECK: Rollback restores content correctly without data loss
SEO Audit¶
CHECK: metadataBase set in root layout.tsx
CHECK: Every page has unique <title> (50-60 characters)
CHECK: Every page has unique <meta name="description"> (150-160 characters)
CHECK: Canonical URL set on every page via alternates.canonical
CHECK: Open Graph title, description, and image on every content page
CHECK: OG image dimensions are 1200x630 minimum
CHECK: Twitter Card metadata present (summary_large_image)
CHECK: sitemap.xml generates correctly with all published content
CHECK: robots.txt allows indexing of public pages, blocks /admin/ and /api/
CHECK: JSON-LD Article structured data on article pages
CHECK: Structured data validated with Google Rich Results Test
CHECK: No duplicate <title> or <meta description> across pages
CHECK: Single H1 per page, logical heading hierarchy (H1 → H2 → H3)
CHECK: All images have alt text
CHECK: Clean URL structure with semantic slugs (no IDs in URLs)
CHECK: Google Search Console verified and sitemap submitted
IF: Multi-language site THEN: CHECK: Hreflang tags present and bidirectional on all language variants
IF: Paginated listing pages THEN: CHECK: Pagination URLs are self-canonicalized
Accessibility (WCAG 2.1 AA)¶
CHECK: Keyboard navigation works for all interactive elements
CHECK: Focus indicators visible on all focusable elements
CHECK: Color contrast ratio meets AA standard (4.5:1 for text, 3:1 for large text)
CHECK: All images have descriptive alt text (not "image" or filename)
CHECK: Form inputs have associated <label> elements
CHECK: Error messages are descriptive and programmatically associated
CHECK: Skip-to-content link present
CHECK: ARIA landmarks used correctly (main, nav, aside, footer)
CHECK: Rich text content renders with semantic HTML (not div soup)
CHECK: Video content has captions (if applicable)
CHECK: Reduced motion respected (prefers-reduced-motion media query)
CHECK: Screen reader tested — content reads in logical order
CHECK: Lighthouse accessibility score > 90
Performance¶
Core Web Vitals¶
CHECK: LCP (Largest Contentful Paint) < 2.5 seconds on mobile CHECK: CLS (Cumulative Layout Shift) < 0.1 CHECK: INP (Interaction to Next Paint) < 200ms
Image Performance¶
CHECK: Images served in WebP or AVIF format
CHECK: Images have explicit width and height (prevents CLS)
CHECK: Lazy loading enabled for below-fold images
CHECK: Blur placeholder for above-fold hero images
CHECK: No images > 500KB served to client
CHECK: CDN configured for media delivery
Bundle and Loading¶
CHECK: Lighthouse performance score > 90 on mobile
CHECK: Total page weight < 500KB (excluding images)
CHECK: No render-blocking third-party scripts
CHECK: Fonts loaded via next/font with font-display: swap
CHECK: JavaScript bundle analyzed — no unnecessary client-side code
CHECK: ISR or SSG configured for content pages (not SSR)
Caching¶
CHECK: Static assets have long-lived Cache-Control headers (immutable) CHECK: ISR revalidation webhook tested end-to-end CHECK: CDN cache purge works on content update CHECK: API responses have appropriate cache headers
Publishing Workflow¶
CHECK: Draft → Review → Approved → Published flow works end-to-end CHECK: Reject returns content to draft with reviewer feedback visible CHECK: Scheduled publish fires at correct time (test with near-future schedule) CHECK: Preview mode shows draft content with visual indicator CHECK: Shareable preview links work without CMS login CHECK: Version history shows all revisions with diffs CHECK: Archive removes content from public pages and sitemap CHECK: Archived content returns 410 status code CHECK: Notifications fire on state transitions (review submitted, approved, rejected)
User Roles and Permissions¶
CHECK: Admin can access all features and manage users CHECK: Editor can create, edit, review, and publish content CHECK: Author can only edit own content and submit for review CHECK: Reviewer can approve/reject but not publish CHECK: Unauthorized role transitions return 403 CHECK: API endpoints enforce permissions server-side (not just UI)
Search¶
CHECK: Search returns relevant results for common queries CHECK: Search handles empty query gracefully CHECK: Search results show highlighted match snippets CHECK: Search filters work (category, date, content type) CHECK: Search index is current (newly published content appears within 1 minute)
IF: Meilisearch used THEN: CHECK: Typo tolerance returns results for misspelled queries
Newsletter Integration¶
CHECK: Signup form submits and creates pending subscription CHECK: Confirmation email sent with working verification link CHECK: Double opt-in completes successfully CHECK: Unsubscribe link works and removes subscriber CHECK: Digest email renders correctly in major email clients COMPLIANCE: Unsubscribe processed within 24 hours COMPLIANCE: No email sent to unconfirmed subscribers
Analytics¶
CHECK: Analytics script loads without errors CHECK: Page views tracked on navigation CHECK: Custom events fire correctly (share, signup, scroll) CHECK: Analytics dashboard accessible and showing data COMPLIANCE: No cookies set without consent (if using cookie-based analytics) COMPLIANCE: Privacy policy mentions analytics data collection
Security¶
CHECK: Authentication endpoints rate-limited CHECK: CSRF protection on all mutation endpoints CHECK: Content API requires authentication for write operations CHECK: Media upload validates file type and size server-side CHECK: Rich text output sanitized (no XSS from stored content) CHECK: Preview tokens expire and are single-use CHECK: Admin panel not accessible without authentication CHECK: HTTP security headers set (CSP, X-Frame-Options, HSTS)
Infrastructure¶
CHECK: EU-hosted — all data stored in EU region CHECK: Database backups configured and tested (restore drill) CHECK: SSL/TLS configured with valid certificate CHECK: DNS configured with correct CNAME/A records CHECK: Monitoring and alerting configured for downtime CHECK: Error tracking configured (Sentry or equivalent) CHECK: Environment variables set in production (no defaults)
Final Sign-Off¶
CHECK: Client has reviewed staging site with real content CHECK: Client's editorial team has completed workflow test CHECK: Client's brand guidelines applied and approved by Alexander CHECK: Legal review completed (privacy policy, cookie notice, terms) CHECK: Handoff documentation completed for client's editorial team CHECK: Post-launch support plan agreed