Skip to content

[Website] Add a videos section - #10645

Merged
PascalSenn merged 3 commits into
mainfrom
ps/website-videos
Oct 20, 2026
Merged

PascalSenn merged 3 commits into
mainfrom
ps/website-videos

Conversation

@PascalSenn

@PascalSenn PascalSenn commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds a public /videos section that replaces ChilliCream TV. There is no backend and no sign-in: each episode is a Markdown file under website/content/videos/, and its example source is a link to a git repository.

  • Index page: a hero with a YouTube-style player window (the latest episode, with "Up next" beside it), followed by the episode catalog with search and facets for topic, year, presenter, and source code.
  • Episode pages: the YouTube player, presenter, "Example source" and "Watch on YouTube" buttons, the episode description, and a "More videos" sidebar.
  • Content: all 9 episodes from the ChilliCream TV YouTube channel, with descriptions taken from YouTube.
  • Player: episode pages load the YouTube player (youtube-nocookie.com) without a click once the visitor has given Cookiebot marketing consent; Cookiebot shows crawlers a full-consent view, so Google sees a real player. Without consent, the click-to-play poster stays, as on blog posts. The first click into an autoloaded player sends video_start.
  • Wiring: a Videos link in the navigation, sitemap entries, structured data (VideoObject with duration, ItemList), a share image for /videos, Open Graph player tags, the llms.txt export, git metadata, self-hosted posters, and Markdown link rewriting for content/videos/.
  • Components: builds on PageSection, SectionHeading, Card, Eyebrow, TagList, the buttons, and MockWindowChrome. Adds an amber color to Eyebrow, and extracts YouTubePlayButton and YouTubePoster from VideoFacade and YouTubeVideo.
  • Docs: website/README.md explains how to add a video. cspell.json skips the youtubeId field.

Notes

  • The "Example source" links for the 7 Hot Chocolate episodes point to ChilliCream/platform-examples (examples/HotChocolate/...). They return 404 until the examples are merged there.
  • The Fusion episode links to ChilliCream/fusion-demo-recommendations, which is already public. The second-level cache episode has no example source.

Testing

  • npm run build, including the llms validation, plus tsc, eslint, and npm run format:check.
  • cspell on website/content/videos.
  • Checked the index and episode pages on the dev server, including the player with and without simulated consent.
  • After deploy: use URL Inspection in Search Console to confirm that the rendered HTML of an episode page contains the player iframe.

Replaces ChilliCream TV with a public /videos section. Each episode is a
Markdown file under website/content/videos/, and its example source links
to a git repository.
Copilot AI balanced review requested due to automatic review settings October 20, 2026 13:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Release needs human confirmation that the seven example-source links documented as unavailable are accessible.

No open issues 🎉

What changed in this PR

Adds a public, Markdown-backed /videos section for ChilliCream TV, integrated with the website’s existing components and content pipelines.

Changes:

  • Adds a searchable episode catalog, watch pages, and nine episodes.
  • Extracts reusable YouTube poster and play-button components.
  • Integrates navigation, structured data, sitemaps, image optimization, and LLM exports.
File Description
website/​src/​remark/​rewriteMdLinks.mjs Supports video content links.
website/​src/​image-optimization/​remote.mjs Collects frontmatter YouTube thumbnails.
website/​src/​icons/​Video.tsx Adds navigation video icon.
website/​src/​icons/​PlayGlyph.tsx Adds shared play glyph.
website/​src/​icons/​ArrowLeft.tsx Adds back-navigation icon.
website/​src/​helpers/​videoStructuredData.ts Generates video structured data.
website/​src/​helpers/​videos.ts Loads, validates, and organizes episodes.
website/​src/​design-system/​Eyebrow.tsx Adds amber color option.
website/​src/​design-system/​Eyebrow.stories.tsx Demonstrates amber styling.
website/​src/​components/​YouTubeVideo.tsx Uses shared poster component.
website/​src/​components/​YouTubePoster.tsx Renders optimized video posters.
website/​src/​components/​YouTubePlayButton.tsx Extracts shared play overlay.
website/​src/​components/​videos/​VideoStage.tsx Displays featured and upcoming episodes.
website/​src/​components/​videos/​VideosHero.tsx Adds catalog introduction and feature area.
website/​src/​components/​videos/​VideoPoster.tsx Adds episode poster styling.
website/​src/​components/​videos/​VideoCatalog.tsx Implements search and facet filtering.
website/​src/​components/​videos/​VideoCard.tsx Renders episode cards.
website/​src/​components/​videos/​VideoByline.tsx Displays presenter and publication date.
website/​src/​components/​videos/​MoreVideos.tsx Displays related episodes.
website/​src/​components/​VideoFacade.tsx Reuses extracted play overlay.
website/​src/​components/​header/​navData.tsx Adds Videos navigation link.
website/​scripts/​validate-structured-data.mjs Includes video LLM exports in validation.
website/​scripts/​generate-llms-files.mjs Generates video catalogs and context exports.
website/​scripts/​generate-git-metadata.mjs Tracks video content metadata.
website/​README.md Documents episode authoring.
website/​content/​videos/​2026-08-12-fusion-local-development.md Adds Fusion development episode.
website/​content/​videos/​2025-05-01-stateful-dataloader.md Adds stateful DataLoader episode.
website/​content/​videos/​2025-04-09-dataloader-second-level-cache.md Adds second-level caching episode.
website/​content/​videos/​2025-04-01-ef-core-projections.md Adds EF Core projections episode.
website/​content/​videos/​2025-03-24-connection-aggregations.md Adds connection aggregations episode.
website/​content/​videos/​2025-03-17-relative-cursors.md Adds relative cursors episode.
website/​content/​videos/​2025-03-05-dataloader-in-layered-architecture.md Adds layered DataLoader episode.
website/​content/​videos/​2025-02-27-greendonut-in-action.md Adds GreenDonut.Data episode.
website/​content/​videos/​2025-02-19-dataloader-explained.md Adds DataLoader introduction episode.
website/​app/​videos/​page.tsx Adds video catalog route.
website/​app/​videos/​[slug]/​page.tsx Adds static episode pages and metadata.
website/​app/​sitemap.ts Includes video routes.
website/​app/​globals.css Defines amber accent token.
website/​AGENTS.md Links video authoring guidance.

Review effort: Balanced

Adds the video duration to the structured data, a share image for /videos,
and Open Graph player details. Episode pages load the YouTube player without a
click once the visitor has given marketing consent. YouTube ids are excluded
from the spellcheck.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants