Skip to content

OpenSats/heartbeat

Repository files navigation

heartbeat

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.

Develop

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 dev

Public GitLab repos are fetched without auth.

Configure

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-tools

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.

Deploy

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.

About

OpenSats grantees. Past 90 days.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors