backend:
  name: github
  repo: ianlieberman07/LoveFactually
  branch: main
  base_url: https://sveltia-cms-auth.ianlieberman07.workers.dev
publish_mode: simple
site_url: https://lovefactually.pages.dev
media_folder: src/assets/photos
public_folder: /src/assets/photos
collections:
  - name: pages
    label: Pages
    description: The words and photos on the site. Saving publishes the change; the site updates about a minute later.
    files:
      - name: home
        label: Home page
        file: content/home.json
        fields:
          - name: photo
            label: Photo of the two of you
            widget: image
            required: false
            hint: Shown beside the show description. A wide photo works best.
          - name: photoAlt
            label: Photo description (for screen readers)
            widget: text
            required: false
            hint: One sentence describing the photo for people who cannot see it.
          - name: photoCaption
            label: Photo caption
            widget: string
            required: false
          - name: videoHeading
            label: Heading above the latest video episode
            widget: string
            required: false
            hint: The newest episode with a YouTube video is shown automatically.
          - name: startHeading
            label: 'Episodes page: heading of the "place to start" picks'
            widget: string
            required: false
          - name: startEpisodes
            label: "Episodes page: place-to-start picks"
            widget: list
            required: false
            max: 5
            hint: Choose 3 to 5 episodes. They take turns at the top of the Episodes page, in this order. Drag to reorder.
            field:
              name: episode
              label: Episode
              widget: select
              options: &a5
                - label: Obsession (2026) (Oct 19, 2026)
                  value: obsession
                - label: Sense and Sensibility (1995) (Oct 5, 2026)
                  value: sense-and-sensibility
                - label: "Bonus Episode: Second Anniversary Show! (Sep 25, 2026)"
                  value: bonus-episode-second-anniversary-show
                - label: How to Lose a Guy in 10 Days (2003) (Sep 21, 2026)
                  value: how-to-lose-a-guy-in-10-days
                - label: The Kids Are All Right (2010) with Lisa Diamond (Sep 7, 2026)
                  value: the-kids-are-all-right
                - label: Crazy Stupid Love (2011) (Aug 24, 2026)
                  value: crazy-stupid-love
                - label: The Drama (2026) (Aug 10, 2026)
                  value: the-drama
                - label: Legally Blonde (2001) with Katy Milkman (Jul 27, 2026)
                  value: legally-blonde
                - label: The Invite (2026) (Jul 13, 2026)
                  value: the-invite
                - label: Bull Durham (1988) with Dan Pink (Jun 29, 2026)
                  value: bull-durham
                - label: "Deep Dive: Romantic AI (Jun 22, 2026)"
                  value: deep-dive-romantic-ai
                - label: Sleepless In Seattle (1993) with Yuthika Girme (Jun 15, 2026)
                  value: sleepless-in-seattle
                - label: Call Me By Your Name (2017) (Jun 1, 2026)
                  value: call-me-by-your-name
                - label: Casablanca (1942) with Laurie Santos (May 18, 2026)
                  value: casablanca
                - label: Before Midnight (2013) (May 4, 2026)
                  value: before-midnight
                - label: "Mailbag: Matchmaking, Mate Value, and Marital Pessimism (Apr 27, 2026)"
                  value: mailbag-matchmaking-mate-value-and-marital-pessimism
                - label: The Devil Wears Prada (2006) with Paige Harden (Apr 20, 2026)
                  value: the-devil-wears-prada
                - label: "Bonus Episode: Vicky Cristina Barcelona (2008) with the Multiamory Podcast (Apr 13, 2026)"
                  value: vicky-cristina-barcelona
                - label: The Wedding Singer (1998) with Vanessa Bohns (Apr 6, 2026)
                  value: the-wedding-singer
                - label: Ex Machina (2015) (Mar 23, 2026)
                  value: ex-machina
                - label: People We Meet on Vacation (2026) (Mar 9, 2026)
                  value: people-we-meet-on-vacation
                - label: Fatal Attraction (1987) with Paige Harden (Feb 23, 2026)
                  value: fatal-attraction
                - label: Romeo + Juliet (1996) with Donovan Sherman (Feb 9, 2026)
                  value: romeo-juliet
                - label: Love & Basketball (2000) (Jan 26, 2026)
                  value: love-and-basketball
                - label: "Deep Dive: Evolutionary Mythbusting (Jan 19, 2026)"
                  value: deep-dive-evolutionary-mythbusting
                - label: A Star Is Born (2018) (Jan 12, 2026)
                  value: a-star-is-born
                - label: My Best Friend's Wedding (1997) (Dec 29, 2025)
                  value: my-best-friends-wedding
                - label: The Holiday (2006) (Dec 15, 2025)
                  value: the-holiday
                - label: "Deep Dive: The Compatibility Puzzle (Dec 8, 2025)"
                  value: deep-dive-the-compatibility-puzzle
                - label: It's a Wonderful Life (1946) (Dec 1, 2025)
                  value: its-a-wonderful-life
                - label: Four Weddings and a Funeral (1994) (Nov 24, 2025)
                  value: four-weddings-and-a-funeral
                - label: "Bonus Episode: Beaches (1988) with Nina Badzin and Rebekah Jacobs (Nov 17, 2025)"
                  value: beaches
                - label: Howl's Moving Castle (2004) (Nov 10, 2025)
                  value: howls-moving-castle
                - label: The 40 Year-Old Virgin (2005) (Oct 27, 2025)
                  value: the-40-year-old-virgin
                - label: "Bonus Episode: Paul and Eli on the Speaking of Psychology Podcast with Kim Mills (Oct 20, 2025)"
                  value: bonus-episode-paul-and-eli-on-the-speaking-of-psychology-podcast
                - label: Ghost (1990) (Oct 13, 2025)
                  value: ghost
                - label: Phantom Thread (2017) (Sep 29, 2025)
                  value: phantom-thread
                - label: "Bonus Episode: First Anniversary Show! (Sep 25, 2025)"
                  value: bonus-episode-first-anniversary-show
                - label: Top Gun (1986) with Matt Rhodes (Sep 15, 2025)
                  value: top-gun
                - label: The Lobster (2015) with Yuthika Girme (Sep 1, 2025)
                  value: the-lobster
                - label: Titanic (1997) (Aug 18, 2025)
                  value: titanic
                - label: Moonstruck (1987) (Aug 4, 2025)
                  value: moonstruck
                - label: Pride and Prejudice (2005) (Jul 21, 2025)
                  value: pride-and-prejudice
                - label: High Fidelity (2000) (Jul 7, 2025)
                  value: high-fidelity
                - label: Materialists (2025) (Jun 23, 2025)
                  value: materialists
                - label: Brokeback Mountain (2005) (Jun 9, 2025)
                  value: brokeback-mountain
                - label: "Deep Dive: Grand Romantic Gestures (Jun 2, 2025)"
                  value: deep-dive-grand-romantic-gestures
                - label: 27 Dresses (2008) (May 26, 2025)
                  value: 27-dresses
                - label: Frozen (2013) (May 12, 2025)
                  value: frozen
                - label: "Mailbag: Friends-first, Weddings, & Therapy (May 5, 2025)"
                  value: mailbag-friends-first-weddings-and-therapy
                - label: Marriage Story (2019) (Apr 28, 2025)
                  value: marriage-story
                - label: Groundhog Day (1993) (Apr 14, 2025)
                  value: groundhog-day
                - label: "BONUS episode: Paul and Eli on the Dateable Podcast with Julie Krafchick and Yue Xu (Apr 7, 2025)"
                  value: bonus-episode-paul-and-eli-on-the-dateable-podcast
                - label: Hitch (2005) (Mar 31, 2025)
                  value: hitch
                - label: Before Sunset (2004) (Mar 17, 2025)
                  value: before-sunset
                - label: Barbie (2023) (Mar 3, 2025)
                  value: barbie
                - label: Jerry Maguire (1996) (Feb 17, 2025)
                  value: jerry-maguire
                - label: "BONUS episode: Paul and Eli on The Happiness Lab Podcast with Laurie Santos (Feb 14, 2025)"
                  value: bonus-episode-paul-and-eli-on-the-happiness-lab-podcast
                - label: Say Anything (1989) with Laurie Santos (Feb 3, 2025)
                  value: say-anything
                - label: Pretty Woman (1990) with Katy Milkman (Jan 20, 2025)
                  value: pretty-woman
                - label: "BONUS episode: Paul and Eli on the Sex and Psychology Podcast with Justin Lehmiller (Jan 13, 2025)"
                  value: bonus-episode-paul-and-eli-on-the-sex-and-psychology-podcast
                - label: Easy A (2010) with Justin Lehmiller (Jan 6, 2025)
                  value: easy-a
                - label: Eyes Wide Shut (1999) with Peter Sagal (Dec 23, 2024)
                  value: eyes-wide-shut
                - label: Bridget Jones's Diary (2001) (Dec 9, 2024)
                  value: bridget-joness-diary
                - label: The Notebook (2004) (Nov 25, 2024)
                  value: the-notebook
                - label: Her (2013) (Nov 18, 2024)
                  value: her
                - label: (500) Days of Summer (2009) (Nov 11, 2024)
                  value: 500-days-of-summer
                - label: Portrait of a Lady on Fire (2019) (Nov 4, 2024)
                  value: portrait-of-a-lady-on-fire
                - label: 10 Things I Hate about You (1999) (Oct 28, 2024)
                  value: 10-things-i-hate-about-you
                - label: Eternal Sunshine of the Spotless Mind (2004) (Oct 21, 2024)
                  value: eternal-sunshine-of-the-spotless-mind
                - label: Before Sunrise (1995) (Oct 14, 2024)
                  value: before-sunrise
                - label: Challengers (2024) (Oct 7, 2024)
                  value: challengers
                - label: Clueless (1995) (Sep 30, 2024)
                  value: clueless
                - label: La La Land (2016) (Sep 25, 2024)
                  value: la-la-land
                - label: When Harry Met Sally (1989) (Sep 25, 2024)
                  value: when-harry-met-sally
          - name: feature
            label: Featured press (the big box)
            widget: object
            fields:
              - name: kicker
                label: Small line on top
                widget: string
                required: false
              - name: text
                label: Text
                widget: markdown
                buttons: &a1
                  - bold
                  - italic
                  - link
                editor_components: &a2 []
                modes: &a3
                  - rich_text
                required: false
              - name: linkLabel
                label: Link text
                widget: string
                required: false
              - name: url
                label: Link address
                widget: string
                required: false
          - name: quotes
            label: Quotes
            widget: list
            required: false
            summary: "{{fields.name}}"
            fields:
              - name: quote
                label: Quote
                widget: text
              - name: name
                label: Who said it
                widget: string
              - name: nameUrl
                label: Link for their name
                widget: string
                required: false
              - name: role
                label: Who they are
                widget: markdown
                buttons: *a1
                editor_components: *a2
                modes: *a3
                required: false
                hint: e.g. host of Choiceology (italics for the show name).
          - name: pressHeading
            label: Heading of the press list
            widget: string
            required: false
          - name: press
            label: Press list
            widget: list
            required: false
            summary: "{{fields.link}}{{fields.after}}"
            hint: "Each line reads: text before + linked words + text after."
            fields:
              - name: before
                label: Text before the link
                widget: string
                required: false
              - name: link
                label: Linked words
                widget: string
              - name: after
                label: Text after the link
                widget: string
                required: false
              - name: url
                label: Link address
                widget: string
      - name: hosts
        label: Hosts page
        file: content/hosts.json
        fields:
          - name: heading
            label: Page heading
            widget: string
          - name: hosts
            label: Hosts
            widget: list
            summary: "{{fields.name}}"
            fields:
              - name: name
                label: Name
                widget: string
              - name: role
                label: Title
                widget: string
                required: false
              - name: photo
                label: Photo
                widget: image
                required: false
                hint: A portrait, ideally at least 640 pixels wide. Without one, the card shows initials.
              - name: photoAlt
                label: Photo description (for screen readers)
                widget: string
                required: false
                hint: Optional. If left empty, it reads "Portrait of [name]."
              - name: bio
                label: Bio
                widget: markdown
                buttons: *a1
                editor_components: *a2
                modes: *a3
                required: false
              - name: url
                label: Website link (shown under the bio)
                widget: string
                required: false
      - name: settings
        label: Show details, links & footer
        file: content/settings/site.json
        fields:
          - name: name
            label: Show name
            widget: string
          - name: hosts
            label: Hosts line
            widget: string
            hint: Appears as "with …" under the show name.
          - name: tagline
            label: Tagline
            widget: string
          - name: blurb
            label: Show description
            widget: text
          - name: email
            label: Contact email
            widget: string
          - name: substack
            label: Substack address
            widget: string
          - name: listen
            label: Listen buttons
            widget: list
            summary: "{{fields.label}}"
            fields:
              - name: label
                label: Name
                widget: string
              - name: short
                label: Short name (small screens)
                widget: string
                required: false
              - name: icon
                label: Icon
                widget: select
                options: &a4
                  - apple
                  - spotify
                  - rss
                  - substack
                  - instagram
                  - tiktok
                  - youtube
                  - mail
                default: rss
              - name: url
                label: Link address
                widget: string
          - name: social
            label: Social links
            widget: list
            summary: "{{fields.label}}"
            fields:
              - name: label
                label: Name
                widget: string
              - name: icon
                label: Icon
                widget: select
                options: *a4
                default: rss
              - name: url
                label: Link address
                widget: string
          - name: credits
            label: Footer credits
            widget: markdown
            buttons: *a1
            editor_components: *a2
            modes: *a3
            required: false
          - name: feedUrl
            label: Podcast feed address (leave as is)
            widget: string
            hint: Where episodes come from. Only change this if your podcast host changes.
          - name: youtubeChannelId
            label: YouTube channel ID (leave as is)
            widget: string
            required: false
  - name: episodes
    label: Episode corrections
    label_singular: Episode correction
    description: "Episodes appear on the site by themselves, from your podcast feed, the morning after they are published. Use this only when the site gets an episode wrong: missing guests, the wrong title, a video it did not find, or a video that should not be there. Fill in just what needs fixing; anything left empty stays as the feed has it. Deleting a correction puts the episode back the way the feed has it."
    folder: content/episodes
    extension: json
    format: json
    create: true
    delete: true
    identifier_field: episode
    slug: "{{episode}}"
    summary: "{{episode}}"
    fields:
      - name: episode
        label: Which episode?
        widget: select
        options: *a5
      - name: title
        label: Title
        widget: string
        required: false
        hint: The film or topic, without the year. Leave empty to keep the feed title.
      - name: guests
        label: Guests
        widget: list
        required: false
        hint: Every guest, one per line. Guests show on the episode and are found by the search.
        field:
          name: name
          label: Guest
          widget: string
      - name: year
        label: Film year
        widget: string
        required: false
      - name: kind
        label: Category
        widget: select
        required: false
        options:
          - label: Movie episode
            value: movie
          - label: Bonus
            value: bonus
          - label: Deep dive
            value: deep-dive
      - name: number
        label: Movie number
        widget: string
        required: false
        hint: Shown as "Mov 58" on the episode.
      - name: youtube
        label: YouTube link
        widget: string
        required: false
        hint: Paste the video address if the episode has a video and the site did not find it.
      - name: noVideo
        label: No video
        widget: boolean
        required: false
        default: false
        hint: Switch on to take off a video the site found by itself on your YouTube channel. A link pasted in "YouTube link" above still shows.
