managarten/memoro/apps/landing/docs/content-collections.md
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

12 KiB

Memoro Content Collections Documentation

This document provides a comprehensive overview of all content collections used in the Memoro website. Each collection is structured with Zod schemas for type safety and validation.

Quick Overview

The Memoro website contains 15 content collections:

  1. Blog - Articles and blog posts about features and updates
  2. Team - Team member profiles (core team, freelancers, mentors, supporters, alumni)
  3. Guides - How-to tutorials with difficulty levels (beginner, intermediate, advanced)
  4. Features - Product feature descriptions with icons and categories
  5. Legal - Legal documents (privacy policy, terms of service)
  6. Industries - Industry-specific use cases and solutions
  7. Testimonials - Customer reviews organized by type (private, company, network, press)
  8. Pages - Structured content for special pages like pricing with Mana system
  9. Contracts - Downloadable legal contracts and agreements
  10. Blueprints - Pre-configured templates for different use cases
  11. Memories - Memory templates and examples
  12. Wallpapers - Downloadable wallpapers in multiple formats and resolutions
  13. FAQs - Frequently asked questions by category
  14. Statistics - Weekly/monthly reports with usage metrics
  15. Changelog - Product updates and release notes with semantic versioning

Overview

The Memoro website uses Astro's content collections to manage various types of content. All collections support internationalization with German (de) and English (en) locales.

Collections

1. Blog Collection

Purpose: Articles and blog posts about Memoro features, updates, and industry insights.

Schema:

{
  title: string
  description: string
  pubDate: Date
  author: string (default: 'Anonymous')
  image?: string
  tags: string[] (default: [])
  lang: 'de' | 'en'
  slug?: string
  lastUpdated?: Date
  draft?: boolean
}

Location: src/content/blog/{de|en}/


2. Team Collection

Purpose: Team member profiles showcasing the people behind Memoro.

Schema:

{
  title: string
  description: string
  role: string
  image?: string
  social?: {
    linkedin?: string
    github?: string
    twitter?: string
  }
  lang: 'de' | 'en'
  category: 'kernteam' | 'freelance' | 'mentoren' | 'unterstuetzer' | 'alumni'
  order?: number
  categoryOrder?: number
  lastUpdated?: Date
}

Location: src/content/team/{de|en}/

Categories:

  • kernteam: Core team members
  • freelance: Freelance contributors
  • mentoren: Mentors
  • unterstuetzer: Supporters
  • alumni: Former team members

3. Guide Collection

Purpose: Tutorials and how-to guides for using Memoro features.

Schema:

{
  title: string
  description: string
  difficulty: 'beginner' | 'intermediate' | 'advanced'
  duration: string
  category: string
  author: string (default: 'Das Platform-Team')
  lastUpdated: Date
  lang: 'de' | 'en'
}

Location: src/content/guides/{de|en}/


4. Features Collection

Purpose: Detailed descriptions of Memoro's features and capabilities.

Schema:

{
  title: string
  description: string
  lang: 'de' | 'en'
  icon: string
  color: 'blue' | 'red' | 'purple' | 'green' | 'orange'
  category?: 'organization' | 'language' | 'customization' | 'recording' | 
            'analytics' | 'collaboration' | 'ai-features' | 'sharing'
  order?: number
}

Location: src/content/features/{de|en}/


Purpose: Legal documents including privacy policy, terms of service, etc.

Schema:

{
  title: string
  lastUpdated?: Date
  lang: 'de' | 'en'
}

Location: src/content/legal/


6. Industry Collection

Purpose: Industry-specific use cases and solutions.

Schema:

{
  title: string
  description: string
  icon: string
  color: 'blue' | 'red' | 'purple' | 'green'
  lang: 'de' | 'en'
  order?: number
  keyFeatures?: string[]
  testimonials?: Array<{
    quote: string
    author: string
    role: string
    company: string
  }>
}

Location: src/content/industries/{de|en}/


7. Testimonials Collection

Purpose: Customer testimonials and reviews organized by type.

Schema:

{
  name: string
  role: string
  company?: string // Optional for private individuals
  image: string
  text: string
  lang: 'de' | 'en'
  type: 'private' | 'company' | 'network' | 'press'
  order?: number
  lastUpdated?: Date
  source?: string // For press: publication name
  sourceUrl?: string // For press: article link
}

Location: src/content/testimonials/{de|en}/{type}/

Types:

  • private: Individual users
  • company: Corporate testimonials
  • network: Partner/network testimonials
  • press: Press mentions and reviews

8. Pages Collection

Purpose: Structured content for special pages like pricing.

Schema:

{
  title: string
  description: string
  lang: 'de' | 'en'
  type: string
  lastUpdated: Date
  sections: {
    hero: {
      title: string
      subtitle?: string
    }
    plans?: Array<{
      id?: string
      name: string
      price: {
        monthly: number
        yearly: number
      }
      priceUnit?: string
      yearlyBreakdown?: string
      features: string[]
      // Legacy fields
      minutes?: number
      memoLength?: number
      dailyMemos?: number | '∞'
      // Mana-based fields
      initialMana?: number
      dailyMana?: number
      maxMana?: number
      canGiftMana?: boolean
      cta: string
      highlight: boolean
    }>
    manaPotions?: {
      title: string
      subtitle: string
      items: Array<{
        id: string
        name: string
        manaAmount: number
        price: number
        popular: boolean
      }>
    }
    comparison?: { title: string }
    faq?: {
      title: string
      items: Array<{
        question: string
        answer: string
      }>
    }
    callToAction?: {
      title: string
      description: string
      buttonText: string
      buttonLink: string
    }
  }
}

Location: src/content/pages/{de|en}/


9. Contracts Collection

Purpose: Legal contracts and agreements available for download.

Schema:

