A pure-static GitHub Pages app that logs consulting hours into private per-consultant GitHub data repos. Partner-branded (Sector Growth first), hosted by SapienEx.
Live app: https://sapienex-ai.github.io/hours-tracker/ (deployed after first push)
Design spec: docs/superpowers/specs/2026-04-11-hours-tracker-design.md
Implementation plan: docs/superpowers/plans/2026-04-11-hours-tracker-plan.md
Backlog: docs/superpowers/backlog.md
AI-native development guide: CLAUDE.md
npm install
npm run devOpens at http://localhost:5173/hours-tracker/
- Have a partner admin create your private data repo at
sapienEx-AI/hours-data-<partner>-<your-slug>. - Use
scripts/scaffold-data-repo.shto initialize it (seedocs/architecture/data-repo-scaffold.md). - Generate a fine-grained GitHub PAT scoped to your data repo (Contents: read + write).
- Open the live app, complete the first-run flow, paste your PAT.
All contributions must pass:
npm run typecheck
npm run lint
npm test108 tests across 20 suites, including property-based tests (fast-check) and golden-file regression on real March 2026 data.
See CLAUDE.md for the full development rules and invariants.
- Pure-static SPA — Vite + React 18 + TypeScript strict
- GitHub Pages hosting at project scope (
/hours-tracker/) - Fine-grained PAT auth — no backend, token in localStorage, blast radius scoped to one data repo
- All data as flat JSON in private per-consultant GitHub repos
- Integer math everywhere — cents and hundredths, custom ESLint rule (
local-rules/no-float-money) enforces - Partner-branded UI — theme loaded from
public/partners/<id>/partner.jsonat runtime - Three multi-agent review gates passed during construction (Gate A: calc, Gate B: UI, Gate C: March golden)