Skip to content

feat(website): Awesome GitHub Astro site — complete rebuild#839

Merged
ashleyshaw merged 9 commits into
developfrom
feat/awesome-github-astro-conversion
Jun 5, 2026
Merged

feat(website): Awesome GitHub Astro site — complete rebuild#839
ashleyshaw merged 9 commits into
developfrom
feat/awesome-github-astro-conversion

Conversation

@ashleyshaw

@ashleyshaw ashleyshaw commented Jun 5, 2026

Copy link
Copy Markdown
Member

Linked issues

Closes #840

Changelog

Added

  • Rebuilt Awesome GitHub site from React/Babel prototype into production-ready Astro 5 with 252 statically-generated pages.
  • Typed TypeScript data layer: catalogue.ts (110+ items across 8 categories), learn.ts (4 tracks, 10 lessons), glossary.ts (37 terms).
  • Svelte SearchPalette component (Cmd/Ctrl+K, keyboard nav, client:only="svelte" to avoid SSR errors).
  • Detail pages with Install-in-VS-Code, copy-URL, copy-file, and View-on-GitHub action buttons.
  • Learn tracks, glossary, and cookbook pages with full navigation and prev/next lesson flow.
  • Mobile hamburger navigation with animated X icon, slide-in drawer, visibility:hidden when closed, and keyboard Escape support.
  • Expanded footer with brand column and three navigation columns (Explore, Learn, About).
  • /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:

  • Full Astro build run locally: 252 pages, 0 errors.
  • All new pages tested via static path generation (getStaticPaths).
  • Client-side interactivity (search palette, hamburger) uses client:only patterns that avoid SSR window errors.
  • Design tokens and CSS custom properties maintain light/dark mode contrast ratios (WCAG AA).
  • Gemini review items addressed: getAdjacentLessons logic bug, aria-activedescendant, mobile nav focus leak, copy-file loading/error state.

How to Test

Prerequisites

Node.js 20+; run npm install --legacy-peer-deps inside website/.

Test Steps

  1. Build: cd website && npm run build — expect "252 page(s) built, 0 errors".
  2. Home: /awesome-github/ loads with real item counts (not zeros).
  3. Catalogue list: /awesome-github/c/agents/ — cards populate.
  4. Detail page: /awesome-github/c/agents/reviewer/ — action buttons present; "Copy raw URL" copies; "Copy file" shows loading then success.
  5. Search: Cmd+K → type "reviewer" → Enter navigates.
  6. Learn: /awesome-github/learn/ → track → lesson → prev/next works.
  7. Glossary: /awesome-github/glossary/ → term detail → related terms.
  8. Cookbook: /awesome-github/cookbook/ → recipe detail.
  9. Mobile nav (≤768px): hamburger opens drawer; Escape closes; Tab key cannot reach hidden links when closed.
  10. Theme toggle: ☀️/🌙 persists on reload.

Expected Results

All pages load; counts are real; search filters correctly; action buttons work; mobile nav is keyboard-safe.

Edge Cases to Verify

  • Items without body show "View on GitHub" fallback
  • Items with tree: true skip "Copy file" button
  • Dark mode contrast is readable throughout
  • Keyboard-only navigation works (Tab, Enter, Escape)
  • Build succeeds in CI environment

Checklist (Global DoD / PR)

  • All AC met and demonstrated
  • Tests added/updated — static site; covered by Astro build (252 pages, 0 errors) and manual test checklist above
  • Accessibility checklist completed:
    • Semantic HTML and heading order verified
    • Keyboard navigation and visible focus states verified (hamburger Escape, search palette ↑↓Enter, aria-activedescendant added)
    • ARIA used only where needed (aria-expanded, aria-controls, aria-label, aria-current, aria-activedescendant)
    • Contrast and non-colour cues reviewed (WCAG 2.2 AA via design token audit in awesome-github.css)
  • Docs/readme/changelog updated — CHANGELOG.md updated in this PR
  • Frontmatter updated where applicable — N/A (new pages only)
  • Downstream override policy reviewed — N/A (site-only changes, no shared governance files modified)
  • Security checklist completed:
    • No untrusted input rendered — all data comes from static catalogue.ts
    • Clipboard operations use navigator.clipboard with try/catch
    • No secrets or sensitive data introduced; OWASP risks reviewed
  • CI green — pending current run (CHANGELOG.md added, Gemini fixes pushed)
  • Risk assessment completed above
  • Testing instructions provided above

References

https://claude.ai/code/session_01VaY86RbnELdWvFyBdEMwLH

claude added 3 commits June 5, 2026 09:03
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
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@ashleyshaw, we couldn't start this review because you've reached your PR review rate limit.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: d7720a94-ab2b-497b-9c9a-2cdbca14f751

📥 Commits

Reviewing files that changed from the base of the PR and between 9aa3ea2 and 8d5862a.

