The public site for FedCourtsAI. Static, built with Astro, hosted on Cloudflare Pages.
- Content is Markdown/MDX under
src/pages/. Edit it in the GitHub UI, open a PR, and Cloudflare Pages attaches a preview URL to the branch. - Data is never hand-edited.
scripts/fetch-ledger.mjsruns before every build (prebuild), downloads thefedcourtsairepo tarball, counts what is indata/cases, copies the committedmetrics/roll-ups, and writessrc/data/ledger.json(gitignored). Components read from that file. - Freshness comes from
.github/workflows/rebuild.yml, which calls the Cloudflare deploy hook daily. It never commits here.
| Component | What it renders |
|---|---|
<Stats /> |
The headline counters with a ledger stamp |
<LedgerStat key="…" label="…" note="…" /> |
One figure from ledger.counts (events_open, events_resolved, events_with_predictions, predictions, predictions_frozen, evaluations, leaderboard_events_scored, leaderboard_predictors_ranked) |
<LedgerTable limit={n} onlyOpen onlyResolved /> |
The ledger table, newest first |
<Stamp /> |
"ledger <sha> · <time>" pointing at the exact commit read |
Import them at the top of a page: import Stats from "../components/Stats.astro";
- Create the repo (public), push this tree, protect
main(require PR, block force-push and deletion). - Cloudflare Pages → Create → connect to Git → this repo. Framework preset Astro, build command
npm run build, output directorydist, environment variableNODE_VERSION=22. Set the production branch tomain; preview deployments for all other branches. - In the Pages project, Settings → Builds → Deploy hooks → Add. Copy the URL into a repo secret named
CLOUDFLARE_DEPLOY_HOOK_URL. - Add the custom domain
fedcourts.ai(andwwwredirect) in Pages. - Cloudflare Web Analytics: enable it for the site and paste the beacon
<script>intosrc/layouts/Base.astrowhere the comment marks the spot.
npm install
npm run build # runs the fetch first
npm run previewnpm run dev needs src/data/ledger.json to exist; run npm run fetch once first.