Repolode
goadesign

goadesign/goa

Framework de Go basado en el diseño primero que genera servicios HTTP, gRPC y JSON-RPC, clientes y especificaciones OpenAPI/protobuf a partir de un único contrato en Go.

Estrellas
6,120
Forks
582
Issues abiertos
37
Último commit
hace 3 días

¿Qué es?

Goa permite describir tipos, operaciones y reglas de validación una sola vez mediante un DSL de Go. A partir de ese diseño, genera código de servidor y cliente para HTTP, gRPC y JSON-RPC, un cliente CLI, especificaciones OpenAPI y definiciones de Protocol Buffers. Todos los transportes llaman a la misma interfaz de servicio generada, por lo que la documentación de la API se mantiene sincronizada con el código.

Los desarrolladores escriben solo la lógica de negocio en sus propios archivos Go, fuera del directorio generado gen/. Al cambiar un campo o una regla de validación en el diseño y volver a generar el código, se actualizan juntos los handlers, los clientes, la validación y las especificaciones. El proyecto también ofrece una skill para agentes de programación que guía los cambios de diseño, la generación y la verificación.

Goa también cuenta con un proyecto complementario, Goa-AI, para crear agentes de IA y servidores MCP que reutilizan las mismas definiciones de tipos.

Funciones clave

  • 01Genera transportes HTTP, gRPC y JSON-RPC a partir de un único diseño en Go
  • 02Genera automáticamente clientes Go, un cliente CLI y la validación de solicitudes
  • 03Produce especificaciones OpenAPI y definiciones de Protocol Buffers
  • 04Admite streaming mediante WebSocket, SSE y streams de gRPC
  • 05Mantiene el código de implementación separado del código generado

Casos de uso

  • Crear un microservicio en Go que deba exponer endpoints REST y gRPC
  • Mantener la documentación OpenAPI sincronizada con una API de Go sin escribirla a mano
  • Permitir que agentes de programación modifiquen una API editando un contrato tipado y volviendo a generar el código

Inicio rápido

  1. 1

    Instala el módulo Goa (requiere Go 1.27.3 o posterior)

    go get goa.design/goa/v3@latest
  2. 2

    Genera el código del servidor y del cliente a partir de tu diseño

    go run goa.design/goa/v3/cmd/goa gen hello/design
  3. 3

    Crea los archivos de la aplicación inicial

    go run goa.design/goa/v3/cmd/goa example hello/design
  4. 4

    Ejecuta el servicio en el puerto 8000

    go run ./cmd/hello --http-port=8000

Antes de usarlo

  • Requiere Go 1.27.3 o posterior.
  • Para usar gRPC o JSON-RPC, es necesario instalar el compilador de Protocol Buffer y los generadores de protobuf para Go. Si en la primera ejecución solo usas HTTP, no los necesitarás.

En colecciones

Temas

Preguntas frecuentes

¿Qué es goa?
Framework de Go basado en el diseño primero que genera servicios HTTP, gRPC y JSON-RPC, clientes y especificaciones OpenAPI/protobuf a partir de un único contrato en Go. Goa permite describir tipos, operaciones y reglas de validación una sola vez mediante un DSL de Go. A partir de ese diseño, genera código de servidor y cliente para HTTP, gRPC y JSON-RPC, un cliente CLI, especificaciones OpenAPI y definiciones de Protocol Buffers. Todos los transportes llaman a la misma interfaz de servicio generada, por lo que la documentación de la API se mantiene sincronizada con el código.
¿goa es gratuito? ¿Qué licencia tiene?
goa es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿goa sigue mantenido?
Mantenimiento activo. El último commit de goa fue el 3 nov 2026.
¿Para qué puedo usar goa?
Crear un microservicio en Go que deba exponer endpoints REST y gRPC Mantener la documentación OpenAPI sincronizada con una API de Go sin escribirla a mano Permitir que agentes de programación modifiquen una API editando un contrato tipado y volviendo a generar el código
¿Cómo se instala goa?
Instala el módulo Goa (requiere Go 1.27.3 o posterior): go get goa.design/goa/v3@latest Genera el código del servidor y del cliente a partir de tu diseño: go run goa.design/goa/v3/cmd/goa gen hello/design Crea los archivos de la aplicación inicial: go run goa.design/goa/v3/cmd/goa example hello/design Ejecuta el servicio en el puerto 8000: go run ./cmd/hello --http-port=8000
¿Dónde consigo goa?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/goadesign/goa

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados