Agent-based dashboard: how a deepfake spreads through a school network, and where a limited education budget actually helps. Illustrative, not validated.
Find a file
Justin Visser 7c16e6ea4f docs: development workflow in README
Two-terminal dev loop (go run + vite proxy), the full check matrix,
and the regenerate-types rule: web/src/types/ is generated from the
Go structs and must never be edited by hand.
2026-06-10 13:47:21 +02:00
cmd/spreadlab api: JSON API over the engine; server mode in cmd/spreadlab 2026-06-10 13:03:12 +02:00
internal web: parity page renders the three-scenario comparison from live data 2026-06-10 13:47:01 +02:00
web web: parity page renders the three-scenario comparison from live data 2026-06-10 13:47:01 +02:00
.gitignore batman 2026-06-10 11:57:10 +02:00
generate.go types: generate TypeScript from engine structs with tygo 2026-06-10 12:58:13 +02:00
go.mod types: generate TypeScript from engine structs with tygo 2026-06-10 12:58:13 +02:00
go.sum types: generate TypeScript from engine structs with tygo 2026-06-10 12:58:13 +02:00
LICENSE batman 2026-06-10 11:57:10 +02:00
README.md docs: development workflow in README 2026-06-10 13:47:21 +02:00
tygo.yaml api: JSON API over the engine; server mode in cmd/spreadlab 2026-06-10 13:03:12 +02:00

spreadlab

Self-hosted dashboard that runs an agent-based deepfake-spread model live: change the levers, watch the spread, and (later) search for the best intervention under a budget. Output is illustrative, not validated.

Status: milestone 2, thin API + parity page done.

Layout

  • internal/engine/ - the pure simulation engine (no web dependencies)
  • internal/api/ - thin JSON API over the engine
  • cmd/spreadlab/ - the server binary (-table prints a CLI comparison)
  • web/ - Vue 3 + TypeScript frontend (Vite)
  • web/src/types/ - TypeScript types GENERATED from the Go structs; never edit by hand, regenerate with go generate ./...

Development

Two terminals:

go run ./cmd/spreadlab        # API on localhost:8080
cd web && npm run dev         # Vite dev server, proxies /api to :8080

Checks:

go test ./...                              # engine + API tests
golangci-lint run ./...                    # Go linter
go test -bench=. -benchmem ./internal/engine/   # benchmark baseline
cd web && npm run test:unit && npm run lint && npm run type-check

After changing Config, Result, or the API response types, run go generate ./... and commit the regenerated files in web/src/types/.

MIT licensed.