{
  title: string
  description: string
  lastUpdated: Date
  lang: 'de' | 'en'
  category: string
  order?: number
  downloadUrl?: string
  previewEnabled: boolean (default: false)
}

Location: src/content/contracts/{de|en}/


10. Blueprints Collection

Purpose: Pre-configured templates and setups for different use cases.

Schema:

{
  title: string
  description: string
  icon: string
  color: 'blue' | 'red' | 'purple' | 'green' | 'orange' | 'yellow'
  lang: 'de' | 'en'
  order?: number
  lastUpdated?: Date
  isActive: boolean (default: true)
  features?: string[]
  compatibility?: string[]
}

Location: src/content/blueprints/{de|en}/


11. Memories Collection

Purpose: Memory templates and examples for different scenarios.

Schema:

{
  title: string
  description: string
  icon: string
  color: 'blue' | 'red' | 'purple' | 'green' | 'orange' | 'yellow'
  category?: string
  lang: 'de' | 'en'
  order?: number
  lastUpdated?: Date
  isActive: boolean (default: true)
  features?: string[]
  compatibility?: string[]
}

Location: src/content/memories/{de|en}/


12. Wallpaper Collection

Purpose: Downloadable wallpapers in various formats and resolutions.

Schema:

{
  title: string
  description: string
  thumbnail: string
  formats: Array<{
    type: 'desktop' | 'mobile' | 'tablet' | 'ultrawide'
    device?: string // e.g., "iPhone 16 Pro", "iPad Pro"
    resolution: string // "3840x2160"
    aspectRatio: string // "16:9"
    fileUrl: string // "/images/wallpaper/..."
    fileSize?: string // "2.4 MB"
  }>
  category: 'nature' | 'abstract' | 'city' | 'technology' | 'other'
  colors?: string[]
  tags?: string[]
  lang: 'de' | 'en'
  order?: number
  lastUpdated?: Date
  isActive: boolean (default: true)
  isFeatured: boolean (default: false)
  downloadCount: number (default: 0)
  formatDownloads?: Record<string, number>
}

Location: src/content/wallpapers/{de|en}/


13. FAQs Collection

Purpose: Frequently asked questions organized by category.

Schema:

{
  question: string
  answer: string
  category: 'general' | 'features' | 'technical' | 'pricing' | 
           'security' | 'business' | 'industries' | 'guides'
  tags?: string[]
  order: number (default: 0)
  featured: boolean (default: false)
  relatedLinks?: Array<{
    title: string
    url: string
  }>
  lang: 'de' | 'en'
}

Location: src/content/faqs/{de|en}/

Categories:

  • general: General questions
  • features: Feature-related questions
  • technical: Technical questions
  • pricing: Pricing and plans
  • security: Security and privacy
  • business: Business and enterprise
  • industries: Industry-specific questions
  • guides: Tutorials and how-to questions

14. Statistics Collection

Purpose: Weekly and monthly reports with usage statistics and metrics.

Schema:

{
  title: string
  description: string
  reportType: 'weekly' | 'monthly' (default: 'weekly')
  weekNumber?: number // Calendar week (for weekly reports)
  month?: number // Month (for monthly reports)
  year: number
  period: {
    start: Date
    end: Date
  }
  stats: {
    totalUsers: number
    newUsers: number
    activeUsers: number
    totalRecordings: number
    totalMinutes: number
    totalWords?: number
    totalEntries?: number
    manaConsumed: number
    manaPurchased: number
  }
  highlights?: string[] // Important events
  trends?: {
    userGrowth: number // Percentage compared to previous period
    recordingGrowth: number
    manaGrowth: number
  }
  topFeatures?: Array<{
    name: string
    usage: number
  }>
  lang: 'de' | 'en'
  publishDate: Date
  draft: boolean (default: false)
  author: string (default: 'Das Memoro Team')
}

Location: src/content/statistics/{de|en}/


15. Changelog Collection

Purpose: Product updates, release notes, and version history.

Schema:

{
  title: string
  description: string
  version: string // e.g., "1.2.0"
  releaseDate: Date
  type: 'major' | 'minor' | 'patch' // Semantic versioning
  category: Array<'feature' | 'improvement' | 'bugfix' | 
                  'security' | 'performance' | 'other'>
  highlights?: string[] // Key features of this version
  breaking: boolean (default: false)
  deprecated?: string[] // Deprecated features
  migration?: string // Migration guide for breaking changes
  platforms?: Array<'web' | 'ios' | 'android' | 'api'>
  lang: 'de' | 'en'
  draft: boolean (default: false)
  author: string (default: 'Das Memoro Team')
}

Location: src/content/changelog/{de|en}/

Categories:

  • feature: New features
  • improvement: Improvements
  • bugfix: Bug fixes
  • security: Security updates
  • performance: Performance improvements
  • other: Other changes

Best Practices

  1. Internationalization: Always create content in both German and English
  2. File Naming: Use kebab-case for file names (e.g., my-blog-post.mdx)
  3. Frontmatter: Ensure all required fields are filled according to the schema
  4. Images: Store images in /public/images/ organized by content type
  5. Draft Mode: Use the draft field to hide content from production
  6. Ordering: Use the order field to control display sequence
  7. Dates: Use ISO date format (YYYY-MM-DD) for all date fields

Content Organization

The content is organized following this structure:

src/content/
├── [collection-name]/
│   ├── de/           # German content
│   │   └── *.mdx     # Content files
│   └── en/           # English content
│       └── *.mdx     # Content files
└── config.ts         # Collection schemas

For testimonials, an additional level of organization by type is used:

src/content/testimonials/
├── de/
│   ├── private/
│   ├── company/
│   ├── network/
│   └── press/
└── en/
    ├── private/
    ├── company/
    ├── network/
    └── press/