A dashboard that keeps a team from missing PRs: what is open, whose move it is, and how long it has been waiting.
The vocabulary is in CONTEXT.md and the decisions are in docs/adr.
| Path | Package | What |
|---|---|---|
apps/api |
stalemate-api |
Sweeps the code host, derives every Tracked PR and serves the Snapshot. |
apps/ui |
stalemate-ui |
The dashboard. Talks to the API under /api. |
packages/openapi |
stalemate-openapi |
The contract between them, with its generated types committed in index.d.ts. |
pnpm install
pnpm build
pnpm test
pnpm lintRun the API with pnpm --filter stalemate-api dev and the UI with pnpm --filter stalemate-ui dev.
The UI's dev server proxies /api to http://localhost:8080; set API_URL to point it elsewhere.
The API reads its config offline from apps/api/config. Put local overrides, such as a githubToken, in
apps/api/config/local.json, which git ignores. By default it serves canned fixtures. To sweep GitHub locally with your own
token, set "provider": "github" there, or run it with PROVIDER=github GITHUB_TOKEN=$(gh auth token).
The GitHub provider's tests replay a real sweep recorded in apps/api/tests/fixtures/github/recording. To record it again, run
GITHUB_TOKEN=$(gh auth token) pnpm --filter stalemate-api record:github; the script explains what it records and scrubs.
After changing packages/openapi/openapi3.yaml, regenerate its types with
pnpm --filter stalemate-openapi generate:openapi-types.
release-please keeps one version for the whole repo and tags releases vX.Y.Z. A tag builds infra/stalemate-api and
infra/stalemate-ui from docker/ and pushes the umbrella chart stalemate from helm/, which bundles the API's chart from
apps/api/helm and the common nginx chart as ui. The chart needs the GitHub App's id, installation id and PEM private key
under api.githubApp, the key either inline as privateKey or in a Secret created outside the chart, named by existingSecret.
The workflows need the repo secrets ACR_URL, ACR_PUSH_USER and ACR_PUSH_TOKEN for the registry, and GH_PAT so
release-please's tags trigger the build.
To check the chart locally, after helm registry login to the registry:
helm dependency build apps/api/helm
helm dependency update helm
helm lint helm -f helm/test-values.yaml
helm template stalemate helm -f helm/test-values.yaml