The dashboard is a static Vite/React site deployed by GitHub Actions
(.github/workflows/pages.yml). There is no
server and no gh-pages branch — the build is uploaded as a Pages artifact and
deployed with actions/deploy-pages.
| Setting (Settings → …) | Value |
|---|---|
| Pages → Build and deployment → Source | GitHub Actions |
| Actions → General → Workflow permissions | Read and write |
| Actions → General | Allow Actions (enabled) |
Read and write is required because sync-stars.yml commits the refreshed
stars.json back to the repo with the built-in GITHUB_TOKEN.
pages.yml has a guard job: if stars.json + dataset-meta.json are not
committed yet, it logs a warning and skips the build as a green no-op — it does
not fail. So on a fresh template the order is:
1. Add STAR_SYNC_TOKEN + set Pages source = GitHub Actions.
2. Actions → "Sync stars" → Run workflow (manual dispatch).
The exporter commits stars.json + dataset-meta.json, then calls the deploy.
3. Pages builds and deploys. The Pages URL appears in the deploy job summary.
The base path is derived from GITHUB_REPOSITORY at build time, so the site
works at https://<user>.github.io/<repo>/ with no config.
Pages re-runs on:
- a scheduled / manual
Sync starsrun that changes the dataset, and - a push to
maintouchingstars.json,dataset-meta.json,ai-annotations*.json,apps/dashboard/**,packages/**, orpages.yml.
pnpm setup:doctor --local # confirms workflows present + dataset absent-or-validIf the dashboard 404s on stars.json locally, that just means no dataset exists
yet — run the exporter (or Sync stars) first. Troubleshooting:
troubleshooting.md.