Brand Schema

Brand YAML files configure white-label learning sites. Each brand gets its own domain, theme, landing page, pricing, and SEO — learners never see Graspful.

Top-level structure

brand:           # required — identity and domain
  id: string
  name: string
  domain: string
  tagline: string
  orgSlug: string

theme:           # optional — color preset and radius
  preset: string
  radius: string

landing:         # required — landing page sections
  hero: ...
  features: ...
  howItWorks: ...
  faq: ...
  bottomCta: ...

seo:             # optional — meta tags and keywords
  title: string
  description: string
  keywords: [string]

pricing:         # optional — Stripe pricing config
  monthly: number
  yearly: number
  currency: string
  trialDays: number

contentScope:    # optional — which courses this brand serves
  courseIds: [string]

brand

Core identity for the white-label site.

FieldTypeDescription
id*stringKebab-case identifier for the brand
name*stringDisplay name (shown in nav, footer, and SEO)
domain*stringCustom domain (e.g., "aws-prep.graspful.com" or "prep.yourdomain.com")
tagline*stringShort tagline shown in the footer
logoUrlstringPath to logo image (e.g., /images/logo.svg)
faviconUrlstringPath to favicon
ogImageUrlstringOpen Graph image for social sharing
orgSlug*stringOrganization slug that owns this brand

theme

Use a preset for quick theming, or specify individual HSL colors for light and dark modes.

FieldTypeDescription
presetenumColor preset (see list below)
radiusstringBorder radius (default: "0.5rem")
lightobjectCustom HSL colors for light mode (overrides preset)
darkobjectCustom HSL colors for dark mode (overrides preset)

Available presets

blue
red
green
orange
purple
slate
emerald
rose
amber
indigo

Custom HSL colors

When not using a preset, specify individual colors in light and/or dark objects. Values use HSL format: "220 90% 50%".

Available color keys: background, foreground, card, cardForeground, popover, popoverForeground, primary, primaryForeground, secondary, secondaryForeground, muted, mutedForeground, accent, accentForeground, destructive, destructiveForeground, border, input, ring.

landing

Configuration for the auto-generated landing page.

landing.hero

FieldTypeDescription
headline*stringMain headline text
subheadline*stringSupporting text below the headline
ctaText*stringCall-to-action button text (e.g., "Start Learning")

landing.features

FieldTypeDescription
heading*stringSection heading
subheadingstringOptional subheading
items*arrayArray of { title, description, icon, wide? } — at least 1 item

landing.howItWorks

FieldTypeDescription
heading*stringSection heading
items*arrayArray of { title, description } — at least 1 item

landing.faq

FieldTypeDescription
(array)arrayArray of { question, answer } pairs. Defaults to empty.

landing.bottomCta

FieldTypeDescription
headline*stringBottom CTA headline
subheadlinestringOptional supporting text

seo

FieldTypeDescription
title*stringPage title for meta tag and browser tab
description*stringMeta description for search engines
keywordsstring[]Meta keywords array

pricing

Stripe pricing configuration. Set monthly to 0 for free courses.

FieldTypeDescription
monthly*numberMonthly price in base currency units (0 = free)
yearlynumberOptional yearly price (for annual discount)
currencystringCurrency code (default: "usd")
trialDaysnumberFree trial period in days (default: 0)

contentScope

Controls which courses appear under this brand.

FieldTypeDescription
courseIdsstring[]Array of course IDs to include. Empty = all courses in the org.

Example brand YAML

aws-prep-brand.yaml
brand:
  id: aws-prep
  name: AWS Prep Academy
  domain: aws-prep.graspful.com
  tagline: "Pass the AWS exam on your first try."
  logoUrl: /images/logo-aws-prep.svg
  faviconUrl: /favicon.ico
  ogImageUrl: /images/og-aws-prep.png
  orgSlug: my-org

theme:
  preset: indigo
  radius: "0.5rem"

landing:
  hero:
    headline: "Master AWS. Pass the Exam."
    subheadline: "Adaptive learning that focuses on what you don't know yet."
    ctaText: "Start Studying"
  features:
    heading: "Why AWS Prep Academy?"
    subheading: "Built for the SAA-C03 exam."
    items:
      - title: "Adaptive Learning"
        description: "The engine skips what you already know."
        icon: Brain
      - title: "Spaced Repetition"
        description: "Review at optimal intervals for lasting memory."
        icon: Clock
      - title: "Audio Lessons"
        description: "Study on your commute with AI-generated audio."
        icon: Headphones
  howItWorks:
    heading: "How It Works"
    items:
      - title: "Take a diagnostic"
        description: "We assess your current AWS knowledge in 15 minutes."
      - title: "Study adaptively"
        description: "Focus on gaps. Skip what you know."
      - title: "Pass the exam"
        description: "Prove mastery through progressive challenges."
  faq:
    - question: "How long does it take to prepare?"
      answer: "Most learners are exam-ready in 4-6 weeks."
    - question: "Is the content up to date?"
      answer: "Yes — aligned with the current SAA-C03 exam guide."
  bottomCta:
    headline: "Ready to pass the AWS exam?"
    subheadline: "Start your adaptive study plan today."

seo:
  title: "AWS Prep Academy — Adaptive SAA-C03 Exam Prep"
  description: "Pass the AWS Solutions Architect exam with adaptive learning and spaced repetition."
  keywords:
    - aws certification
    - saa-c03 exam prep
    - aws solutions architect

pricing:
  monthly: 29
  yearly: 249
  currency: usd
  trialDays: 7

contentScope:
  courseIds:
    - aws-saa-c03
Brand Schema — Graspful Docs | Graspful