Content Platform — Feature Tree¶
Complete feature decomposition for content platform builds. Each section maps to scope items that Aimee selects during client scoping.
1. Content Management¶
1.1 Structured Content Modeling¶
SCOPE_ITEM: Define content types (article, page, author, category, tag) SCOPE_ITEM: Content type schema with typed fields (text, rich text, media, reference, date) SCOPE_ITEM: Relations between content types (article → author, article → categories) SCOPE_ITEM: Content type validation rules (required fields, character limits, format) SCOPE_ITEM: Slug generation from title with uniqueness enforcement OPTIONAL: Content type inheritance (base page → specialized page types) OPTIONAL: Polymorphic content blocks (hero, text, gallery, CTA — composable) OPTIONAL: Content type versioning (schema migrations when types change)
1.2 Rich Text Editor¶
SCOPE_ITEM: Tiptap editor with ProseMirror foundation SCOPE_ITEM: Basic formatting — headings (H2-H4), bold, italic, underline, strikethrough SCOPE_ITEM: Lists — ordered, unordered, task lists SCOPE_ITEM: Links — internal content links, external links with nofollow option SCOPE_ITEM: Block quotes and horizontal rules SCOPE_ITEM: Code blocks with syntax highlighting SCOPE_ITEM: Undo/redo with full history OPTIONAL: Table editing with cell merge OPTIONAL: Embed blocks (YouTube, Twitter, CodePen) OPTIONAL: Slash command menu (type "/" for block insert) OPTIONAL: Collaborative editing with Yjs (real-time multi-editor) OPTIONAL: AI writing assistant (tone adjustment, summarization) OPTIONAL: Markdown import/export
1.3 Media Library¶
SCOPE_ITEM: Image upload with drag-and-drop SCOPE_ITEM: Image optimization pipeline — WebP/AVIF conversion, responsive sizes SCOPE_ITEM: Alt text field (required for accessibility) SCOPE_ITEM: Media metadata (title, caption, credit, license) SCOPE_ITEM: Folder organization or tag-based filtering SCOPE_ITEM: Search within media library by filename and metadata OPTIONAL: Video upload with transcoding OPTIONAL: SVG upload with sanitization OPTIONAL: CDN integration (bunny.net) for global delivery OPTIONAL: Duplicate detection (perceptual hash) OPTIONAL: Bulk upload with progress tracking OPTIONAL: Image focal point selector for smart cropping
1.4 Categories and Tags¶
SCOPE_ITEM: Hierarchical categories (parent → child) SCOPE_ITEM: Flat tags with autocomplete SCOPE_ITEM: Category and tag archive pages with pagination SCOPE_ITEM: Category-specific metadata (description, image, SEO fields) OPTIONAL: Tag merging and aliasing OPTIONAL: Tag usage analytics (most/least used) OPTIONAL: Suggested tags based on content analysis
2. Publishing Workflow¶
2.1 Content States¶
SCOPE_ITEM: Draft — author working, not visible to public SCOPE_ITEM: In Review — submitted for editorial review SCOPE_ITEM: Approved — reviewed, awaiting publish or schedule SCOPE_ITEM: Published — live and publicly accessible SCOPE_ITEM: Archived — removed from public but preserved in system OPTIONAL: Rejected — returned to author with feedback OPTIONAL: Expired — auto-archived after configured TTL
2.2 Scheduling¶
SCOPE_ITEM: Schedule publish date and time SCOPE_ITEM: Cron-based publish job (check every minute) SCOPE_ITEM: Scheduled content visible in dashboard with countdown OPTIONAL: Schedule unpublish (content expiry) OPTIONAL: Timezone-aware scheduling per author OPTIONAL: Batch scheduling (publish series on cadence)
2.3 Preview¶
SCOPE_ITEM: Draft preview with shareable link (token-protected) SCOPE_ITEM: Preview renders exactly as published page (same components) SCOPE_ITEM: Next.js Draft Mode integration OPTIONAL: Preview on multiple viewports (mobile, tablet, desktop) OPTIONAL: Side-by-side diff view (current published vs. draft)
2.4 Versioning and Rollback¶
SCOPE_ITEM: Every publish creates a version snapshot SCOPE_ITEM: Version history with diff view SCOPE_ITEM: One-click rollback to any previous version OPTIONAL: Named versions (e.g., "launch version", "Q2 update") OPTIONAL: Auto-save drafts every 30 seconds
3. User Roles and Permissions¶
3.1 Role Definitions¶
SCOPE_ITEM: Admin — full system access, user management, settings SCOPE_ITEM: Editor — create, edit, review, publish any content SCOPE_ITEM: Author — create and edit own content, submit for review SCOPE_ITEM: Reviewer — read and approve/reject submitted content OPTIONAL: Contributor — submit drafts only, no publish rights OPTIONAL: Guest Author — external contributor with limited access
3.2 Permission Model¶
SCOPE_ITEM: Role-based access control (RBAC) per content type SCOPE_ITEM: Content ownership — authors can only edit their own drafts SCOPE_ITEM: Publish permission separate from edit permission OPTIONAL: Category-scoped permissions (editor for Sports only) OPTIONAL: Approval chains (require 2 reviewers before publish) OPTIONAL: Audit log — who changed what, when
4. SEO¶
4.1 Metadata Management¶
SCOPE_ITEM: Title tag with character count (50-60 target) SCOPE_ITEM: Meta description with character count (150-160 target) SCOPE_ITEM: Canonical URL (auto-generated, manually overridable) SCOPE_ITEM: Open Graph title, description, image SCOPE_ITEM: Twitter Card metadata OPTIONAL: JSON-LD structured data editor (Article, FAQ, HowTo) OPTIONAL: Meta robots per page (noindex, nofollow) OPTIONAL: Hreflang tags for multi-language content
4.2 Technical SEO¶
SCOPE_ITEM: Dynamic sitemap.xml generation via Next.js sitemap.ts SCOPE_ITEM: robots.txt via Next.js robots.ts SCOPE_ITEM: Clean URL structure with semantic slugs SCOPE_ITEM: Proper heading hierarchy enforcement (single H1) SCOPE_ITEM: Image alt text validation OPTIONAL: Multiple sitemaps for large sites (generateSitemaps) OPTIONAL: Pagination with rel="next"/rel="prev" OPTIONAL: Breadcrumb structured data OPTIONAL: FAQ schema for relevant pages
4.3 Performance as SEO¶
SCOPE_ITEM: Core Web Vitals optimization (LCP < 2.5s, CLS < 0.1, INP < 200ms) SCOPE_ITEM: Image lazy loading with blur placeholder SCOPE_ITEM: Font optimization (next/font, font-display: swap) SCOPE_ITEM: Static generation for content pages (ISR) OPTIONAL: Edge caching for dynamic personalized content
5. Search¶
5.1 Site Search¶
SCOPE_ITEM: Full-text search across all published content SCOPE_ITEM: Search-as-you-type with instant results SCOPE_ITEM: Search results with highlighted snippets SCOPE_ITEM: Filter by content type, category, date range OPTIONAL: Typo tolerance and fuzzy matching OPTIONAL: Search analytics (popular queries, zero-result queries) OPTIONAL: Faceted search (multiple filter dimensions) OPTIONAL: AI-powered semantic search
5.2 Search Implementation¶
IF: Content volume < 10,000 articles THEN: PostgreSQL full-text search with tsvector/tsquery
IF: Content volume > 10,000 articles or search-as-you-type required THEN: Meilisearch (self-hosted, EU-compatible, sub-50ms)
IF: Client requires AI-powered semantic search THEN: Meilisearch hybrid search (keyword + vector)
6. Personalization¶
6.1 Content Recommendations¶
SCOPE_ITEM: Related articles based on shared categories/tags SCOPE_ITEM: "Most popular" based on view count OPTIONAL: "Trending" based on recent engagement velocity OPTIONAL: Personalized recommendations based on reading history OPTIONAL: Collaborative filtering (readers who liked X also liked Y)
6.2 User Preferences¶
OPTIONAL: Saved/bookmarked articles OPTIONAL: Reading history OPTIONAL: Topic follow (subscribe to categories) OPTIONAL: Email digest based on followed topics OPTIONAL: Dark mode preference
6.3 A/B Testing¶
OPTIONAL: Headline A/B testing OPTIONAL: Layout variant testing (list vs. grid) OPTIONAL: CTA placement testing OPTIONAL: Middleware-based variant assignment (cookie + edge)
7. Comments and Engagement¶
7.1 Native Comments¶
OPTIONAL: Threaded comments with moderation queue OPTIONAL: Comment author identity (logged in or name+email) OPTIONAL: Spam filtering (Akismet or custom heuristics) OPTIONAL: Comment notifications for article authors OPTIONAL: Reactions (like, insightful, disagree)
7.2 Social Engagement¶
SCOPE_ITEM: Social share buttons (configurable per platform) SCOPE_ITEM: Open Graph preview optimization OPTIONAL: Share count display OPTIONAL: Click-to-tweet for pull quotes
8. Newsletter Integration¶
8.1 Subscription¶
SCOPE_ITEM: Email signup form (inline and popup) SCOPE_ITEM: Double opt-in flow (GDPR-compliant) SCOPE_ITEM: Subscription preferences (frequency, topics) OPTIONAL: Exit-intent popup OPTIONAL: Embedded signup within articles
8.2 Delivery¶
SCOPE_ITEM: Integration with email provider (Brevo (FR) preferred. Mailchimp (US) only if client demands — sovereignty risk. Resend (US) secondary — sovereignty risk.) SCOPE_ITEM: Automated digest from recent published content OPTIONAL: Manual newsletter composition with content picker OPTIONAL: Personalized digest per subscriber interests OPTIONAL: A/B testing subject lines
9. Analytics¶
9.1 Privacy-Friendly Analytics¶
SCOPE_ITEM: Plausible or Fathom integration (no cookies, GDPR-compliant) SCOPE_ITEM: Page views, unique visitors, bounce rate SCOPE_ITEM: Traffic sources and referrers SCOPE_ITEM: Top pages and content performance OPTIONAL: Custom events (scroll depth, CTA clicks, share clicks) OPTIONAL: UTM parameter tracking OPTIONAL: Goal conversion tracking
9.2 Editorial Analytics¶
OPTIONAL: Per-author performance dashboard OPTIONAL: Content freshness report (stale content detection) OPTIONAL: Category performance comparison OPTIONAL: Read time estimation with actual engagement comparison OPTIONAL: Search query analytics (what users look for)
10. Multi-Language Content¶
10.1 Content Translation¶
OPTIONAL: Locale-specific content versions (not machine-translated) OPTIONAL: Translation status dashboard (translated, outdated, missing) OPTIONAL: Side-by-side translation editor OPTIONAL: Hreflang tag generation OPTIONAL: Locale-specific URL structure (/en/, /nl/, /de/) OPTIONAL: Fallback language chain
10.2 Translation Workflow¶
OPTIONAL: Mark content as "needs translation" on publish OPTIONAL: Translation assignment to specific editors OPTIONAL: Auto-detect outdated translations when source changes
11. Content Versioning¶
11.1 Revision Control¶
SCOPE_ITEM: Every save creates a revision SCOPE_ITEM: Revision list with timestamps and author SCOPE_ITEM: Visual diff between any two revisions SCOPE_ITEM: Restore any revision as new draft OPTIONAL: Revision comments (why this change was made) OPTIONAL: Revision pruning policy (keep last N or all within M days)
12. Performance and Infrastructure¶
12.1 Caching Strategy¶
SCOPE_ITEM: ISR with webhook-triggered on-demand revalidation SCOPE_ITEM: CDN caching for static assets and images SCOPE_ITEM: API response caching with cache-control headers OPTIONAL: Edge caching for personalized content (PPR) OPTIONAL: Stale-while-revalidate for search results
12.2 Scalability¶
SCOPE_ITEM: Database connection pooling SCOPE_ITEM: Image CDN offloading (no origin image serving) SCOPE_ITEM: Horizontal scaling of API layer OPTIONAL: Read replicas for high-traffic content queries OPTIONAL: Queue-based import for bulk content operations
Feature Selection Guide¶
CHECK: Every SCOPE_ITEM is evaluated during Aimee's scoping session CHECK: OPTIONAL items are presented to client with cost impact CHECK: Variant selection (Section 0 in index.md) determines which features are relevant CHECK: No feature is included by default — everything is scoped explicitly
IF: Client says "just a simple blog" THEN: Start with Sections 1.1, 1.2, 2.1, 4.1, 4.2, 4.3 — minimal viable content platform
IF: Client says "we need a full editorial platform" THEN: Include Sections 1-4 fully, add 5, 8, 9 — editorial-grade CMS
IF: Client says "we want to grow audience" THEN: Add Sections 5, 6, 7, 8, 9 — growth-oriented features