Skip to content

Implement Awesome GitHub site MVP#755

Merged
ashleyshaw merged 6 commits into
developfrom
codex/awesome-github-implementation
Jun 3, 2026
Merged

Implement Awesome GitHub site MVP#755
ashleyshaw merged 6 commits into
developfrom
codex/awesome-github-implementation

Conversation

@ashleyshaw
Copy link
Copy Markdown
Member

Summary

Implements the first executable slice of the Awesome GitHub website:

  • Astro site scaffold under website/
  • Three MVP pages: Home, Why this exists, References
  • llms.txt support and a favicon
  • A GitHub Actions workflow that builds the site on PRs and pushes touching website/**

Testing

  • npm run build in website/
  • Parsed website/README.md frontmatter with gray-matter
  • Parsed .github/workflows/awesome-github-site.yml with yaml

Notes

This is intentionally narrow: phase 1 only. Phase 2 can add search, richer browsing, and the fuller resource catalogue once this foundation is stable.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 3, 2026

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 10 minutes and 28 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: 8925b408-bacd-434b-a8fc-6236653d80d1

📥 Commits

Reviewing files that changed from the base of the PR and between 0fb900a and 2a49866.

📒 Files selected for processing (18)
  • .github/projects/active/awesome-github-site/ISSUE_EXECUTION_PLAN.md
  • .github/projects/active/awesome-github-site/ISSUE_REGISTER.md
  • .github/projects/active/awesome-github-site/README.md
  • .github/projects/active/awesome-github-site/RUN_LOG.md
  • .github/projects/active/awesome-github-site/openspec/README.md
  • .github/projects/active/awesome-github-site/phase-1/README.md
  • .github/projects/active/awesome-github-site/phase-2/README.md
  • .github/projects/active/next-issues-execution-plan.md
  • .github/workflows/awesome-github-site.yml
  • CHANGELOG.md
  • website/README.md
  • website/astro.config.mjs
  • website/package.json
  • website/public/.nojekyll
  • website/public/CNAME
  • website/src/pages/404.astro
  • website/src/pages/why-this-exists.astro
  • website/src/styles/global.css
📝 Walkthrough

Walkthrough

This PR scaffolds a new Astro-based static website for the repository. It introduces a complete build pipeline (GitHub Actions, npm setup, Astro config), foundational layout and styling components, three informational pages (homepage, why-this-exists, references), and supporting documentation and gitignore rules.

Changes

Awesome GitHub Site Launch

Layer / File(s) Summary
Build and deployment infrastructure
.github/workflows/awesome-github-site.yml, website/package.json, website/astro.config.mjs
GitHub Actions workflow triggers on changes to website/** or the workflow itself; Node 20 with npm cache runs npm ci and npm run build in the website directory. Package manifest defines Astro ^5.11.0 as the sole dependency with dev, build, and preview scripts. Astro config sets output mode to static.
Layout foundation and theming
website/src/layouts/BaseLayout.astro, website/src/styles/global.css
BaseLayout wraps all pages with meta tags, responsive navigation with active-link detection via aria-current, and footer. Global stylesheet defines dark-mode CSS variables, base element styles, responsive grid (860px breakpoint), and reusable component classes (nav, hero, buttons, cards, sections, stats, footer).
Homepage and entry point
website/src/pages/index.astro
Homepage renders hero banner with MVP messaging, a three-card grid linking to home, why-this-exists, and references sections, and a phase 2 roadmap preview section. Uses BaseLayout for structure and meta attributes.
Content pages: references and rationale
website/src/pages/references.astro, website/src/pages/why-this-exists.astro
References page lists primary sources (GitHub repo, README, docs) and planning inputs; includes a base-relative link to llms.txt. Why-this-exists page explains site purpose, phased scope, and phase 2 expansion plans. Both use BaseLayout and derive base path from import.meta.env.BASE_URL for correct link generation.
Documentation and public assets
website/.gitignore, website/README.md, website/public/llms.txt
.gitignore excludes node_modules/, .astro/, and dist/. README contains YAML metadata (title, version, status, owners, tags) and build/dev instructions. Public llms.txt provides machine-readable index of phase 1 routes and source references.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

area:ci, priority:normal, status:needs-review, lang:md, lang:js, meta:needs-changelog, type:feature, area:documentation

Suggested reviewers

  • krugazul
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is largely incomplete against the template. It lacks linked issues, comprehensive changelog entries, risk assessment details, testing instructions with prerequisites and step-by-step guidance, and most checklist items. Complete the description by adding: a linked issue number, detailed changelog entries (Added/Changed/Fixed/Removed), explicit risk level and mitigation steps, and thorough testing instructions with prerequisites and verification steps.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly captures the main change: implementing the MVP version of the Awesome GitHub site. It's concise, specific, and clearly summarises the primary deliverable.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/awesome-github-implementation

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


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.

@coderabbitai coderabbitai Bot requested a review from krugazul June 3, 2026 11:17
@github-actions github-actions Bot added area:ci Build and CI pipelines area:documentation Docs & guides area:assets Assets (images, fonts, static files) lang:css Stylesheets (CSS/Sass/etc.) lang:md Markdown content/docs lang:json JSON config/content status:needs-review Awaiting code review priority:normal Default priority type:chore Chore / small hygiene change type:documentation Documentation meta:needs-changelog Requires a changelog entry before merge labels Jun 3, 2026
@coderabbitai coderabbitai Bot added lang:js JavaScript/TypeScript type:feature Feature or enhancement labels Jun 3, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

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 bootstraps the Phase 1 MVP for the Awesome GitHub website using Astro, adding configuration files, a base layout, global styles, and three core pages (Home, Why this exists, and References). The primary feedback highlights a critical issue where directly concatenating import.meta.env.BASE_URL (which defaults to /) with relative paths results in double slashes, leading to broken protocol-relative URLs in browsers. Normalizing the base URL by stripping its trailing slash is recommended across multiple pages and layouts. Additionally, an unused base variable in why-this-exists.astro should be removed.

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 on lines +4 to +5
const base = import.meta.env.BASE_URL;
const pathname = Astro.url.pathname.replace(base, "/");
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.

high

When import.meta.env.BASE_URL is / (the default root path), concatenating it directly with relative paths (e.g., ${base}why-this-exists/) results in double slashes (e.g., //why-this-exists/). Browsers interpret double leading slashes as protocol-relative URLs, which will break navigation and asset loading during local development or when hosted at the root domain.

To prevent this, normalize the base URL by removing any trailing slash so that paths can be constructed safely with a single leading slash.

const base = import.meta.env.BASE_URL;
const cleanBase = base.replace(/\/$/, "");
const pathname = Astro.url.pathname.replace(base, "/");

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href={`${base}favicon.svg`} type="image/svg+xml" />
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.

high

Use the normalized cleanBase variable to avoid generating a protocol-relative URL (e.g., //favicon.svg) when base is /.

    <link rel="icon" href={`${cleanBase}/favicon.svg`} type="image/svg+xml" />

Comment on lines +31 to +36
<a href={`${base}why-this-exists/`} aria-current={pathname === "/why-this-exists/" ? "page" : undefined}
>Why this exists</a
>
<a href={`${base}references/`} aria-current={pathname === "/references/" ? "page" : undefined}
>References</a
>
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.

high

Use the normalized cleanBase variable to prevent protocol-relative URLs for navigation links.

          <a href={`${cleanBase}/why-this-exists/`} aria-current={pathname === "/why-this-exists/" ? "page" : undefined}
            >Why this exists</a
          >
          <a href={`${cleanBase}/references/`} aria-current={pathname === "/references/" ? "page" : undefined}
            >References</a
          >

Comment on lines +4 to +5
const base = import.meta.env.BASE_URL;
---
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.

high

Normalize import.meta.env.BASE_URL by removing the trailing slash to prevent protocol-relative URLs (e.g., //why-this-exists/) when navigating from the home page.

const base = import.meta.env.BASE_URL.replace(/\/$/, "");
---

Comment on lines +20 to +21
<a class="button primary" href={`${base}why-this-exists/`}>Why this exists</a>
<a class="button secondary" href={`${base}references/`}>Browse references</a>
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.

high

Update the links to use the normalized base path with an explicit slash separator.

      <a class="button primary" href={`${base}/why-this-exists/`}>Why this exists</a>
      <a class="button secondary" href={`${base}/references/`}>Browse references</a>

Comment on lines +3 to +4
const base = import.meta.env.BASE_URL;
---
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.

high

Normalize import.meta.env.BASE_URL by removing the trailing slash to prevent protocol-relative URLs when referencing assets or local pages.

const base = import.meta.env.BASE_URL.replace(/\/$/, "");
---

awesome-copilot website source
<span>Source tree used to understand the Astro and content layout patterns.</span>
</a>
<a class="ref" href={`${base}llms.txt`}>
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.

high

Update the link to use the normalized base path with an explicit slash separator.

      <a class="ref" href={`${base}/llms.txt`}>

Comment thread website/src/pages/why-this-exists.astro Outdated
Comment on lines +3 to +4
const base = import.meta.env.BASE_URL;
---
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.

medium

The base variable is declared but never used in this file. It should be removed to keep the code clean.

---

@github-actions github-actions Bot removed type:documentation Documentation type:chore Chore / small hygiene change labels Jun 3, 2026
coderabbitai[bot]
coderabbitai Bot previously requested changes Jun 3, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (2)
website/package.json (1)

6-10: ⚡ Quick win

Add standard lint, test, and format scripts for org consistency.

Great MVP start — just missing the usual script trio expected by repo standards. Adding them now keeps CI and local workflows tidy.

As per coding guidelines, "Ensure scripts follow org standards (lint, test, build, format)."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@website/package.json` around lines 6 - 10, The package.json scripts object
only contains "dev", "build", and "preview" — add the standard org scripts
"lint", "test", and "format" to that same "scripts" map so CI and local
workflows are consistent; set "lint" to the repo-standard linter command with
auto-fix enabled, "test" to the configured test runner command, and "format" to
the project's formatter write command, and verify the commands match your repo's
existing tooling and CI expectations.
website/src/styles/global.css (1)

1-19: ⚖️ Poor tradeoff

Consider adding light mode support.

The design system currently defines only a dark colour scheme. Whilst dark themes are brilliant (and quite stylish), some users may prefer a light mode for readability or personal preference. Since this is MVP phase 1, this could be deferred to phase 2, but it's worth flagging for future consideration!

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@website/src/styles/global.css` around lines 1 - 19, Add an explicit
light-mode set of CSS custom properties so the UI can switch from the current
dark theme; create a selector (e.g., [data-theme="light"] or `@media`
(prefers-color-scheme: light)) that overrides the same variables defined in
:root (--bg, --bg-elevated, --bg-soft, --border, --text, --muted, --accent,
--accent-2, --accent-3, --shadow, --radius-*, --max-width, --serif, --sans) with
light-friendly values, keep the existing :root dark definitions intact, and
ensure your app/toggle can switch the data-theme attribute (or rely on
prefers-color-scheme) so components consuming those variables automatically
render in light mode.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/awesome-github-site.yml:
- Around line 3-14: Add a manual dispatch trigger to the workflow by updating
the on: block to include workflow_dispatch with explicit inputs; specifically
add a workflow_dispatch section that defines at least required inputs such as a
"requested_by" (string), "reason" (string), and a boolean like "run_ci"
(boolean) so runs can be manually audited and controlled. Modify the existing
on: block (near the pull_request and push entries) to include this new
workflow_dispatch inputs structure and ensure descriptions/defaults are provided
for each input to satisfy governance requirements.

In `@website/README.md`:
- Around line 1-17: The frontmatter block at the top of README.md is missing the
required language field; update the YAML frontmatter (the document metadata
block containing title "Awesome GitHub Site" and fields like
version/created_date) to include a language entry (e.g., language: "en" or
another appropriate locale) so the markdown docs comply with the repository
guideline requiring language in frontmatter.

In `@website/src/pages/why-this-exists.astro`:
- Line 3: Remove the unused constant by deleting the declaration "const base =
import.meta.env.BASE_URL;" from the file; locate the top-level declaration of
the variable named base and remove it (and any now-unreferenced import or
comment tied only to that line) so the page no longer defines an unused symbol.

In `@website/src/styles/global.css`:
- Around line 27-29: The global CSS currently forces smooth scrolling via the
html selector (scroll-behavior: smooth) which ignores users'
prefers-reduced-motion setting; update the stylesheet to respect the
prefers-reduced-motion media query by keeping scroll-behavior: smooth for
default but overriding it to scroll-behavior: auto (or unset) inside `@media`
(prefers-reduced-motion: reduce) so users who opt for reduced motion are not
subjected to smooth scrolling.

---

Nitpick comments:
In `@website/package.json`:
- Around line 6-10: The package.json scripts object only contains "dev",
"build", and "preview" — add the standard org scripts "lint", "test", and
"format" to that same "scripts" map so CI and local workflows are consistent;
set "lint" to the repo-standard linter command with auto-fix enabled, "test" to
the configured test runner command, and "format" to the project's formatter
write command, and verify the commands match your repo's existing tooling and CI
expectations.

In `@website/src/styles/global.css`:
- Around line 1-19: Add an explicit light-mode set of CSS custom properties so
the UI can switch from the current dark theme; create a selector (e.g.,
[data-theme="light"] or `@media` (prefers-color-scheme: light)) that overrides the
same variables defined in :root (--bg, --bg-elevated, --bg-soft, --border,
--text, --muted, --accent, --accent-2, --accent-3, --shadow, --radius-*,
--max-width, --serif, --sans) with light-friendly values, keep the existing
:root dark definitions intact, and ensure your app/toggle can switch the
data-theme attribute (or rely on prefers-color-scheme) so components consuming
those variables automatically render in light mode.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro

Run ID: 361c96f3-c3ae-4f7f-a0de-6770bd0a7a63

📥 Commits

Reviewing files that changed from the base of the PR and between 37abd6f and 0fb900a.

⛔ Files ignored due to path filters (2)
  • website/package-lock.json is excluded by !**/package-lock.json
  • website/public/favicon.svg is excluded by !**/*.svg
📒 Files selected for processing (11)
  • .github/workflows/awesome-github-site.yml
  • website/.gitignore
  • website/README.md
  • website/astro.config.mjs
  • website/package.json
  • website/public/llms.txt
  • website/src/layouts/BaseLayout.astro
  • website/src/pages/index.astro
  • website/src/pages/references.astro
  • website/src/pages/why-this-exists.astro
  • website/src/styles/global.css
📜 Review details
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{js,ts,tsx,php,py,json,yaml,yml,env,conf,config}

📄 CodeRabbit inference engine (AGENTS.md)

Never output secrets. Treat production and customer data as sensitive. Follow the OWASP top 10 for web security

Files:

  • website/package.json
**/*.{md,js,ts,jsx,tsx,json,php,yml,yaml}

📄 CodeRabbit inference engine (CLAUDE.md)

Use UK English throughout (optimise, organisation, colour, behaviour)

Files:

  • website/package.json
  • website/README.md
**/package.json

⚙️ CodeRabbit configuration file

**/package.json: Review package.json:

  • Check for security vulnerabilities and outdated packages.
  • Ensure scripts are documented with clear, descriptive names.
  • Validate semantic versioning and proper version pinning.
  • Confirm devDependencies vs dependencies separation.
  • Ensure scripts follow org standards (lint, test, build, format).

Files:

  • website/package.json
**/.github/workflows/*.yml

⚙️ CodeRabbit configuration file

**/.github/workflows/*.yml: Review GitHub Actions workflows for this governance repo:

  • Security: check for least-privilege permissions (use permissions: at job level, default to read-only).
  • Secret handling: ensure secrets are passed via env vars, not interpolated directly into run: steps to prevent injection.
  • Action pinning: prefer SHA-pinned actions over mutable tags (e.g. actions/checkout@v4 is acceptable; SHA pins are better).
  • No pull_request_target with untrusted code execution unless explicitly justified.
  • Avoid storing sensitive outputs as unmasked step outputs.
  • Check for reusable workflow patterns and matrix strategies where appropriate.
  • Validate on: triggers: ensure branch/path filters are present to avoid unnecessary runs.
  • Confirm workflows are documented, DRY, and maintainable.
  • Ensure agent-triggered workflows use workflow_dispatch with defined inputs.

Files:

  • .github/workflows/awesome-github-site.yml
**/*.md

📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)

**/*.md: Use one H1 (#) per file; keep heading levels sequential (never skip from H2 to H4)
Use fenced code blocks with explicit language tags (bash, yaml, markdown, etc.)
Keep links relative for in-repo files; verify they resolve before merging
Use 1. for ordered lists and - for unordered lists
Keep all wording in UK English (optimise, organisation, colour, behaviour, analyse)
Do not add a references: frontmatter field — use inline links or a footer section instead
Blank lines before and after headings, code blocks, and block-level elements
Maximum line length: 120 characters (soft limit; prefer wrapping at natural sentence boundaries)
All .md files in this repository should include YAML frontmatter with required fields: file_type, title, description, version, last_updated, owners, tags, status, stability, domain
Every image (![]()) must have descriptive alt text explaining the image's purpose, not its appearance. Empty alt (![ ]()) is valid only for purely decorative images
Link text must describe the destination — never use 'click here', 'read more', or bare URLs as visible text
Every table must have a header row (| Header |). Avoid merged cells
Use headings to communicate document structure, not for visual styling
Do not rely on colour alone to convey information in diagrams or callout blocks
Mermaid diagrams must include accTitle and accDescr attributes for accessibility
Specify language in frontmatter; use plain language, avoid jargon where possible

Do not add a references frontmatter field to files; use inline links or footer sections instead

Files:

  • website/README.md
**/*.{css,html,js,php,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Follow WordPress Coding Standards (CSS, HTML, JavaScript, PHP) and inline-documentation standards at all times

Files:

  • website/src/styles/global.css
🔇 Additional comments (6)
website/astro.config.mjs (1)

1-5: LGTM!

website/.gitignore (1)

1-3: LGTM!

website/public/llms.txt (1)

1-22: LGTM!

website/src/layouts/BaseLayout.astro (1)

1-48: LGTM!

website/src/pages/index.astro (1)

1-68: LGTM!

website/src/pages/references.astro (1)

1-51: LGTM!

Comment thread .github/workflows/awesome-github-site.yml
Comment thread website/README.md
Comment thread website/src/pages/why-this-exists.astro Outdated
Comment thread website/src/styles/global.css
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

🔍 Reviewer Summary for PR #755

CI Status:success
Files changed: 25
Risk Distribution: 1 critical, 9 high, 6 medium, 9 low

Recommendations

  • ⚠️ 1 critical-risk file(s) modified (workflows, secrets)
  • ⚠️ Security-sensitive files modified (review carefully)

@ashleyshaw ashleyshaw dismissed coderabbitai[bot]’s stale review June 3, 2026 12:08

Addressed in subsequent commits; stale review state no longer applies.

@ashleyshaw ashleyshaw merged commit ea1489f into develop Jun 3, 2026
21 checks passed
@ashleyshaw ashleyshaw deleted the codex/awesome-github-implementation branch June 3, 2026 12:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:assets Assets (images, fonts, static files) area:ci Build and CI pipelines area:documentation Docs & guides lang:css Stylesheets (CSS/Sass/etc.) lang:js JavaScript/TypeScript lang:json JSON config/content 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.

1 participant