Generator for the OpenAPI 3.1 contract. The published artefacts
(openapi.yaml and the Scalar viewer index.html) live in
../docs/ because GitHub Pages deploys from that folder.
generate.sh— regeneratesdocs/openapi.yamlfromservices/apiand validates it with@redocly/cli.
The spec itself is docs/openapi.yaml (generated from Rust; do not edit by hand) and the renderer is docs/index.html.
openapi/generate.shEquivalent without the wrapper:
cargo run -p dodex-api --bin gen-openapi -- --out docs/openapi.yaml
npx -y @redocly/cli@latest lint docs/openapi.yamlCommit the updated docs/openapi.yaml together with the handler or DTO change. CI re-runs the generator and fails if the committed spec drifted from the Rust source — see the openapi-drift job in .github/workflows/pr-tests.yml.
python3 -m http.server -d docs 8080Then open http://localhost:8080/. Any static file server pointed at docs/ works.
.github/workflows/pages.yml deploys docs/ to GitHub Pages on every push to dev that touches docs/**. The live URL appears in the workflow's Deploy step output.
One-time setup in the repo: Settings → Pages → Build and deployment → Source = GitHub Actions.