Sunstead trust scoring project
0

Configure Feed

Select the types of activity you want to include in your feed.

README.md

sunstead-web#

SvelteKit 5 UI for the Tangled trust scorer. Thin client over the FastAPI JSON endpoints (trust-api, :8003) — it never touches DuckDB. Surfaces:

  • /Triage queue: every open PR, searchable/sortable/filterable, each row expands to the full provenance (trust path, top factors, TreeSHAP model factors, Claude flags, content/slop risk, compliance block).
  • /dashboard — fast-lane & false-approval rates, score histogram, decision donut, and a force-directed vouch graph (/graph).
  • /leaderboard — contributors ranked by calibrated trust.
  • /backfill — live scrape progress (polls /backfill/status).

Run#

bun install
bun run dev            # http://localhost:5173 ; assumes the scorer on :8003
API_BASE=http://host:port bun run dev   # point at a different scorer

mprocs brings up the whole stack (scorer + this UI) from the repo root.

bun run buildnode build for the adapter-node production server (set API_BASE in its env).

Stack#

Svelte 5 runes · bits-ui · Lightning CSS (6-layer cascade in app.css) · unplugin-icons/lucide · svelte-sonner · zod (validates every API response) · better-result · adapter-node.

/api/* is a same-origin proxy (routes/api/[...path]) to the scorer, so there's no CORS and dev/prod fetch the same way.

Skipped from the house stack — not needed by a read-only dashboard, add when warranted: superforms/formsnap & sveltednd (no forms or DnD), paraglide (single locale), tanstack/table-core ($derived sort/filter/paginate covers thousands of rows; add table-core for column virtualization or faceting), layerchart (the published 1.x is Tailwind-coupled and renders axes invisible on dark — the two charts are hand-rolled SVG; revisit if charts need axes/tooltips/zoom).