Generate typed REST APIs
from annotated Go structs
No reflection, no runtime magic — just plain Go files you can read, debug, and commit.
Code-first
The struct is the single source of truth. No separate schema files, no config YAML.
Generated, not reflected
goninja generate writes real .go files you commit. Errors show up at compile time, not in production.
Plain net/http
No framework lock-in for routing — generated code is a thin layer over the standard library.
Safe by default
Output schemas are always separate from your database model, so a sensitive field can’t leak into a response just because it exists on the struct.
Built to be extended
Override any generated method, hook into create/update/delete, plug in your own auth — all without touching generated files.
OpenAPI included
Every generated resource emits an OpenAPI 3.0 fragment from the same annotations, served through Swagger UI or ReDoc.