feat(website): Awesome GitHub Astro site — complete rebuild#839
Conversation
Ports all catalogue data from the prototype into typed TypeScript modules, wires up the resources.ts stub with real items, and builds out all the missing Awesome GitHub pages from scratch. Data layer: - src/lib/catalogue.ts — 110+ ITEMS across 8 categories, URL builders, type info - src/lib/learn.ts — 4 LEARN_TRACKS with 10 lessons, 3 COOKBOOK_RECIPES - src/lib/glossary.ts — 5 GLOSSARY_GROUPS (37 terms), 6 REFERENCE_GROUPS - src/lib/resources.ts — now returns real data via catalogue New pages: - /awesome-github/getting-started — 6-step onboarding with copy-to-clipboard - /awesome-github/learn/ — 4-track learning centre - /awesome-github/learn/[track]/ — per-track overview with lesson list - /awesome-github/learn/[track]/[lesson] — lesson reader with prev/next nav - /awesome-github/glossary/ — grouped term index with sidebar - /awesome-github/glossary/[term] — term detail with related terms - /awesome-github/cookbook/ — recipe index with kind badges - /awesome-github/cookbook/[slug] — recipe detail with GitHub link Updated: - index.astro — uses real catalogue counts (was hardcoded) - AwesomeGithubNav — adds Learn, Cookbook, Glossary links Build: 251 pages, 0 errors https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
…tons - Add Svelte SearchPalette component (Cmd/Ctrl+K, custom DOM event, keyboard nav) - Mount palette with client:only="svelte" in AwesomeGithubLayout to avoid SSR window errors - Update nav: add Learn, Cookbook, Glossary links + data-search-open on search button - Rewrite [slug].astro detail page: action buttons (Install VS Code, copy URL, copy file, View on GitHub), applyTo/run/validates/duration metadata rows, pre-formatted body block, fallback no-body section, related items grid - Add all missing CSS classes: ag-actions, ag-action-btn variants, ag-apply-to, ag-body-pre, ag-no-body, ag-gh-link, ag-path-code, ag-resource-version, ag-type-note https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
- Add /awesome-github/why/ editorial page explaining the control plane philosophy - Expand footer: brand column + three nav columns (Explore, Learn, About) + bottom bar - Add mobile hamburger to nav: slide-in drawer at ≤768px, animated ↔ X icon, keyboard Escape support, aria-expanded, aria-controls wired to menu element - Hide search button on mobile (accessible via keyboard shortcut Cmd/Ctrl+K) https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
|
Warning Review limit reached
More reviews will be available in 20 minutes and 42 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (31)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Template check passed after update. Thanks for fixing the PR description. |
🔍 Reviewer Summary for PR #839CI Status: ❌ Recommendations
|
There was a problem hiding this comment.
Code Review
This pull request ports the Awesome GitHub catalogue, glossary, and learning data into TypeScript, introduces Svelte-based search palette functionality, and adds dynamic routing for categories, lessons, glossary terms, and cookbook recipes. The review feedback highlights several critical areas for improvement: resolving potential routing portability issues with double-nested base paths, addressing accessibility concerns such as mobile menu focus leaks and missing ARIA attributes in the search palette, adding UX loading and error states for network-based file copying, and fixing a logic bug in getAdjacentLessons when a lesson is not found.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89833a1805
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- fix(learn): guard getAdjacentLessons against idx === -1 (findIndex miss
returned track.lessons[0] as next when lesson not found)
- fix(search-palette): add aria-activedescendant on input and id="sp-option-{i}"
on each listbox option so screen readers announce keyboard selection
- fix(nav): add visibility:hidden/visible to mobile drawer so off-screen
links are not tab-reachable or screen-reader-readable when closed
- fix(detail): add loading ("⏳ Copying…"), error ("❌ Failed"), and
disabled state to copy-file button while fetch is in progress
https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
There was a problem hiding this comment.
Pull request overview
Rebuilds the Awesome GitHub website section as a production-ready Astro 5 implementation, adding a typed catalogue data layer plus new browse/learn/glossary/cookbook content surfaces and site-wide search.
Changes:
- Adds typed data modules for the catalogue, learning tracks/cookbook recipes, and glossary; updates the legacy resources layer to delegate to the catalogue.
- Introduces new Astro pages for Why / Getting Started / Learn / Glossary / Cookbook, and rewrites the catalogue detail page to support install/copy actions.
- Adds global search palette (Svelte) and expands navigation/footer to support the new information architecture (including mobile navigation).
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| website/src/pages/awesome-github/why.astro | Adds the “Why This Exists” editorial page and styling. |
| website/src/pages/awesome-github/learn/index.astro | Adds Learning Centre landing page listing tracks and lessons. |
| website/src/pages/awesome-github/learn/[track]/index.astro | Adds per-track page with lesson list and further reading links. |
| website/src/pages/awesome-github/learn/[track]/[lesson].astro | Adds per-lesson page with GitHub source links and prev/next nav. |
| website/src/pages/awesome-github/index.astro | Updates Awesome GitHub home to pull live counts and category blurbs from the catalogue. |
| website/src/pages/awesome-github/glossary/index.astro | Adds glossary index with grouped navigation and term listings. |
| website/src/pages/awesome-github/glossary/[term].astro | Adds glossary term detail page with related terms and group sidebar. |
| website/src/pages/awesome-github/getting-started.astro | Adds Awesome GitHub-specific “Getting Started” page with copy-to-clipboard helper. |
| website/src/pages/awesome-github/cookbook/index.astro | Adds cookbook recipe index with kind badges and source links. |
| website/src/pages/awesome-github/cookbook/[slug].astro | Adds cookbook recipe detail page with GitHub CTA and related recipes grid. |
| website/src/pages/awesome-github/c/[type]/[slug].astro | Rewrites catalogue detail page to use catalogue.ts data + adds install/copy actions and related items. |
| website/src/lib/resources.ts | Replaces stub resource accessors with catalogue-backed implementations and adds type metadata. |
| website/src/lib/learn.ts | Introduces typed learning tracks + cookbook recipe metadata and navigation helpers. |
| website/src/lib/glossary.ts | Introduces typed glossary groups/entries plus reference groups and helpers. |
| website/src/lib/catalogue.ts | Adds the core typed catalogue dataset, URL helpers, and categorisation utilities. |
| website/src/layouts/AwesomeGithubLayout.astro | Wires in the global search palette and passes minimal search data from catalogue items. |
| website/src/components/AwesomeGithub/SearchPalette.svelte | Implements Cmd/Ctrl+K search palette with keyboard navigation and filtering. |
| website/src/components/AwesomeGithub/AwesomeGithubNav.astro | Updates primary nav links, adds search trigger wiring and mobile hamburger drawer. |
| website/src/components/AwesomeGithub/AwesomeGithubFooter.astro | Rebuilds footer with explore/learn/about columns and updated branding/links. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ash Shaw <ashley@lightspeedwp.agency>
- fix(catalogue): plugin-structure path was .github/instructions/... → instructions/... - fix(catalogue): labeling path was instructions/labeling.instructions.md (does not exist) → docs/LABELING.md (actual file) - fix(detail): hide 'Copy raw URL' for tree items (directory URLs return 404 from raw.githubusercontent.com) - fix(learn-track): remove nested <a> inside lesson card link (invalid HTML); source link moved outside as a sibling element below the card - fix(resources): remove unused ITEMS and CATEGORIES imports https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
- Detail pages: ⎇ branch toggle persists main/develop choice in localStorage and rewrites all GitHub/raw/VS Code action URLs on click - Learn: lesson pages auto-mark themselves as read in localStorage; track index displays "X of Y completed" and highlights done lessons - New /awesome-github/references/ page with external sources, acknowledgments, and GPL v3 licence attribution - Footer: added References link; corrected licence text (GPL v3, not MIT) - SearchPalette: moved role=combobox/aria-expanded to <input> per ARIA spec - [slug].astro: removed unused AwesomeGithubButton import - resources.ts: fixed UK spelling "Organisation-wide" https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
All Awesome GitHub pages previously nested under /awesome-github/ are now at the root of the site, matching the github.lightspeedwp.agency domain structure: /awesome-github/c/agents/ → /c/agents/ /awesome-github/learn/ → /learn/ /awesome-github/references/ → /references/ /awesome-github/why/ → /why/ /awesome-github/ → / Updated all internal route references, nav/footer links, and SearchPalette navigation URLs. Fixed relative import paths for each depth level after the directory move. Removed superseded old pages (references/, getting-started/, legacy cookbook index). Build: 244 pages, 0 errors. https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 31 out of 31 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (3)
website/src/pages/awesome-github/index.astro:16
- Category links are constructed without a trailing slash (
.../c/<id>). For a static Astro site this can lead to unnecessary redirects or 404s depending on the host; the rest of the site consistently links with trailing slashes.
website/src/pages/awesome-github/c/[type]/[slug].astro:201 - After the first successful click, this button loses its icon
<span>because the handler overwritestextContentand later restores only the plain text. UseinnerHTML(or a dedicated label span) so the original markup is restored correctly.
website/src/pages/awesome-github/c/[type]/[slug].astro:223 - As with the raw-URL copy button, overwriting
textContentdrops the icon markup permanently after the first interaction. Preserve and restore the originalinnerHTMLso the button returns to its initial state.
| function openPalette() { | ||
| open = true; | ||
| query = ""; | ||
| selected = 0; | ||
| setTimeout(() => inputEl?.focus(), 50); | ||
| } | ||
|
|
||
| function closePalette() { | ||
| open = false; | ||
| query = ""; | ||
| } |
| function handleKeydown(e: KeyboardEvent) { | ||
| if ((e.metaKey || e.ctrlKey) && e.key === "k") { | ||
| e.preventDefault(); | ||
| open ? closePalette() : openPalette(); | ||
| } | ||
| if (!open) return; | ||
|
|
||
| if (e.key === "Escape") closePalette(); | ||
| if (e.key === "ArrowDown") { e.preventDefault(); selected = Math.min(selected + 1, filtered.length - 1); } | ||
| if (e.key === "ArrowUp") { e.preventDefault(); selected = Math.max(selected - 1, 0); } | ||
| if (e.key === "Enter" && filtered[selected]) navigate(filtered[selected]); | ||
| } |
|
|
||
| /** | ||
| * Get a specific resource by type and slug | ||
| * Note: This is a stub implementation. In production, this would load from content collections. | ||
| */ | ||
| export function getResource(_type: string, _slug: string): Resource | null { | ||
| // Stub implementation - returns null for now | ||
| // In production, this would load from Astro content collections | ||
| return null; | ||
| function catalogueItemToResource(catalogueItem: { id: string; cat: string; slug: string; name: string; description: string; type: string; tags: string[]; version: string; updated: string; applyTo?: string; path?: string; tree: boolean; body?: string | null; run?: string | null; validates?: string | null; dest?: string | null; duration?: string | null; action?: string | null }): Resource { | ||
| return { |
Linked issues
Closes #840
Changelog
Added
catalogue.ts(110+ items across 8 categories),learn.ts(4 tracks, 10 lessons),glossary.ts(37 terms).SearchPalettecomponent (Cmd/Ctrl+K, keyboard nav,client:only="svelte"to avoid SSR errors).visibility:hiddenwhen closed, and keyboard Escape support./awesome-github/why/editorial page explaining the control plane philosophy.Risk Assessment
Risk Level: Low
Potential Impact: Changes are confined to the
website/directory (Astro static site). No changes to GitHub workflows, governance files, or shared scripts. The site builds statically so there is no runtime server risk.Mitigation Steps:
getStaticPaths).client:onlypatterns that avoid SSRwindowerrors.getAdjacentLessonslogic bug,aria-activedescendant, mobile nav focus leak, copy-file loading/error state.How to Test
Prerequisites
Node.js 20+; run
npm install --legacy-peer-depsinsidewebsite/.Test Steps
cd website && npm run build— expect "252 page(s) built, 0 errors"./awesome-github/loads with real item counts (not zeros)./awesome-github/c/agents/— cards populate./awesome-github/c/agents/reviewer/— action buttons present; "Copy raw URL" copies; "Copy file" shows loading then success./awesome-github/learn/→ track → lesson → prev/next works./awesome-github/glossary/→ term detail → related terms./awesome-github/cookbook/→ recipe detail.Expected Results
All pages load; counts are real; search filters correctly; action buttons work; mobile nav is keyboard-safe.
Edge Cases to Verify
bodyshow "View on GitHub" fallbacktree: trueskip "Copy file" buttonChecklist (Global DoD / PR)
aria-expanded,aria-controls,aria-label,aria-current,aria-activedescendant)awesome-github.css)catalogue.tsnavigator.clipboardwith try/catchReferences
https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH