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.
This commit is contained in:
Justin Visser 2026-06-10 13:47:21 +02:00
parent c935071bd1
commit 7c16e6ea4f

View file

@ -4,12 +4,36 @@ 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 1, porting the simulation engine.
Status: milestone 2, thin API + parity page done.
Layout:
## Layout
- `internal/engine/` - the pure simulation engine (no web dependencies)
- `cmd/spreadlab/` - the server binary (milestone 2)
- `web/` - Vue 3 + TypeScript frontend (milestone 2+)
- `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:
```sh
go run ./cmd/spreadlab # API on localhost:8080
cd web && npm run dev # Vite dev server, proxies /api to :8080
```
Checks:
```sh
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.