Static activity dashboard for a set of GitHub, GitLab, Forgejo, and plain
git repos. Renders commits, PRs, issues, and releases as a
git log --oneline-style timeline.
Live at heartbeat.opensats.org
A build-time fetcher pulls activity data and writes public/data/events.json.
The browser never talks to GitHub or GitLab directly, so visitors don't burn
any rate-limit budget.
Today GitHub, public GitLab, Forgejo/Gitea instances (e.g. codeberg.org or git.rust-bitcoin.org), and plain git remotes (e.g. cgit hosts like git.zx2c4.com) are wired up. The plan is to also pull from nostr-native hosts like gitworkshop.dev.
Requires Node 22+.
npm install
export GITHUB_TOKEN=ghp_yourtoken # any PAT; only needed for GitHub repos
npm run fetch # writes public/data/events.json
npm run devPublic GitLab and Forgejo repos are fetched without auth.
Each repos*.yml file at the project root lists tracked repos; all matching
files are merged and deduplicated.
repos:
- owner/repo-1
- owner/repo-2
- provider: gitlab
repo: group/project
# host: gitlab.com
- provider: forgejo
repo: owner/repo
# host: codeberg.org
- provider: git
url: https://git.zx2c4.com/wireguard-toolsForgejo (and Gitea) instances are queried via their REST API; commits, PRs, issues, and releases all show up, same as GitHub.
Plain git repos are fetched with a shallow git clone, so only commits and
tags show up (there are no PRs or issues on a bare remote). Event links use
cgit-style URLs (<url>/commit/?id=<hash>).
Knobs (time window, page sizes) live at the top of
scripts/fetch.ts.
Built for Vercel. Set GITHUB_TOKEN as an env var when GitHub repos are
tracked; vercel-build runs npm run fetch && npm run build. For periodic
refreshes, save a Vercel Deploy Hook URL as the VERCEL_DEPLOY_HOOK_URL repo
secret and the included refresh.yml
workflow pings it every 6 hours.