📒 Files selected for processing (31)
  • CHANGELOG.md
  • website/src/components/AwesomeGithub/AwesomeGithubFooter.astro
  • website/src/components/AwesomeGithub/AwesomeGithubNav.astro
  • website/src/components/AwesomeGithub/SearchPalette.svelte
  • website/src/layouts/AwesomeGithubLayout.astro
  • website/src/lib/catalogue.ts
  • website/src/lib/glossary.ts
  • website/src/lib/learn.ts
  • website/src/lib/resources.ts
  • website/src/pages/awesome-github/c/[type]/[slug].astro
  • website/src/pages/awesome-github/index.astro
  • website/src/pages/c/[type]/[slug].astro
  • website/src/pages/c/[type]/index.astro
  • website/src/pages/cookbook/[slug].astro
  • website/src/pages/cookbook/index.astro
  • website/src/pages/getting-started.astro
  • website/src/pages/getting-started/implementation-roadmap/index.astro
  • website/src/pages/getting-started/index.astro
  • website/src/pages/getting-started/why-github-matters/index.astro
  • website/src/pages/glossary/[term].astro
  • website/src/pages/glossary/index.astro
  • website/src/pages/index.astro
  • website/src/pages/learn/[track]/[lesson].astro
  • website/src/pages/learn/[track]/index.astro
  • website/src/pages/learn/index.astro
  • website/src/pages/references.astro
  • website/src/pages/references/evidence/index.astro
  • website/src/pages/references/glossary/index.astro
  • website/src/pages/references/index.astro
  • website/src/pages/references/sources/index.astro
  • website/src/pages/why.astro
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/awesome-github-astro-conversion

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

✅ Template check passed after update. Thanks for fixing the PR description.

@ashleyshaw ashleyshaw requested a review from Copilot June 5, 2026 09:14
@ashleyshaw ashleyshaw marked this pull request as ready for review June 5, 2026 09:14
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

🔍 Reviewer Summary for PR #839

CI Status:success
Files changed: 31
Risk Distribution: 0 critical, 0 high, 30 medium, 1 low

Recommendations

  • ⚠️ Large deletion detected (>500 lines removed)

@github-actions github-actions Bot added status:needs-review Awaiting code review type:feature Feature or enhancement priority:normal Default priority area:documentation Docs & guides lang:js JavaScript/TypeScript lang:md Markdown content/docs type:chore Chore / small hygiene change meta:needs-changelog Requires a changelog entry before merge labels Jun 5, 2026
@coderabbitai coderabbitai Bot requested a review from krugazul June 5, 2026 09:15

@gemini-code-assist gemini-code-assist Bot 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.

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.

Comment thread website/src/components/AwesomeGithub/AwesomeGithubNav.astro Outdated
Comment thread website/src/components/AwesomeGithub/AwesomeGithubNav.astro
Comment thread website/src/components/AwesomeGithub/SearchPalette.svelte
Comment thread website/src/components/AwesomeGithub/SearchPalette.svelte
Comment thread website/src/pages/c/[type]/[slug].astro
Comment thread website/src/lib/learn.ts
@github-actions github-actions Bot removed the type:chore Chore / small hygiene change label Jun 5, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread website/src/pages/awesome-github/c/[type]/[slug].astro Outdated
Comment thread website/src/lib/catalogue.ts Outdated
- 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

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.

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.

Comment thread website/src/pages/awesome-github/learn/[track]/index.astro Outdated
Comment thread website/src/components/AwesomeGithub/AwesomeGithubNav.astro
Comment thread website/src/lib/resources.ts Outdated
@ashleyshaw ashleyshaw requested review from Copilot and removed request for krugazul June 5, 2026 09:22
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

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.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 10 comments.

Comment thread website/src/pages/getting-started.astro
Comment thread website/src/pages/getting-started.astro
Comment thread website/src/pages/awesome-github/c/[type]/[slug].astro Outdated
Comment thread website/src/pages/c/[type]/[slug].astro
Comment thread website/src/pages/awesome-github/c/[type]/[slug].astro Outdated
Comment thread website/src/pages/c/[type]/[slug].astro
Comment thread website/src/pages/awesome-github/learn/[track]/index.astro Outdated
Comment thread website/src/components/AwesomeGithub/SearchPalette.svelte Outdated
Comment thread website/src/components/AwesomeGithub/AwesomeGithubFooter.astro
Comment thread website/src/lib/resources.ts
- 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
@ashleyshaw ashleyshaw merged commit 0618847 into develop Jun 5, 2026
23 checks passed
@ashleyshaw ashleyshaw deleted the feat/awesome-github-astro-conversion branch June 5, 2026 09:55

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.

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 overwrites textContent and later restores only the plain text. Use innerHTML (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 textContent drops the icon markup permanently after the first interaction. Preserve and restore the original innerHTML so the button returns to its initial state.

Comment on lines +35 to +45
function openPalette() {
open = true;
query = "";
selected = 0;
setTimeout(() => inputEl?.focus(), 50);
}

function closePalette() {
open = false;
query = "";
}
Comment on lines +52 to +63
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]);
}
Comment on lines 65 to +67

/**
* 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 {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:documentation Docs & guides lang:js JavaScript/TypeScript lang:md Markdown content/docs meta:needs-changelog Requires a changelog entry before merge priority:normal Default priority status:needs-review Awaiting code review type:feature Feature or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Rebuild Awesome GitHub site — complete Astro conversion

3 participants