backend:
  name: git-gateway
  branch: main
  identity_url: https://cascade.flagrantapp.com/auth
  gateway_url: https://cascade.flagrantapp.com/sites/rubyconf-2026-prod/git/github
  cms_label_prefix: decap-cms/
  repo: rubycentral/rubyconf-2026
  site_domain: rubyconf.org

local_backend: true
publish_mode: editorial_workflow
media_folder: src/images/uploads
public_folder: "/images/uploads"

collections:
  - name: "pages"
    label: "Pages"
    files:
      - name: "about"
        label: "About"
        file: "src/_pages/about.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "code_of_conduct"
        label: "Code of Conduct"
        file: "src/_pages/code_of_conduct.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "contact_us"
        label: "Contact Us"
        file: "src/_pages/contact_us.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "faqs"
        label: "FAQs"
        file: "src/_pages/faqs.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "location"
        label: "Location"
        file: "src/_pages/location.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "policies"
        label: "Policies"
        file: "src/_pages/policies.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "ruby_runway"
        label: "Ruby Runway"
        file: "src/_pages/ruby_runway.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "schedule"
        label: "Schedule"
        file: "src/_pages/schedule.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "speakers"
        label: "Speakers"
        file: "src/_pages/speakers.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }
      - name: "sponsors"
        label: "Sponsors"
        file: "src/_pages/sponsors.md"
        format: frontmatter
        fields:
          - { label: "Title", name: "title", widget: "string" }
          - { label: "OG Image", name: "og_image", widget: "image", required: false, hint: "Image shown when this page is shared on social media (recommended: 1200×630px)" }

  - name: "site_metadata"
    label: "Site content"
    files:
      - name: "site_metadata"
        label: "Site Metadata"
        file: "src/_data/site_metadata.yml"
        fields:
          - { label: "— SEO —", name: "seo_divider", widget: "hidden", default: "" }
          - { label: "Site Title", name: "title", widget: "string", required: true, hint: "Used in the browser tab: 'Page | Site Title'" }
          - { label: "Tagline", name: "tagline", widget: "string", required: true, hint: "Shown on the homepage tab alongside the site title" }
          - { label: "Meta Description", name: "description", widget: "text", required: true, hint: "Used in the <meta name='description'> tag for search engines" }
          - { label: "Default OG Image", name: "og_image", widget: "image", required: false, hint: "Fallback image shown when a page is shared on social media (recommended: 1200×630px)" }
          - { label: "Contact Email", name: "email", widget: "string", required: true, hint: "Contact email address" }

          - { label: "— Social Links —", name: "social_divider", widget: "hidden", default: "" }
          - { label: "Twitter / X URL", name: "twitter", widget: "string", required: false, hint: "Linked from the footer social icons" }
          - { label: "Bluesky URL", name: "bluesky", widget: "string", required: false, hint: "Linked from the footer social icons" }
          - { label: "LinkedIn URL", name: "linkedin", widget: "string", required: false, hint: "Linked from the footer social icons" }
          - { label: "Mastodon URL", name: "mastodon", widget: "string", required: false, hint: "Linked from the footer social icons" }
          - { label: "Slack URL", name: "slack", widget: "string", required: false, hint: "Linked from the footer social icons (currently hidden)" }

          - { label: "— Registration —", name: "registration_divider", widget: "hidden", default: "" }
          - { label: "Register Link", name: "register_link", widget: "string", required: false, hint: "The 'Register' button in the nav and footer" }
          - { label: "Hotel Link", name: "hotel_link", widget: "string", required: false, hint: "'Book a room' button on the Location page" }
          - { label: "RubyCentral Updates Link", name: "rubycentral_updates_link", widget: "string", required: false, hint: "Newsletter signup link" }

          - { label: "— Files & Documents —", name: "files_divider", widget: "hidden", default: "" }
          - { label: "Sponsor Prospectus", name: "prospectus", widget: "string", required: false, hint: "Download link on the homepage and Sponsors page (e.g. /files/RubyConf-2026-Prospectus.pdf)" }
          - { label: "Sponsor Call Link", name: "sponsor_call_link", widget: "string", required: false, hint: "Calendly link for sponsor calls on the homepage" }

          - { label: "Policies Document", name: "policies", widget: "string", required: false, hint: "PDF linked on the Policies page (e.g. /files/Ruby-Central-Conference-Policies.pdf)" }
          - { label: "Code of Conduct", name: "code_of_conduct", widget: "string", required: false, hint: "PDF linked on the Code of Conduct page" }
          - { label: "CFP / Proposal Link", name: "proposal_link", widget: "string", required: false, hint: "Link to the Sessionize proposal submission form" }

  - name: "faq_categories"
    label: "FAQ Categories"
    folder: "src/_data/faq_categories"
    format: yml
    create: true
    slug: "{{slug}}"
    identifier_field: label
    fields:
      - { label: "Label", name: "label", widget: "string", required: true, hint: "Display name shown as the section heading on the FAQ page" }
      - { label: "Slug", name: "slug", widget: "string", required: true, hint: "Unique identifier used to associate FAQs with this category (e.g. 'general')" }
      - { label: "Order", name: "order", widget: "number", default: 99, required: false }

  - name: "faqs"
    label: "FAQ Questions"
    folder: "src/_data/faqs"
    format: yml
    create: true
    slug: "{{category}}-{{slug}}"
    identifier_field: question
    view_groups:
      - label: "General"
        field: category
        pattern: "^general$"
      - label: "Miscellaneous"
        field: category
        pattern: "^miscellaneous$"
    fields:
      - label: "Category"
        name: "category"
        widget: "relation"
        collection: "faq_categories"
        search_fields: ["label"]
        value_field: "slug"
        display_fields: ["label"]
        required: true
      - { label: "Order", name: "order", widget: "number", default: 99, required: false }
      - { label: "Question", name: "question", widget: "string", required: true }
      - { label: "Answer", name: "answer", widget: "markdown", required: true }
      - { label: "Button Text", name: "button_text", widget: "string", required: false }
      - { label: "Button Link", name: "link", widget: "string", required: false }

  - name: "news_cards"
    label: "News & Updates"
    folder: "src/_data/news_cards"
    format: yml
    create: true
    slug: "{{slug}}"
    identifier_field: title
    fields:
      - { label: "Order", name: "order", widget: "number", default: 99, required: false }
      - { label: "Title", name: "title", widget: "string" }
      - { label: "Paragraph", name: "paragraph", widget: "text" }
      - label: "Links"
        name: "links"
        widget: "list"
        required: false
        fields:
          - { label: "Text", name: "text", widget: "string", required: true }
          - { label: "URL", name: "url", widget: "string", required: true }
          - { label: "Open in new tab", name: "target", widget: "select", options: ["", "blank"], required: false }

  - name: "sponsors"
    label: "Sponsors"
    folder: "src/_sponsors"
    format: frontmatter
    create: true
    slug: "{{slug}}"
    identifier_field: name
    fields:
      - { label: "Name", name: "name", widget: "string" }
      - { label: "Level", name: "level", widget: "select", options: ["ruby", "platinum", "gold", "silver", "bronze", "other"] }
      - { label: "Order", name: "order", widget: "number", default: 99, required: false }
      - { label: "Logo", name: "logo", widget: "image", media_folder: "/src/images/sponsors", public_folder: "", required: false }
      - { label: "Website URL", name: "link", widget: "string", required: false }
      - { label: "Contribution", name: "contribution", widget: "string", required: false }

  - name: "speakers"
    label: "Speakers"
    folder: "src/_speakers"
    create: true
    slug: "{{speaker_name}}"
    identifier_field: speaker_name
    fields:
      - { label: "Speaker name", name: "speaker_name", widget: "string", required: true }
      - { label: "Image", name: "image", widget: "image", required: true }
      - { label: "Type", name: "type", widget: "select", options: ["speaker", "keynote"], required: true }
      - { label: "Title/Position", name: "title", widget: "string", required: false }
      - { label: "Company", name: "company", widget: "string", required: false }
      - { label: "Website Url", name: "website", widget: "string", required: false }
      - { label: "Twitter/X Url", name: "twitter", widget: "string", required: false }
      - { label: "Github Url", name: "github", widget: "string", required: false }
      - { label: "Facebook Url", name: "facebook", widget: "string", required: false }
      - { label: "Instagram Url", name: "instagram", widget: "string", required: false }
      - { label: "Mastodon Url", name: "mastodon", widget: "string", required: false }
      - { label: "Bluesky Url", name: "bluesky", widget: "string", required: false }
  

  - name: "staff"
    label: "Program Chairs, Committee & Staff"
    folder: "src/_staff"
    format: frontmatter
    create: true
    slug: "{{slug}}"
    identifier_field: name
    fields:
      - { label: "Name", name: "name", widget: "string", required: true }
      - { label: "Type", name: "type", widget: "select", options: ["chair", "committee", "staff"], required: true }
      - { label: "Order", name: "order", widget: "number", default: 99, required: false }
      - { label: "Photo", name: "image", widget: "image", media_folder: "/src/images/people", public_folder: "", required: false }
      - { label: "Title/Position", name: "title", widget: "string", required: false }
      - { label: "Company", name: "company", widget: "string", required: false }
      - { label: "Website URL", name: "website", widget: "string", required: false }
      - { label: "Twitter/X URL", name: "twitter", widget: "string", required: false }
      - { label: "Bluesky URL", name: "bluesky", widget: "string", required: false }
      - { label: "GitHub URL", name: "github", widget: "string", required: false }
      - { label: "Instagram URL", name: "instagram", widget: "string", required: false }
      - { label: "Mastodon URL", name: "mastodon", widget: "string", required: false }
