From b40f2c310fef4170f5259d5b72319c4ffa9fccbb Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 27 Sep 2026 08:52:48 +0200 Subject: [PATCH] feat(website): add task-based guides hub and seven article drafts --- apps/website/README.md | 15 +- apps/website/public/llms.txt | 1 + apps/website/src/components/Footer.astro | 1 + apps/website/src/components/Header.astro | 18 ++- .../blog/fullscreen-channel-episode-guide.mdx | 104 +++++++++++++ .../blog/library-organization-guide.mdx | 111 ++++++++++++++ .../src/content/blog/m3u-programme-guide.mdx | 102 +++++++++++++ .../content/blog/player-controls-guide.mdx | 105 +++++++++++++ .../blog/playlist-backup-restore-guide.mdx | 109 ++++++++++++++ .../blog/stable-nightly-updates-guide.mdx | 104 +++++++++++++ .../blog/stream-info-diagnostics-guide.mdx | 105 +++++++++++++ apps/website/src/lib/guides.ts | 42 ++++++ apps/website/src/pages/blog/index.astro | 3 + apps/website/src/pages/guides/index.astro | 141 ++++++++++++++++++ tools/testing/website-guides.test.mjs | 97 ++++++++++++ 15 files changed, 1051 insertions(+), 7 deletions(-) create mode 100644 apps/website/src/content/blog/fullscreen-channel-episode-guide.mdx create mode 100644 apps/website/src/content/blog/library-organization-guide.mdx create mode 100644 apps/website/src/content/blog/m3u-programme-guide.mdx create mode 100644 apps/website/src/content/blog/player-controls-guide.mdx create mode 100644 apps/website/src/content/blog/playlist-backup-restore-guide.mdx create mode 100644 apps/website/src/content/blog/stable-nightly-updates-guide.mdx create mode 100644 apps/website/src/content/blog/stream-info-diagnostics-guide.mdx create mode 100644 apps/website/src/lib/guides.ts create mode 100644 apps/website/src/pages/guides/index.astro diff --git a/apps/website/README.md b/apps/website/README.md index 9ede7d72b..7754a7b35 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -108,6 +108,16 @@ skip shows up in your output. ## Guides +`/guides/` is the task-based entry point: Getting started, Live TV & EPG, +Player & playback, Your library and Updates. `src/lib/guides.ts` owns the +reading order; titles and descriptions come from the existing blog collection, +and article URLs stay at `/blog//`. Add an article's slug to the matching +group when it should appear here. Missing slugs fail the build. Drafts follow +the blog's visibility rule (development mode or `PUBLIC_INCLUDE_DRAFTS=true`), +and preview entries carry a draft label. Updates also links to the latest +published release post. The hub emits CollectionPage and BreadcrumbList data +and is linked from the site header, footer and blog index. + Evergreen how-to posts live in the blog collection next to release notes (`xtream-codes-setup-guide.mdx`, `stalker-portal-setup-guide.mdx`, `m3u-playlist-epg-setup-guide.mdx`, `offline-downloads-guide.mdx`, @@ -156,7 +166,10 @@ Evergreen how-to posts live in the blog collection next to release notes `tools/testing/website-guides.test.mjs` (part of `pnpm nx test website`) checks each guide for the FAQPage schema, a link to the download hub and the presence -of every referenced screenshot in the build output. +of every referenced screenshot in the build output. It also checks the task hub's +grouping, draft visibility, article links, structured data and navigation at +phone, tablet and desktop widths. Run the hub checks against a build made with +`PUBLIC_INCLUDE_DRAFTS=true` using the same environment flag to verify previews. ## Blog Tags diff --git a/apps/website/public/llms.txt b/apps/website/public/llms.txt index f9df7f5ba..634fd4062 100644 --- a/apps/website/public/llms.txt +++ b/apps/website/public/llms.txt @@ -6,6 +6,7 @@ - Website: https://4gray.github.io/iptvnator/ - Blog: https://4gray.github.io/iptvnator/blog/ +- Guides by task: https://4gray.github.io/iptvnator/guides/ - Latest Release: https://github.com/4gray/iptvnator/releases/latest - Downloads overview: https://4gray.github.io/iptvnator/download/ - Download for Windows: https://4gray.github.io/iptvnator/download/windows/ diff --git a/apps/website/src/components/Footer.astro b/apps/website/src/components/Footer.astro index e7edb422e..adc9926fc 100644 --- a/apps/website/src/components/Footer.astro +++ b/apps/website/src/components/Footer.astro @@ -27,6 +27,7 @@ const socialLinks = [ const footerLinks = [ { label: 'Features', href: '/iptvnator/features/' }, + { label: 'Guides', href: '/iptvnator/guides/' }, { label: 'Compare', href: '/iptvnator/compare/' }, { label: 'Download', href: '/iptvnator/download/' }, { label: 'Blog', href: '/iptvnator/blog/' }, diff --git a/apps/website/src/components/Header.astro b/apps/website/src/components/Header.astro index a53dbca87..a384d176f 100644 --- a/apps/website/src/components/Header.astro +++ b/apps/website/src/components/Header.astro @@ -1,6 +1,7 @@ --- const navLinks = [ { label: 'Features', href: '/iptvnator/features/' }, + { label: 'Guides', href: '/iptvnator/guides/' }, { label: 'Compare', href: '/iptvnator/compare/' }, { label: 'Screenshots', href: '/iptvnator/#screenshots' }, { label: 'Download', href: '/iptvnator/download/' }, @@ -28,12 +29,13 @@ const navLinks = [ -