Skip to content

About

Personal hub: every public repository and GitHub Pages site, rendered from the GitHub API.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

vardius.github.io

Personal hub for @vardius: the GitHub Pages sites and every public repository, rendered from the GitHub API.

Live at https://vardius.github.io/

How it works

  • index.html, assets/style.css, assets/app.js: a static page with no framework, no build step and no third-party scripts (no analytics, no ads).
  • .github/workflows/deploy.yml runs on every push, daily and on demand. It calls scripts/fetch-data.sh to snapshot the public repositories into data/, then deploys the site with GitHub Pages' Actions deployment.
  • If the snapshot is missing (local development, or Pages still deploying from the branch) the page falls back to the public GitHub API from the browser.
  • Repositories with GitHub Pages enabled are shown as "live sites", unless they are archived or have the no-showcase topic (gh repo edit OWNER/REPO --add-topic no-showcase). The snapshot asks the Pages API for each site's real address (custom domains included) and falls back to https://vardius.github.io/<repo>/. A repository's homepage field is only ever used as an extra "website" link. Domains listed in window.SITE.ignoreDomains are never linked to.
  • scripts/shoot-sites.mjs then screenshots every live site with the runner's Google Chrome into data/shots/, in light and dark mode, so each site card shows the real page as of the last deploy in this page's current theme.

Nothing needs to be uploaded when a project is added: repository artwork is generated from the name, and a site whose screenshot is missing (live API fallback, or the site failed to load) gets a drawn placeholder instead.

Listing a site from a private repository

A private repository's GitHub Pages site can be shown without exposing the repository itself. Two things switch it on:

  1. Add the showcase topic to that repository (gh repo edit OWNER/REPO --add-topic showcase, or the "About" gear on GitHub). Remove the topic, or archive the repository, to unlist it.
  2. Once: create a fine-grained personal access token with Metadata: Read-only and Pages: Read-only on all repositories, and save it as the SHOWCASE_TOKEN secret of this repository (Settings → Secrets and variables → Actions). Pages access is what lets the snapshot show custom domains instead of the github.io address.

The next snapshot lists the site with a "Private source" badge, showing only its name, description and language, with no link into the repository. Private repositories never appear in the repository grid or the public-repo counters.

Run locally

python3 -m http.server 4173

Then open http://127.0.0.1:4173/. To use a data snapshot instead of the live API:

OWNER=vardius ./scripts/fetch-data.sh

And to add the site screenshots (needs Google Chrome):

npm install --no-save --no-package-lock playwright-core@1.64.1 && node scripts/shoot-sites.mjs

Configure

The only site-specific settings are in window.SITE in index.html (owner, showName, ignoreDomains). Name and bio are read from the GitHub profile, so the page shows exactly what GitHub shows.

About

Personal hub: every public repository and GitHub Pages site, rendered from the GitHub API.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages