From ea7fc1c8dd0196e96fb9013ac0b3a3d6f112016d Mon Sep 17 00:00:00 2001 From: kodster28 Date: Mon, 18 May 2026 15:18:54 -0500 Subject: [PATCH 1/3] [Chore] Remove outdated file --- .agents/references/components.md | 208 ++++++------ .agents/references/style-guide.md | 216 ++++++------- astro.config.ts | 1 - src/components/ExternalResources.astro | 2 +- src/components/YouTubeVideos.astro | 37 --- src/components/index.ts | 1 - src/content.config.ts | 5 - .../docs/ai-gateway/tutorials/index.mdx | 8 +- src/content/docs/d1/tutorials/index.mdx | 8 +- src/content/docs/kv/tutorials/index.mdx | 8 +- src/content/docs/pages/tutorials/index.mdx | 9 +- src/content/docs/queues/tutorials/index.mdx | 9 +- src/content/docs/r2/tutorials/index.mdx | 12 +- .../components/external-resources.mdx | 10 +- .../style-guide/components/youtube-videos.mdx | 26 -- .../docs/vectorize/tutorials/index.mdx | 8 +- .../workers-ai/guides/tutorials/index.mdx | 10 +- src/content/docs/workers/tutorials/index.mdx | 8 +- src/content/videos/index.yaml | 296 ------------------ src/schemas/index.ts | 1 - src/schemas/videos.ts | 18 -- 21 files changed, 241 insertions(+), 660 deletions(-) delete mode 100644 src/components/YouTubeVideos.astro delete mode 100644 src/content/docs/style-guide/components/youtube-videos.mdx delete mode 100644 src/content/videos/index.yaml delete mode 100644 src/schemas/videos.ts diff --git a/.agents/references/components.md b/.agents/references/components.md index 2e42390e5b344e9..aa675e44c0cd462 100644 --- a/.agents/references/components.md +++ b/.agents/references/components.md @@ -14,6 +14,7 @@ import { Render } from "~/components"; + ``` @@ -34,7 +35,7 @@ Inside the partial, params are referenced as JS expressions: `{props.product}`. Renders a TypeScript code block and auto-generates a JavaScript tab using `ts-blank-space`. **Required for all Workers JS/TS examples** — do not use bare `ts`/`js` fences. -```mdx +````mdx import { TypeScriptExample } from "~/components"; @@ -44,11 +45,13 @@ export default { return new Response("Hello World"); } } satisfies ExportedHandler; -``` +```` + ``` Props: + - `filename` — optional, must end in `.ts`. The JS tab shows the `.js` equivalent. - `playground` — boolean. Adds "Run Worker in Playground" button to the JS tab. - `code` — object. Expressive Code options (e.g. `collapse: "1-2"`). Apply to both tabs. @@ -61,7 +64,7 @@ Note: Expressive Code fence options (`collapse={1-2}`, etc.) cannot be set on th Renders Wrangler config with synced TOML and JSON tabs, auto-converting between formats. **Required for all Wrangler configuration examples** — do not use bare `toml`/`jsonc` fences. -```mdx +````mdx import { WranglerConfig } from "~/components"; @@ -74,7 +77,8 @@ compatibility_date = "$today" binding = "DB" database_name = "prod-d1-tutorial" database_id = "" -``` +```` + ``` @@ -93,9 +97,11 @@ Shows a command across npm, yarn, and pnpm in synced tabs. **Required for packag import { PackageManagers } from "~/components"; + + ``` @@ -109,13 +115,14 @@ For showing different ways to accomplish the same thing. Use when there are mutu import { Tabs, TabItem } from "~/components"; - Dashboard instructions - API instructions - Terraform instructions + Dashboard instructions + API instructions + Terraform instructions ``` Standard `syncKey` values (sync tab selection across the page): + - `dashPlusAPI` — Dashboard / API / Terraform - `workersExamples` — JavaScript / TypeScript / Python / Rust @@ -146,13 +153,12 @@ Collapsible section. Use for supplementary content that would clutter the main f ```mdx import { Details } from "~/components"; -
- Content shown when expanded. -
+
Content shown when expanded.
+
- Content visible without interaction. + Content visible without interaction.
``` @@ -177,6 +183,7 @@ import { Plan } from "~/components"; + ``` @@ -192,10 +199,16 @@ import { GlossaryTooltip } from "~/components"; active zone -active zone + + + active zone + -active zone + + + active zone + ``` Props: `term` (required, matches a YAML entry key), `prepend` (optional text prepended to the definition), `link` (optional, wraps the inner text in a link). @@ -278,6 +291,7 @@ import { DashButton } from "~/components"; + ``` @@ -293,25 +307,28 @@ Fetches and displays a file from a Cloudflare GitHub repository. Use a full 40-c import { GitHubCode } from "~/components"; + + + ``` @@ -364,19 +381,21 @@ Starlight built-ins for styled card containers. Used on overview and navigation import { Card, LinkTitleCard, ListCard } from "~/components"; + - Interesting content you want to highlight. + Interesting content you want to highlight. + - Deploy your first Worker in minutes. + Deploy your first Worker in minutes. + -- [Docs](/workers/) -- [API reference](/api/) + - [Docs](/workers/) - [API reference](/api/) ``` @@ -402,13 +421,15 @@ Embeds a Cloudflare Stream video. Use `id` + `title` for a specific video, or `f import { Stream } from "~/components"; + + ``` @@ -424,24 +445,27 @@ Generates a formatted `curl` command from the Cloudflare OpenAPI schema. Use for import { APIRequest } from "~/components"; + + + ``` @@ -457,10 +481,10 @@ Generates a `curl` command for arbitrary (non-Cloudflare-API) URLs. Use when `AP import { CURL } from "~/components"; ``` @@ -479,7 +503,11 @@ import { WranglerCommand } from "~/components"; - + + ``` Use `ExtraFlagDetails` as a child to add or replace help text for specific flags: @@ -488,12 +516,12 @@ Use `ExtraFlagDetails` as a child to add or replace help text for specific flags import { WranglerCommand, ExtraFlagDetails } from "~/components"; - - Additional detail appended to the flag's help text. - - - Custom text that replaces the flag's help text entirely. - + + Additional detail appended to the flag's help text. + + + Custom text that replaces the flag's help text entirely. + ``` @@ -511,6 +539,7 @@ import { Markdown } from "~/components"; + ``` @@ -523,7 +552,7 @@ Limitations: no MDX features, no Astro image optimization, no syntax highlightin Creates a heading with a custom anchor ID — useful when writing headings inside components or non-Markdown files. In regular MDX, headings get anchors automatically via rehype plugins, so this is rarely needed. To override a heading ID in MDX, use an inline comment instead: ```mdx -## My heading {/*custom-anchor*/} +## My heading {/* custom-anchor */} ``` When you do need the component: @@ -531,7 +560,11 @@ When you do need the component: ```mdx import { AnchorHeading } from "~/components"; - + ``` Props: `title` (required, heading text), `slug` (required, custom anchor ID), `depth` (heading level, e.g. `2` for H2). @@ -546,8 +579,12 @@ Renders a styled link button. Useful for primary CTAs on overview and get-starte import { LinkButton } from "~/components"; Get started -More information -Other stuff + + More information + + + Other stuff + ``` Variants: `primary` (default), `secondary`, `minimal`. @@ -562,14 +599,14 @@ Starlight built-in. Renders a card with a title, description, and link. Use `Car import { LinkCard, CardGrid } from "~/components"; - - + + ``` @@ -582,12 +619,7 @@ Starlight built-in. Displays a file and directory tree. Use bold to highlight th ```mdx import { FileTree } from "~/components"; - -- src/ - - index.ts - - **worker.ts** -- wrangler.toml - +- src/ - index.ts - **worker.ts** - wrangler.toml ``` --- @@ -599,9 +631,7 @@ Renders a short description block directly below the page title. Prefer the `sum ```mdx import { Description } from "~/components"; - - A short description rendered below the page title. - +A short description rendered below the page title. ``` --- @@ -614,7 +644,7 @@ Renders a feature card with a name and link. Used on product overview pages to l import { Feature } from "~/components"; - Coordinate state and logic across Workers with strongly consistent storage. + Coordinate state and logic across Workers with strongly consistent storage. ``` @@ -630,7 +660,7 @@ Renders a related product card with an icon, name, and link. Used on overview pa import { RelatedProduct } from "~/components"; - Store large amounts of unstructured data without egress fees. + Store large amounts of unstructured data without egress fees. ``` @@ -713,16 +743,15 @@ To add or update stats, edit `src/components/PublicStats.astro`. ## ExternalResources -Pulls demo apps or videos from the central `src/content/apps/index.yaml` and `src/content/videos/index.yaml` collections, filtered by tags and products. +Pulls demo apps from the central `src/content/apps/index.yaml` collection, filtered by tags and products. ```mdx import { ExternalResources } from "~/components"; - ``` -Props: `type` (required, `"apps"` or `"videos"`), `tags` (string array, filter by tag), `products` (string array, filter by product), `cloudflareOnly` (boolean, default `true`). +Props: `type` (required, `"apps"`), `tags` (string array, filter by tag), `products` (string array, filter by product), `cloudflareOnly` (boolean, default `true`). --- @@ -734,9 +763,9 @@ Displays a filterable list of docs pages pulled by `pcx_content_type`, `tags`, a import { ResourcesBySelector } from "~/components"; ``` @@ -807,7 +836,11 @@ import SubtractIPCalculator from "~/components/SubtractIPCalculator.tsx"; - + + ``` Note: imports directly from the `.tsx` file path, not from `~/components`. @@ -823,27 +856,15 @@ import { Width } from "~/components"; 75% of container width 50% of container width -25%, centered + + 25%, centered + ``` Props: `size` (required, `"large"` | `"medium"` | `"small"`), `center` (boolean). --- -## YouTubeVideos - -Renders a grid of YouTube videos associated with one or more products, sourced from `src/content/videos/index.yaml`. - -```mdx -import { YouTubeVideos } from "~/components"; - - -``` - -Props: `products` (string array — if omitted, uses the current page's product). - ---- - ## AvailableNotifications Lists available notification types for a product, sourced from `src/content/notifications/index.yaml`. @@ -852,7 +873,10 @@ Lists available notification types for a product, sourced from `src/content/noti import { AvailableNotifications } from "~/components"; - + ``` Props: `product` (required, product name or slug), `notificationFilter` (optional, filter to a specific notification type by name). diff --git a/.agents/references/style-guide.md b/.agents/references/style-guide.md index ab12eb351deb394..1032befa929c3e7 100644 --- a/.agents/references/style-guide.md +++ b/.agents/references/style-guide.md @@ -8,10 +8,10 @@ Prescriptive rules for writing and reviewing content in this repository. Distill These characters have special meaning in MDX and **will break the build** if used unescaped in prose, tables, or headings: -| Character | Problem | Fix | -| --------- | ------- | --- | -| `{` `}` | Interpreted as JS expressions | Wrap in backticks or use `\{` `\}` | -| `<` `>` | Interpreted as JSX elements | Use `<` `>` or wrap in backticks | +| Character | Problem | Fix | +| --------- | ----------------------------- | -------------------------------------- | +| `{` `}` | Interpreted as JS expressions | Wrap in backticks or use `\{` `\}` | +| `<` `>` | Interpreted as JSX elements | Use `<` `>` or wrap in backticks | Component imports must appear after the frontmatter block. A used-but-not-imported component is a silent build failure. @@ -21,31 +21,31 @@ Component imports must appear after the frontmatter block. A used-but-not-import ### Required fields -| Field | Rule | -| ----- | ---- | -| `title` | Required. Plain text. | -| `pcx_content_type` | Required. Must be one of the valid values below. | -| `description` | Required for all pages with `pcx_content_type`. 1–2 self-contained sentences, 50–160 characters. | +| Field | Rule | +| ------------------ | ------------------------------------------------------------------------------------------------ | +| `title` | Required. Plain text. | +| `pcx_content_type` | Required. Must be one of the valid values below. | +| `description` | Required for all pages with `pcx_content_type`. 1–2 self-contained sentences, 50–160 characters. | Valid `pcx_content_type` values: `changelog`, `concept`, `configuration`, `design-guide`, `example`, `faq`, `get-started`, `how-to`, `integration-guide`, `implementation-guide`, `learning-unit`, `navigation`, `overview`, `reference`, `reference-architecture`, `reference-architecture-diagram`, `release-notes`, `solution-guide`, `troubleshooting`, `tutorial`, `video`. ### Optional fields -| Field | Type | Description | -| ----- | ---- | ----------- | -| `sidebar.order` | number | Sort order in the left nav. Lower = higher. | -| `sidebar.label` | string | Override the nav label (defaults to `title`). | -| `sidebar.hidden` | boolean | Hide from nav but keep the page accessible. | -| `products` | array | Related directory entries by filename from `src/content/directory/`. | -| `tags` | array | Related keywords. Validated against allowlist in `src/schemas/tags.ts` — invalid tags fail the build. | -| `difficulty` | string | For tutorials: `Beginner`, `Intermediate`, or `Advanced`. Shown in tutorial listings. | -| `reviewed` | string | `YYYY-MM-DD` of last explicit end-to-end review. | -| `summary` | string | Short description rendered below the page title on the page itself. | -| `noindex` | boolean | Adds `noindex` to the page — use for deprecated/legacy content. | -| `chatbot_deprioritize` | boolean | De-prioritizes the page in Support AI responses. Companion to `noindex`. | -| `canonical` | string | Override the `` URL. | -| `hideChildren` | boolean | Collapses this nav group to a single link to the index page. | -| `feedback` | boolean | Show/hide the feedback prompt. Defaults to `true`. | +| Field | Type | Description | +| ---------------------- | ------- | ----------------------------------------------------------------------------------------------------- | +| `sidebar.order` | number | Sort order in the left nav. Lower = higher. | +| `sidebar.label` | string | Override the nav label (defaults to `title`). | +| `sidebar.hidden` | boolean | Hide from nav but keep the page accessible. | +| `products` | array | Related directory entries by filename from `src/content/directory/`. | +| `tags` | array | Related keywords. Validated against allowlist in `src/schemas/tags.ts` — invalid tags fail the build. | +| `difficulty` | string | For tutorials: `Beginner`, `Intermediate`, or `Advanced`. Shown in tutorial listings. | +| `reviewed` | string | `YYYY-MM-DD` of last explicit end-to-end review. | +| `summary` | string | Short description rendered below the page title on the page itself. | +| `noindex` | boolean | Adds `noindex` to the page — use for deprecated/legacy content. | +| `chatbot_deprioritize` | boolean | De-prioritizes the page in Support AI responses. Companion to `noindex`. | +| `canonical` | string | Override the `` URL. | +| `hideChildren` | boolean | Collapses this nav group to a single link to the index page. | +| `feedback` | boolean | Show/hide the feedback prompt. Defaults to `true`. | Example: @@ -93,15 +93,15 @@ Do not use Internet slang: no `tl;dr`, `IMO`, `FYI`. ### Jargon to avoid -| Instead of | Use | -| ---------- | --- | -| whitelist / blacklist | allowlist / blocklist | -| master / slave | primary / replica (or context-specific terms) | -| man-in-the-middle attack | on-path attack | -| sanity check | validate / smoke test | -| enable / disable (toggle) | turn on / turn off | -| out-of-the-box | default | -| on-prem | on-premises | +| Instead of | Use | +| ------------------------- | --------------------------------------------- | +| whitelist / blacklist | allowlist / blocklist | +| master / slave | primary / replica (or context-specific terms) | +| man-in-the-middle attack | on-path attack | +| sanity check | validate / smoke test | +| enable / disable (toggle) | turn on / turn off | +| out-of-the-box | default | +| on-prem | on-premises | ### Inclusive language @@ -111,23 +111,23 @@ Do not use racist, gendered, or ableist terminology. Use gender-neutral pronouns ## Terminology and UI interactions -| Use | Not | -| --- | --- | -| select | click | -| go to | navigate to | +| Use | Not | +| ------------------ | ---------------- | +| select | click | +| go to | navigate to | | turn on / turn off | enable / disable | -| refer to | see | +| refer to | see | --- ## Text formatting -| Element | Convention | -| ------- | ---------- | -| Clickable UI elements, menu items, button labels | **Bold**: select **Save**, go to **DNS** > **Records** | -| Code, paths, IPs, ports, HTTP verbs, status codes, filenames, config keys | `monospace` | -| Dropdown options the user selects *from* | *Italics* | -| Nested menu separators | **Bold** the words, plain `>` symbol: **Options** > **Settings** | +| Element | Convention | +| ------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| Clickable UI elements, menu items, button labels | **Bold**: select **Save**, go to **DNS** > **Records** | +| Code, paths, IPs, ports, HTTP verbs, status codes, filenames, config keys | `monospace` | +| Dropdown options the user selects _from_ | _Italics_ | +| Nested menu separators | **Bold** the words, plain `>` symbol: **Options** > **Settings** | Things that get monospace: IP addresses and ranges, port numbers, API commands (`GET`, `POST`), terminal commands (`wrangler login`), file paths, filenames and extensions (`wrangler.toml`), config keys, data types (`string`, `int64`), environment variable names, HTTP headers (`Content-Length`), HTTP status codes (`400`, `200`), URLs used as input/output, DNS record types (`AAAA`). @@ -146,15 +146,15 @@ Do not use italics for toggle states — "enabled" and "disabled" should not be Common terms: -| Correct | Incorrect | -| ------- | --------- | -| DDoS | DDOS, ddos | -| SSL | ssl | -| TLS | tls | -| WAF | waf | -| CAPTCHA | Captcha, captcha | -| Zero Trust | zero trust | -| Internet | internet | +| Correct | Incorrect | +| ---------- | ---------------- | +| DDoS | DDOS, ddos | +| SSL | ssl | +| TLS | tls | +| WAF | waf | +| CAPTCHA | Captcha, captcha | +| Zero Trust | zero trust | +| Internet | internet | --- @@ -167,6 +167,7 @@ Common terms: - Descriptive link text — never "here", "this page", "read more", "click here" Standard phrasing: + - `For more information, refer to [Page Title](/path/).` - `To , refer to [Section Title](/path/).` @@ -191,11 +192,13 @@ Do not use: "Learn more about...", "To read more...", "refer the [Page] page/doc Use numbered lists for **procedures** (sequential steps). Use bullet points for **facts, data, or options** (unordered). Do not use bullet points for: + - Processes or steps (use a numbered list) - Fewer than three items (write a sentence instead) - Items longer than three lines each (break into subsections) Bullet point rules: + - All items in a list must be parallel (same grammatical form). - Do not punctuate bullets unless each item is a full sentence. - Aim for 3–6 items; the "six-pack rule" — no more than six bullets, each six words or fewer, is a good default. @@ -282,59 +285,59 @@ Package install commands must use `PackageManagers`. All components are imported from `~/components`. Imports must appear after the frontmatter block. **Mandatory component usage** — do not use bare fences for these: + - Workers JS/TS examples → `TypeScriptExample` - Wrangler config → `WranglerConfig` (TOML input, use `$today` for `compatibility_date`) - Package install/exec commands → `PackageManagers` - Multi-step procedures → `Steps` - Dashboard navigation steps → `DashButton` (not bare links) -| Component | Purpose | -| --------- | ------- | -| `Render` | Embed a reusable partial from `src/content/partials/{product}/{file}.mdx` | -| `TypeScriptExample` | Workers TS example with auto-generated JS tab | -| `WranglerConfig` | Wrangler config in synced TOML + JSON tabs | -| `PackageManagers` | Package install/exec command across npm, yarn, pnpm | -| `WranglerCommand` | Auto-generated full Wrangler command reference | -| `WranglerNamespace` | Auto-generated Wrangler namespace command listing | -| `Tabs` / `TabItem` | Switchable tabs (`syncKey="dashPlusAPI"` or `"workersExamples"`) | -| `Steps` | Visual numbered procedure wrapper | -| `Details` | Collapsible section for supplementary content | -| `FileTree` | File and directory tree display | -| `Width` | Constrain content to `"large"` (75%), `"medium"` (50%), or `"small"` (25%) width | -| `Plan` | Plan availability badge (`type="all"`, `"paid"`, `"pro"`, `"business"`, `"add-on"`) | -| `FeatureTable` | Feature availability by plan from `src/content/plans/` (dot-notation `id`) | -| `ProductFeatures` | Full feature list for a product from `src/content/plans/` | -| `ProductChangelog` | Inline changelog entries for a product or area | -| `ProductAvailabilityText` | Inline lifecycle status (Beta, Alpha) — renders nothing for GA | -| `Feature` | Feature card for product overview pages | -| `RelatedProduct` | Related product card with icon for overview pages | -| `GlossaryTooltip` | Hover tooltip from `src/content/glossary/` | -| `GlossaryDefinition` | Inline glossary definition | -| `Glossary` | Full product glossary table | -| `InlineBadge` | Inline status badge — **avoid**, prefer `Badge` in headings or sidebar frontmatter | -| `Badge` | Coloured status badge (`Beta`, `New`, `Deprecated`) for headings and sidebar | -| `LinkButton` | Styled link button (`variant="primary"`, `"secondary"`, `"minimal"`) | -| `Card` / `LinkTitleCard` / `ListCard` | Styled card containers for overview and navigation pages | -| `LinkCard` / `CardGrid` | Starlight link cards, optionally in a grid | -| `DashButton` | Button linking to a validated dashboard deeplink | -| `GitHubCode` | Fetch and display a file from a Cloudflare GitHub repo (use full commit hash) | -| `DirectoryListing` | Auto-generated child page listing for nav/overview pages | -| `ListTutorials` | Auto-generated tutorial table for the current product | -| `ResourcesBySelector` | Filterable list of pages by `pcx_content_type`, tags, or products | -| `ExternalResources` | Demo apps or videos from central YAML collections, filtered by tags/products | -| `PublicStats` | Inline live statistic (data centers, bandwidth, etc.) | -| `YouTube` | Embed a YouTube video by ID | -| `YouTubeVideos` | Grid of YouTube videos for a product from `src/content/videos/` | -| `Stream` | Embed a Cloudflare Stream video by ID or collection file | -| `APIRequest` | Generate a `curl` command from the Cloudflare OpenAPI schema | -| `CURL` | Generate a `curl` command for arbitrary URLs | -| `PagesBuildPreset` | Pages framework build preset details | -| `RuleID` | Copyable rule ID (WAF / security rules) | -| `SubtractIPCalculator` | Interactive IP range subtraction calculator | -| `AvailableNotifications` | List available notification types for a product | -| `AnchorHeading` | Heading with custom anchor ID — for use inside components/non-MDX files | -| `Description` | Description block rendered below the page title | -| `Markdown` | Render a Markdown string inside JSX — primarily for formatted partial variables | +| Component | Purpose | +| ------------------------------------- | ----------------------------------------------------------------------------------- | +| `Render` | Embed a reusable partial from `src/content/partials/{product}/{file}.mdx` | +| `TypeScriptExample` | Workers TS example with auto-generated JS tab | +| `WranglerConfig` | Wrangler config in synced TOML + JSON tabs | +| `PackageManagers` | Package install/exec command across npm, yarn, pnpm | +| `WranglerCommand` | Auto-generated full Wrangler command reference | +| `WranglerNamespace` | Auto-generated Wrangler namespace command listing | +| `Tabs` / `TabItem` | Switchable tabs (`syncKey="dashPlusAPI"` or `"workersExamples"`) | +| `Steps` | Visual numbered procedure wrapper | +| `Details` | Collapsible section for supplementary content | +| `FileTree` | File and directory tree display | +| `Width` | Constrain content to `"large"` (75%), `"medium"` (50%), or `"small"` (25%) width | +| `Plan` | Plan availability badge (`type="all"`, `"paid"`, `"pro"`, `"business"`, `"add-on"`) | +| `FeatureTable` | Feature availability by plan from `src/content/plans/` (dot-notation `id`) | +| `ProductFeatures` | Full feature list for a product from `src/content/plans/` | +| `ProductChangelog` | Inline changelog entries for a product or area | +| `ProductAvailabilityText` | Inline lifecycle status (Beta, Alpha) — renders nothing for GA | +| `Feature` | Feature card for product overview pages | +| `RelatedProduct` | Related product card with icon for overview pages | +| `GlossaryTooltip` | Hover tooltip from `src/content/glossary/` | +| `GlossaryDefinition` | Inline glossary definition | +| `Glossary` | Full product glossary table | +| `InlineBadge` | Inline status badge — **avoid**, prefer `Badge` in headings or sidebar frontmatter | +| `Badge` | Coloured status badge (`Beta`, `New`, `Deprecated`) for headings and sidebar | +| `LinkButton` | Styled link button (`variant="primary"`, `"secondary"`, `"minimal"`) | +| `Card` / `LinkTitleCard` / `ListCard` | Styled card containers for overview and navigation pages | +| `LinkCard` / `CardGrid` | Starlight link cards, optionally in a grid | +| `DashButton` | Button linking to a validated dashboard deeplink | +| `GitHubCode` | Fetch and display a file from a Cloudflare GitHub repo (use full commit hash) | +| `DirectoryListing` | Auto-generated child page listing for nav/overview pages | +| `ListTutorials` | Auto-generated tutorial table for the current product | +| `ResourcesBySelector` | Filterable list of pages by `pcx_content_type`, tags, or products | +| `ExternalResources` | Demo apps from central YAML collection, filtered by tags/products | +| `PublicStats` | Inline live statistic (data centers, bandwidth, etc.) | +| `YouTube` | Embed a YouTube video by ID | +| `Stream` | Embed a Cloudflare Stream video by ID or collection file | +| `APIRequest` | Generate a `curl` command from the Cloudflare OpenAPI schema | +| `CURL` | Generate a `curl` command for arbitrary URLs | +| `PagesBuildPreset` | Pages framework build preset details | +| `RuleID` | Copyable rule ID (WAF / security rules) | +| `SubtractIPCalculator` | Interactive IP range subtraction calculator | +| `AvailableNotifications` | List available notification types for a product | +| `AnchorHeading` | Heading with custom anchor ID — for use inside components/non-MDX files | +| `Description` | Description block rendered below the page title | +| `Markdown` | Render a Markdown string inside JSX — primarily for formatted partial variables | For full props, examples, and edge cases, see `.agents/references/components.md`. @@ -357,6 +360,7 @@ For best practices or opinionated recommendations outside the main content. Defa ``` Usage rules: + - Use `note` for supplementary info that cannot be integrated into prose. - Use `caution` for actions that could break functionality or impact security. - Use `tip` for best practices and opinionated recommendations. @@ -395,6 +399,7 @@ Use screenshots sparingly — they have a high maintenance cost because UI chang Exception: use screenshots freely in changelog entries (accepted as point-in-time references). Guidelines: + - Maintain original aspect ratio. - Width 500–600 px, resolution 72 dpi. - Do not include sensitive information (redact if needed). @@ -406,6 +411,7 @@ Guidelines: ``` Alt text rules: + - Describe what the image shows and why it matters (under ~150 characters). - Do not start with "Image of" or "Screenshot of". - For purely decorative images, use empty alt text: `![]()`. @@ -430,11 +436,11 @@ In diagrams: do not use color as the only way to distinguish elements — also u Use these reserved values in examples — they are safe and will not resolve to live origins: -| Type | Values | -| ---- | ------ | -| Domains | `example.com`, `example.org`, `myappexample.com` | -| IPv4 ranges | `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` | -| URL placeholders | ``, ``, `` | +| Type | Values | +| ------------------- | ---------------------------------------------------- | +| Domains | `example.com`, `example.org`, `myappexample.com` | +| IPv4 ranges | `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` | +| URL placeholders | ``, ``, `` | | API shell variables | `$ZONE_ID`, `$CLOUDFLARE_API_TOKEN` (in curl blocks) | Use angle brackets with `ALL_CAPS_UNDERSCORES` for variable placeholders in non-API contexts. In API examples (curl blocks, `APIRequest` component), use `$VARIABLE_NAME` shell variable format. diff --git a/astro.config.ts b/astro.config.ts index 424375c6a4a8b80..fbbcf3918a36c78 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -197,7 +197,6 @@ export default defineConfig({ "/workers-ai/models/**", "/markdown.zip", "/style-guide/index.md", - "/videos/**", "/agent-setup/", ], }), diff --git a/src/components/ExternalResources.astro b/src/components/ExternalResources.astro index f8a7e0ef0af5bf0..da8596a288a63c0 100644 --- a/src/components/ExternalResources.astro +++ b/src/components/ExternalResources.astro @@ -8,7 +8,7 @@ import rehypeExternalLinks from "~/plugins/rehype/external-links"; type Props = z.infer; const props = z.object({ - type: z.enum(["apps", "videos"]), + type: z.enum(["apps"]), tags: z.string().array().optional(), products: z.string().array().optional(), cloudflareOnly: z.boolean().default(true), diff --git a/src/components/YouTubeVideos.astro b/src/components/YouTubeVideos.astro deleted file mode 100644 index af455a9261a5a3d..000000000000000 --- a/src/components/YouTubeVideos.astro +++ /dev/null @@ -1,37 +0,0 @@ ---- -import { z } from "astro/zod"; -import { getCollection } from "astro:content"; -import { ShowcaseYouTube } from "starlight-showcases"; - -const props = z.object({ - products: z.string().array().default([]), -}); - -const { products } = props.parse(Astro.props); - -if (products.length === 0) { - const [currentSection] = Astro.url.pathname.split("/").filter(Boolean); - products.push(currentSection); -} - -let videos = await getCollection("videos", (entry) => { - return ( - entry.data.link.includes("youtu") && - entry.data.products?.some((v: string) => - products.some((p) => v.trim().toLowerCase() === p.trim().toLowerCase()), - ) - ); -}); - -videos = videos.sort( - (a, b) => - new Date(b.data.updated).getTime() - new Date(a.data.updated).getTime(), -); -const entries = videos.map((video) => ({ - href: video.data.link, - title: video.data.id, - description: video.data.description, -})); ---- - - diff --git a/src/components/index.ts b/src/components/index.ts index f99215e898a3558..b7db90400f97795 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -71,7 +71,6 @@ export { default as WorkersArchitectureDiagram } from "./WorkersArchitectureDiag export { default as WorkersIsolateDiagram } from "./WorkersIsolateDiagram.astro"; export { default as WorkersTemplates } from "./WorkersTemplates.astro"; export { default as YouTube } from "./YouTube.astro"; -export { default as YouTubeVideos } from "./YouTubeVideos.astro"; // Taken from Astro export { default as ListCard } from "./astro/ListCard.astro"; diff --git a/src/content.config.ts b/src/content.config.ts index f59db1ebfa43e9c..1f2eb544f1c3411 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -22,7 +22,6 @@ import { compatibilityFlagsSchema, glossarySchema, learningPathsSchema, - videosSchema, workersAiModelsSchema, warpReleasesSchema, releaseNotesSchema, @@ -109,10 +108,6 @@ export const collections = { loader: dataLoader("catalog-models"), schema: catalogModelsSchema, }), - videos: defineCollection({ - loader: file("src/content/videos/index.yaml"), - schema: videosSchema, - }), apps: defineCollection({ loader: file("src/content/apps/index.yaml"), schema: appsSchema, diff --git a/src/content/docs/ai-gateway/tutorials/index.mdx b/src/content/docs/ai-gateway/tutorials/index.mdx index 26dfa14d5744d49..5f041387ba9d892 100644 --- a/src/content/docs/ai-gateway/tutorials/index.mdx +++ b/src/content/docs/ai-gateway/tutorials/index.mdx @@ -10,14 +10,8 @@ products: - ai-gateway --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos } from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with AI Gateway. -## Docs - - -## Videos - - diff --git a/src/content/docs/d1/tutorials/index.mdx b/src/content/docs/d1/tutorials/index.mdx index c4c6027e6698bd4..8234d2bdb52371f 100644 --- a/src/content/docs/d1/tutorials/index.mdx +++ b/src/content/docs/d1/tutorials/index.mdx @@ -9,14 +9,8 @@ products: - d1 --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos } from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with D1. -## Docs - - -## Videos - - diff --git a/src/content/docs/kv/tutorials/index.mdx b/src/content/docs/kv/tutorials/index.mdx index 98469504b19f6fc..48874e6440362e6 100644 --- a/src/content/docs/kv/tutorials/index.mdx +++ b/src/content/docs/kv/tutorials/index.mdx @@ -9,14 +9,8 @@ products: - kv --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos } from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with KV. -## Docs - - -## Videos - - diff --git a/src/content/docs/pages/tutorials/index.mdx b/src/content/docs/pages/tutorials/index.mdx index 6941ec691fde1af..b3bca9a8cd0f985 100644 --- a/src/content/docs/pages/tutorials/index.mdx +++ b/src/content/docs/pages/tutorials/index.mdx @@ -1,5 +1,4 @@ --- - pcx_content_type: navigation title: Tutorials description: Guided tutorials to help you build and deploy projects on Cloudflare Pages. @@ -10,14 +9,8 @@ products: - pages --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos } from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with Pages. -## Docs - - -## Videos - - diff --git a/src/content/docs/queues/tutorials/index.mdx b/src/content/docs/queues/tutorials/index.mdx index 524c022b1936d6f..754a28acc0d7635 100644 --- a/src/content/docs/queues/tutorials/index.mdx +++ b/src/content/docs/queues/tutorials/index.mdx @@ -1,5 +1,4 @@ --- - pcx_content_type: navigation title: Tutorials description: Step-by-step Cloudflare Queues tutorials for common messaging patterns. @@ -10,12 +9,6 @@ products: - queues --- -import { ListTutorials, YouTubeVideos } from "~/components"; - -## Docs +import { ListTutorials } from "~/components"; - -## Videos - - diff --git a/src/content/docs/r2/tutorials/index.mdx b/src/content/docs/r2/tutorials/index.mdx index 05b4938c1583cb9..aa217df841c3a3e 100644 --- a/src/content/docs/r2/tutorials/index.mdx +++ b/src/content/docs/r2/tutorials/index.mdx @@ -9,18 +9,8 @@ products: - r2 --- -import { - GlossaryTooltip, - ListTutorials, - YouTubeVideos, -} from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with R2. -## Docs - - -## Videos - - diff --git a/src/content/docs/style-guide/components/external-resources.mdx b/src/content/docs/style-guide/components/external-resources.mdx index a682de4fc91c1cc..608504cd4303b7e 100644 --- a/src/content/docs/style-guide/components/external-resources.mdx +++ b/src/content/docs/style-guide/components/external-resources.mdx @@ -7,7 +7,7 @@ products: - style-guide --- -The `ExternalResources` component pulls from a central list of [apps](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/apps/index.yaml) and [videos](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/videos/index.yaml). +The `ExternalResources` component pulls from a central list of [apps](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/apps/index.yaml). ## Import @@ -21,10 +21,8 @@ import { ExternalResources } from "~/components"; import { ExternalResources } from "~/components"; ## Demo apps - -## Videos - + ``` ## Props @@ -33,9 +31,9 @@ import { ExternalResources } from "~/components"; **required** -**type:** `"apps" | "videos"` +**type:** `"apps"` -The type of resources to show, apps or videos. +The type of resources to show. ### `tags` diff --git a/src/content/docs/style-guide/components/youtube-videos.mdx b/src/content/docs/style-guide/components/youtube-videos.mdx deleted file mode 100644 index d40caa8d9d59236..000000000000000 --- a/src/content/docs/style-guide/components/youtube-videos.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: YouTube Videos -styleGuide: - component: YouTubeVideos -description: Embed multiple YouTube videos in a grid. -products: - - style-guide ---- - -## Usage - -```mdx live -import { YouTubeVideos } from "~/components"; - - -``` - -## `` Props - -### `products` - -**type:** `string[]` - -An array of products to show associated videos for. - -If not specified, the product where the component is used will be used. diff --git a/src/content/docs/vectorize/tutorials/index.mdx b/src/content/docs/vectorize/tutorials/index.mdx index 1316120ea473906..d950685615fe3dc 100644 --- a/src/content/docs/vectorize/tutorials/index.mdx +++ b/src/content/docs/vectorize/tutorials/index.mdx @@ -9,14 +9,8 @@ products: - vectorize --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos } from "~/components"; +import { GlossaryTooltip, ListTutorials } from "~/components"; View tutorials to help you get started with Vectorize. -## Docs - - -## Videos - - diff --git a/src/content/docs/workers-ai/guides/tutorials/index.mdx b/src/content/docs/workers-ai/guides/tutorials/index.mdx index a2f042aa78b3821..caec4e11f38b813 100644 --- a/src/content/docs/workers-ai/guides/tutorials/index.mdx +++ b/src/content/docs/workers-ai/guides/tutorials/index.mdx @@ -11,16 +11,8 @@ products: - workers-ai --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos, Render } from "~/components"; +import { GlossaryTooltip, ListTutorials, Render } from "~/components"; View tutorials to help you get started with Workers AI. -## Docs - - -## Videos - -Also, explore our video resources on Workers AI: - - diff --git a/src/content/docs/workers/tutorials/index.mdx b/src/content/docs/workers/tutorials/index.mdx index ac188c9e795a6db..59da98f8a5b0cbb 100644 --- a/src/content/docs/workers/tutorials/index.mdx +++ b/src/content/docs/workers/tutorials/index.mdx @@ -9,14 +9,8 @@ products: - workers --- -import { GlossaryTooltip, ListTutorials, YouTubeVideos, Render } from "~/components"; +import { GlossaryTooltip, ListTutorials, Render } from "~/components"; View tutorials to help you get started with Workers. -## Docs - - -## Videos - - diff --git a/src/content/videos/index.yaml b/src/content/videos/index.yaml deleted file mode 100644 index a8485dde0eb50d7..000000000000000 --- a/src/content/videos/index.yaml +++ /dev/null @@ -1,296 +0,0 @@ -- link: https://www.youtube.com/watch?v=Id5oKCa__IA - id: Tool Calling Also Known as Function Calling on Cloudflare Workers AI - description: Tool calling, also known as function calling, is a powerful concept that lets you build Large Language Model based applications that can perform actions and retrieve external information from defined tools. - tags: [AI] - languages: [TypeScript] - products: [Workers AI] - cloudflare: true - stream_id: 603e94c9803b4779dd612493c0dd7125 - author: craig - updated: 2024-06-20 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=MlV9Kvkh9hw - id: Build a URL Shortener with an AI-based admin section - description: We are building a URL Shortener, shrty.dev, on Cloudflare. The apps uses Workers KV and Workers Analytics engine. Craig decided to build with Workers AI runWithTools to provide a chat interface for admins. - tags: [Workers Analytics Engine, AI] - products: [Workers AI, KV] - languages: [TypeScript] - cloudflare: true - author: craig - updated: 2024-07-01 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=dttu4QtKkO0 - id: Build Rust Powered Apps - description: In this video, we will show you how to build a global database using workers-rs to keep track of every country and city you’ve visited. - tags: [] - languages: [Rust] - products: [Workers, KV] - cloudflare: true - author: confidence - updated: 2024-06-25 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=GRpwVMkVmKo - id: API Roll (Father's Day) - description: This walks through how to use Workers AI with Hono and Zod to create a streaming pun generating API. - tags: [AI, Hono] - languages: [TypeScript] - products: [Workers AI] - cloudflare: true - author: craig - updated: 2024-06-15 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=MLbo7MGY_lU - id: AI can see clearly now - Build Vision Apps on Cloudflare Workers AI - description: The LlaVa model is hosted on Cloudflare Workers AI. Which means you are an API call away from brand new powerful vision use cases in all of your applications. - tags: [AI] - languages: [TypeScript] - products: [Workers AI] - cloudflare: true - author: craig - updated: 2024-06-11 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=QTsaAhFvX9o - id: Stateful Apps with Cloudflare Workers - description: Learn how to access external APIs, cache and retrieve data using Workers KV, and create SQL-driven applications with Cloudflare D1. - tags: [] - languages: [TypeScript, SQL] - products: [Workers, KV, D1] - cloudflare: true - author: kristian - updated: 2024-05-22 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=5UTExUQ8Fwo - id: Workers AI - Getting Started - Vanilla Chat App - description: Get started building AI apps on Cloudflare using Pages and the GitHub starter template for a Vanilla JavaScript Chat App. - tags: [AI] - languages: [TypeScript] - products: [Workers AI] - cloudflare: true - author: craig - updated: 2024-04-17 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=H7Qe96fqg1M - id: Learn Cloudflare Workers - Full Course for Beginners - description: Learn how to build your first Cloudflare Workers application and deploy it to Cloudflare's global network. - tags: [] - products: [Workers] - languages: [TypeScript] - cloudflare: true - author: kristian - updated: 2024-03-12 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=8SnrvAYAJ4Q - id: Image Generation, Inpainting, and Vision Models - description: Is that person you are about to swipe right on, actually real? Are they AI Generated? - tags: [AI] - products: [Workers AI] - languages: [Python] - cloudflare: true - author: craig - updated: 2024-03-08 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=9JM5Z0KzQsQ - id: Learn AI Development (models, embeddings, vectors) - description: In this workshop, Kristian Freeman, Cloudflare Developer Advocate, teaches the basics of AI Development - models, embeddings, and vectors (including vector databases). - tags: [AI] - products: [Workers AI, Workers, Vectorize] - cloudflare: true - author: kristian - updated: 2023-12-14 - difficulty: Advanced - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=idKdjA8t0jw - id: Optimize your AI App & fine-tune models (AI Gateway, R2) - description: In this workshop, Kristian Freeman, Cloudflare Developer Advocate, shows how to optimize your existing AI applications with Cloudflare AI Gateway, and how to finetune OpenAI models using R2. - tags: [AI] - products: [Workers, R2, AI Gateway] - languages: [JavaScript] - cloudflare: true - author: kristian - updated: 2023-12-14 - difficulty: Advanced - pcx_content_type: tutorial -- link: https://www.youtube.com/watch?v=CHfKeFakGAI - id: How to use Cloudflare AI models and inference in Python with Jupyter Notebooks - description: Cloudflare Workers AI provides a ton of AI models and inference capabilities. In this video, we will explore how to make use of Cloudflare’s AI model catalog using a Python Jupyter Notebook. - tags: [AI] - languages: [Python] - products: [Workers, AI Gateway] - cloudflare: true - author: craig - updated: 2023-12-14 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/cK_leoJsBWY - id: Cloudflare Workers AI, Building a "Hello, World" AI App! - description: Cloudflare's Workers AI helps you add AI functionality to the apps you are building. In this video we show you how simple and straightforward it is to build the Hello World of AI apps in under 5 minutes. - tags: [Workers, AI] - languages: [TypeScript] - products: [Workers AI] - cloudflare: true - stream_id: 0b251ede0256f04f24f9127587e0c3aa - author: craig - updated: 2024-09-11 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/9IjfyBJsJRQ - id: Use Vectorize to add additional context to your AI Applications through RAG - description: A RAG based AI Chat app that uses Vectorize to access video game data for employees of Gamertown. - tags: [Workers, AI, Vectorize, RAG, Hono] - languages: [TypeScript] - products: [Workers, Workers AI, Vectorize] - cloudflare: true - # stream_id: 0b251ede0256f04f24f9127587e0c3aa - author: craig - updated: 2024-09-12 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/doKt9wWQF9A - id: AI meets Maps | Using Cloudflare AI, Langchain, Mapbox, Folium and Streamlit - description: Welcome to RouteMe, a smart tool that helps you plan the most efficient route between landmarks in any city. Powered by Cloudflare Workers AI, Langchain and Mapbox. This Streamlit webapp uses LLMs and Mapbox off my scripts API to solve the classic traveling salesman problem, turning your sightseeing into an optimized adventure! - tags: [Workers, Workers AI] - languages: [Python] - products: [Workers, Workers AI] - cloudflare: true - stream_id: f610dee9aa20ec843b0e451b3014540a - author: lizzie - updated: 2024-09-16 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/bwJkwD-F0kQ - id: Welcome to the Cloudflare Developer Channel - description: Welcome to the Cloudflare Developers YouTube channel. We've got tutorials and working demos and everything you need to level up your projects. Whether you're working on your next big thing or just dorking around with some side projects, we've got you covered! So why don't you come hang out, subscribe to our developer channel and together we'll build something awesome. You're gonna love it. - tags: [Workers, AI, Vectorize, RAG, Hono, D1, R2, AI Gateway] - languages: [TypeScript, JavaScript, Python] - products: [Workers, Workers AI, Vectorize, RAG, Hono, D1, R2, AI Gateway] - cloudflare: true - stream_id: 0fe3acaf4dc09ba0285b75af6602c362 - author: craig - updated: 2024-09-18 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/10-kiyJNr8s - id: Build a private AI chatbot using Meta's Llama 3.1 - description: In this video, you will learn how to set up a private AI chat powered by Llama 3.1 for secure, fast interactions, deploy the model on Cloudflare Workers for serverless, scalable performance and use Cloudflare's Workers AI for seamless integration and edge computing benefits. - tags: [Workers, AI] - languages: [TypeScript] - products: [Workers, Workers AI] - cloudflare: true - # stream_id: - author: confidence - updated: 2024-10-07 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/W45MIi_t_go - id: Building Front-End Applications | Now Supported by Cloudflare Workers - description: You can now build front-end applications, just like you do on Cloudflare Pages, but with the added benefit of Workers. - tags: [Workers, Workers AI] - languages: [TypeScript] - stream_id: 84039c66f18a34fa70cae7e2a0e70dae - products: [Workers, Workers AI] - cloudflare: true - author: confidence - updated: 2024-10-23 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/HXOpxNaKUzw - id: How to Build Event-Driven Applications with Cloudflare Queues - description: In this video, we demonstrate how to build an event-driven application using Cloudflare Queues. Event-driven system lets you decouple services, allowing them to process and scale independently. - tags: [Workers, Queues] - languages: [TypeScript] - # stream_id: - products: [Workers, Workers AI] - cloudflare: true - author: harshil - updated: 2024-09-26 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/slS4RBV0SBk - id: Cloudflare Workflows | Introduction (Part 1 of 3) - description: In this video, we introduce Cloudflare Workflows, the Newest Developer Platform Primitive at Cloudflare. - tags: [Workflows, Workers, Queues, Workers AI, AI Gateway, KV, D1] - languages: [TypeScript] - # stream_id: - products: [Workflows, Workers, Queues, Workers AI, AI Gateway, KV, D1] - cloudflare: true - author: craig - updated: 2024-10-30 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/y4PPsvHrQGA - id: Cloudflare Workflows | Batching and Monitoring Your Durable Execution (Part 2 of 3) - description: Workflows exposes metrics such as execution, error rates, steps, and total duration! - tags: [Workflows, Workers, Queues, Workers AI, AI Gateway, KV, D1] - languages: [TypeScript] - # stream_id: - products: [Workflows, Workers, Queues, Workers AI, AI Gateway, KV, D1] - cloudflare: true - author: craig - updated: 2024-10-30 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/L6gR4Yr3UW8 - id: Cloudflare Workflows | Schedule and Sleep For Your Apps (Part 3 of 3) - description: Cloudflare Workflows allows you to initiate sleep as an explicit step, which can be useful when you want a Workflow to wait, schedule work ahead, or pause until an input or other external state is ready. - tags: [Workflows, Workers, Queues, Workers AI, AI Gateway, KV, D1] - languages: [TypeScript] - # stream_id: - products: [Workers, Pages] - cloudflare: true - author: confidence - updated: 2024-10-31 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/RmF05GpLE20 - id: DevTalk Episode 02 | Post-Quantum Cryptography - description: Bas Westerbaan is Cloudflare’s Research Lead on Post-Quantum efforts. His work ranges from cryptographic implementation and standardization, to driving large-scale experiment and subsequent deployment. - tags: [SSL] - languages: [TypeScript] - products: [SSL] - cloudflare: true - author: bas - updated: 2024-11-14 - difficulty: Beginner - pcx_content_type: tutorial -- link: https://youtu.be/xu4Wb-IppmM - id: OpenAI Relay Server on Cloudflare Workers - description: In this video, Craig Dennis walks you through the deployment of OpenAI's relay server to use with their realtime API. - tags: [Workers, Workers AI, Pages] - languages: [TypeScript] - products: [Workers, Workers AI, Pages] - cloudflare: true - author: craig - updated: 2024-11-14 - difficulty: Intermediate - pcx_content_type: tutorial -- link: https://youtu.be/B2bLUc3iOsI - id: Deploy your React App to Cloudflare Workers - description: Learn how to deploy an existing React application to Cloudflare Workers. - tags: [Workers, Pages] - languages: [TypeScript] - products: [Workers, Pages] - cloudflare: true - author: confidence - updated: 2024-11-05 - difficulty: Intermediate - pcx_content_type: tutorial -# - link: -# id: -# description: -# tags: [Workers] -# languages: [TypeScript] -# products: [Workers] -# cloudflare: true -# author: -# updated: -# difficulty: Intermediate -# pcx_content_type: tutorial diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 51219d6f8ee398c..912488d40ac60c4 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -14,6 +14,5 @@ export * from "./pages-build-environment"; export * from "./pages-framework-presets"; export * from "./partials"; export * from "./stream"; -export * from "./videos"; export * from "./warp-releases"; export * from "./workers-ai-models"; diff --git a/src/schemas/videos.ts b/src/schemas/videos.ts deleted file mode 100644 index fcffefeb38d22cf..000000000000000 --- a/src/schemas/videos.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { z } from "astro/zod"; - -export const videosSchema = z - .object({ - id: z.string(), - link: z.url(), - description: z.string(), - tags: z.string().array().optional(), - products: z.string().array(), - cloudflare: z.boolean(), - stream_id: z.string().optional(), - author: z.string(), - updated: z.coerce.date(), - difficulty: z.string(), - pcx_content_type: z.string(), - languages: z.string().array().optional(), - }) - .strict(); From dbe08eafeab81da30526a7a52a4d8e363e1e28e6 Mon Sep 17 00:00:00 2001 From: kodster28 Date: Tue, 19 May 2026 09:47:21 -0500 Subject: [PATCH 2/3] Re-add video page logic --- src/content.config.ts | 5 +++++ src/schemas/index.ts | 1 + src/schemas/videos.ts | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 src/schemas/videos.ts diff --git a/src/content.config.ts b/src/content.config.ts index 1f2eb544f1c3411..f59db1ebfa43e9c 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -22,6 +22,7 @@ import { compatibilityFlagsSchema, glossarySchema, learningPathsSchema, + videosSchema, workersAiModelsSchema, warpReleasesSchema, releaseNotesSchema, @@ -108,6 +109,10 @@ export const collections = { loader: dataLoader("catalog-models"), schema: catalogModelsSchema, }), + videos: defineCollection({ + loader: file("src/content/videos/index.yaml"), + schema: videosSchema, + }), apps: defineCollection({ loader: file("src/content/apps/index.yaml"), schema: appsSchema, diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 912488d40ac60c4..51219d6f8ee398c 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -14,5 +14,6 @@ export * from "./pages-build-environment"; export * from "./pages-framework-presets"; export * from "./partials"; export * from "./stream"; +export * from "./videos"; export * from "./warp-releases"; export * from "./workers-ai-models"; diff --git a/src/schemas/videos.ts b/src/schemas/videos.ts new file mode 100644 index 000000000000000..fcffefeb38d22cf --- /dev/null +++ b/src/schemas/videos.ts @@ -0,0 +1,18 @@ +import { z } from "astro/zod"; + +export const videosSchema = z + .object({ + id: z.string(), + link: z.url(), + description: z.string(), + tags: z.string().array().optional(), + products: z.string().array(), + cloudflare: z.boolean(), + stream_id: z.string().optional(), + author: z.string(), + updated: z.coerce.date(), + difficulty: z.string(), + pcx_content_type: z.string(), + languages: z.string().array().optional(), + }) + .strict(); From c7dbd956afad6d651e03c5b4ba0433c1d379966c Mon Sep 17 00:00:00 2001 From: kodster28 Date: Tue, 19 May 2026 10:15:10 -0500 Subject: [PATCH 3/3] Re-add video link exclusion --- astro.config.ts | 1 + src/content/docs/cloudflare-one/video-tutorials.mdx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/astro.config.ts b/astro.config.ts index fbbcf3918a36c78..09f1404220abf2f 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -198,6 +198,7 @@ export default defineConfig({ "/markdown.zip", "/style-guide/index.md", "/agent-setup/", + "/videos/**", ], }), ] diff --git a/src/content/docs/cloudflare-one/video-tutorials.mdx b/src/content/docs/cloudflare-one/video-tutorials.mdx index cd6651c8aa80dc5..cf3b7d2442b8482 100644 --- a/src/content/docs/cloudflare-one/video-tutorials.mdx +++ b/src/content/docs/cloudflare-one/video-tutorials.mdx @@ -39,6 +39,6 @@ import { CardGrid, LinkCard } from "~/components";