A single-page GitHub Pages site that lists all public repositories owned by @mrWheel.
GitHub Action (update-repos.yml)
│
▼ writes
repos.json ◄── committed to the repository
│
▼ fetched on page load
index.html ── renders repository cards in the browser
- No build step, bundler, or framework. The page is plain HTML + CSS + JavaScript.
- No GitHub API calls from the browser. All API calls are made inside the GitHub Action.
repos.jsonis the single data source for the landing page.
The workflow .github/workflows/update-repos.yml runs automatically and:
- Fetches all public repositories for
mrWheelvia the GitHub API (paginated). - For each repository, resolves GitHub Pages availability (
/repos/{owner}/{repo}/pages). - For each repository, detects GitBook documentation by scanning:
repo.homepagefor agitbook.ioorapp.gitbook.comURL,repo.descriptionfor the same patterns,- the repository README (fetched via
/repos/{owner}/{repo}/readme) for the same patterns.
- Writes the result to
repos.jsonwith the fields:name,description,html_url,homepage,language,updated_at,stargazers_count,has_pages,pages_url,has_gitbook,gitbook_url. - Commits and pushes
repos.jsonif it changed.
Repositories without a README, homepage, or description are handled gracefully: missing fields result
in has_gitbook: false and gitbook_url: "".
The workflow runs daily at 03:00 UTC (schedule: 0 3 * * *).
You can also trigger it manually at any time — see the next section.
- Open the repository on GitHub.
- Go to Actions → Update repositories data.
- Click Run workflow → Run workflow.
The workflow will regenerate repos.json and commit the result if anything changed.
<main class="page"> contains two sections:
-
Hero section (
<section class="hero">)- Intro text and CTA buttons.
- Two live statistics: public repository count and distinct language count.
-
Repositories section (
<section class="repos" id="repositories">)- A single flat tile grid (
#repo-list) showing all public repositories. - A sort control with two buttons: Last Updated (default, newest first) and Alphabetical (A–Z by name).
- A single flat tile grid (
All public repositories are displayed together in one grid — there is no grouping by GitHub Pages or GitBook status.
Default sort order is Last Updated (newest first, using updated_at from repos.json).
Click Alphabetical to sort A–Z by repository name. The active sort button is highlighted.
Each repository card shows:
- Repository name and description.
- Metadata pills:
Pages,GitBook, language,Fork, star count, last-updated date (each shown only when applicable). - Action buttons (always open in a new tab):
- repository — links to the GitHub repository page (always present).
- pages — links to the GitHub Pages URL (shown only when
has_pagesis true). - gitbook — links to the GitBook URL (shown only when
has_gitbookis true).
Open index.html directly in a browser, or serve the repository root with any static file server:
python3 -m http.server 8080The following IDs must not be renamed without also updating the JavaScript:
repo-list,
repo-status, repo-count, language-count,
sort-updated, sort-alpha