Goa is a design-first Go framework that generates server and client code, documentation, and request validation from a single declarative domain-specific language (DSL). At its core, it provides a Go DSL for defining API endpoints, data types, and error models, which compiles into fully functional HTTP and gRPC server stubs, client packages, and OpenAPI specifications.
The framework distinguishes itself through its plugin-extensible code generation pipeline, allowing custom code generation steps, middleware, or transport layers to be added via plugins. It supports multiple transport protocols from the same design definition, enabling HTTP, gRPC, and WebSocket communication without code duplication. Automatic request validation checks incoming payloads against the DSL-defined schema before they reach handler logic, ensuring data integrity without manual validation code.
Goa automatically generates and serves OpenAPI 2.0 and 3.0 documentation directly from the API design, keeping documentation synchronized with implementation. The framework produces ready-to-use client libraries from the same design definition used for server code, maintaining consistency across the entire API surface.