spreadlab/README.md
Justin Visser a57e729c10 dev: one-command local stack via dev.sh
Starts the Go API and the Vite dev server as background jobs; 'wait -n'
returns when the first one exits and the EXIT trap kills the rest, so
one Ctrl-C (or either server crashing) stops everything. Installs
web/node_modules on first run. Verified: both ports respond, SIGINT
leaves no orphan processes.
2026-06-10 13:57:35 +02:00

45 lines
1.3 KiB
Markdown

# 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
One command (installs frontend deps on first run, Ctrl-C stops everything):
```sh
./dev.sh
```
Or manually, in 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.