Static activity dashboard for a set of GitHub, GitLab, 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, and plain git remotes (e.g. cgit hosts like git.zx2c4.com) are wired up. The plan is to also pull from Gitea and 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 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: git
url: https://git.zx2c4.com/wireguard-toolsPlain 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.