Project layout
cmd/openfanta/ CLI: serve, ingest, recompute, migrate, settingsinternal/domain/ Points (integer hundredths), MatchFacts, PlayerLineinternal/settings/ pure: league settings document, schema, canonical JSON, diffinternal/timeline/ pure: minutes, goals conceded on the pitch, per-player linesinternal/engine/ pure: voto + bonus/malus → fantavoto, with breakdowninternal/voto/ voto sources (provider-rating)internal/provider/ provider contract, resilient HTTP client, Sportmonksinternal/ingest/ fetch → store → parse → compute → recordinternal/store/ Postgres: migrations, sqlc queriesinternal/api/ generated server + handlersapi/openapi.yaml API contractGenerated code (internal/store/db, internal/api/gen.go) is committed. After changing SQL or
the spec, run make gen.