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:
parent
c935071bd1
commit
7c16e6ea4f
1 changed files with 28 additions and 4 deletions
32
README.md
32
README.md
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue