Sobre el proyecto

Goa es un framework centrado en el diseño para construir servicios en Go. En lugar de escribir handlers, clientes y especificaciones por separado, describes tipos, métodos, validación y errores una sola vez en un DSL basado en Go, y el generador produce el resto. Lo que el generador produce a partir de un único diseño: - Interfaces de servicio tipadas, endpoints, clientes y validación de límites - Handlers de servidor HTTP, codificadores/decodificadores, clientes Go, comandos CLI y especificaciones OpenAPI - Definiciones de Protocol Buffer para gRPC, adaptadores de servidor/cliente, serialización y comandos CLI - Código de servidor/cliente JSON-RPC, despacho de solicitudes, lotes y notificaciones - Soporte de streaming: WebSocket y SSE para HTTP, SSE para JSON-RPC y streams gRPC - Vistas de resultados nombradas con código para seleccionar y serializar formas de respuesta Una única definición de servicio puede exponer la misma operación a través de HTTP, gRPC y JSON-RPC. Los transportes generados comparten una interfaz de servicio, por lo que la lógica de negocio se implementa una vez en Go ordinario fuera del árbol generado. Cambiar el diseño y regenerar actualiza handlers, clientes, validación y especificaciones juntos, lo que reduce la divergencia entre código y documentación. El README también destaca un flujo de trabajo con agentes de codificación: una habilidad de "diseñador de servicios Goa" se puede instalar en un repositorio de aplicaciones para guiar cambios de diseño, generación, implementación y verificación. El proyecto señala a Goa-AI para construir agentes de IA y servidores MCP que reutilizan tipos de Goa y vinculan herramientas a métodos de servicio, con motores de ejecución en memoria o Temporal. Para comenzar se requiere Go 1.26 o posterior (se recomienda 1.27.1). Una guía de inicio rápido recorre la inicialización de un módulo, la escritura de un diseño, la ejecución del generador y comandos de ejemplo, y la llamada al servicio resultante. Para los tres transportes, se necesitan el compilador de Protocol Buffer y los generadores de protobuf para Go; una primera ejecución solo con HTTP puede omitir los bloques de gRPC y JSON-RPC. La documentación cubre la referencia del DSL, la generación de código, guías específicas de transporte, temas de producción como esquemas de seguridad e interceptores, y un conjunto de aplicaciones de ejemplo. El proyecto tiene licencia MIT y acepta contribuciones de la comunidad.