Repolode
goadesign

goadesign/goa

Framework Go com foco em design que gera serviços HTTP, gRPC e JSON-RPC, clientes e especificações OpenAPI/protobuf a partir de um único contrato em Go.

Estrelas
6,122
Forks
582
Issues abertas
37
Último commit
há 4 dias

O que é?

Com o Goa, você descreve tipos, operações e regras de validação uma única vez em uma DSL em Go. A partir desse design, ele gera código de servidor e cliente para HTTP, gRPC e JSON-RPC, um cliente CLI, especificações OpenAPI e definições Protocol Buffer. Todos os transportes chamam a mesma interface de serviço gerada, mantendo a documentação da API alinhada ao código.

Os desenvolvedores escrevem apenas a lógica de negócio em seus próprios arquivos Go, fora do diretório gerado gen/. Ao alterar um campo ou uma regra de validação no design e gerar novamente o código, handlers, clientes, validações e especificações são atualizados em conjunto. O projeto também oferece uma skill para agentes de programação, que orienta alterações no design, geração e verificação.

O Goa também tem um projeto complementar, o Goa-AI, para criar agentes de IA e servidores MCP que reutilizam as mesmas definições de tipos.

Recursos principais

  • 01Gera transportes HTTP, gRPC e JSON-RPC a partir de um único design em Go
  • 02Gera automaticamente clientes Go, um cliente CLI e validação de requisições
  • 03Gera especificações OpenAPI e definições Protocol Buffer
  • 04Oferece suporte a streaming via WebSocket, SSE e streams gRPC
  • 05Mantém o código de implementação separado do código gerado

Casos de uso

  • Criar um microsserviço Go que precisa expor endpoints REST e gRPC
  • Manter a documentação OpenAPI sincronizada com uma API em Go sem escrevê-la manualmente
  • Permitir que agentes de programação alterem uma API editando um contrato tipado e gerando o código novamente

Início rápido

  1. 1

    Instale o módulo Goa (requer Go 1.27.3 ou posterior)

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

    Gere o código do servidor e do cliente a partir do seu design

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

    Crie os arquivos iniciais do aplicativo

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

    Execute o serviço na porta 8000

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

Antes de usar

  • Requer Go 1.27.3 ou posterior.
  • O uso de gRPC ou JSON-RPC requer a instalação do compilador Protocol Buffer e dos geradores de protobuf para Go. Na primeira execução, usar somente HTTP dispensa essas instalações.

Em coleções

Tópicos

Perguntas frequentes

O que é goa?
Framework Go com foco em design que gera serviços HTTP, gRPC e JSON-RPC, clientes e especificações OpenAPI/protobuf a partir de um único contrato em Go. Com o Goa, você descreve tipos, operações e regras de validação uma única vez em uma DSL em Go. A partir desse design, ele gera código de servidor e cliente para HTTP, gRPC e JSON-RPC, um cliente CLI, especificações OpenAPI e definições Protocol Buffer. Todos os transportes chamam a mesma interface de serviço gerada, mantendo a documentação da API alinhada ao código.
goa é gratuito? Qual é a licença?
goa é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
goa ainda é mantido?
Manutenção ativa. O último commit de goa foi em 3 de nov. de 2026.
Para que posso usar goa?
Criar um microsserviço Go que precisa expor endpoints REST e gRPC Manter a documentação OpenAPI sincronizada com uma API em Go sem escrevê-la manualmente Permitir que agentes de programação alterem uma API editando um contrato tipado e gerando o código novamente
Como instalar goa?
Instale o módulo Goa (requer Go 1.27.3 ou posterior): go get goa.design/goa/v3@latest Gere o código do servidor e do cliente a partir do seu design: go run goa.design/goa/v3/cmd/goa gen hello/design Crie os arquivos iniciais do aplicativo: go run goa.design/goa/v3/cmd/goa example hello/design Execute o serviço na porta 8000: go run ./cmd/hello --http-port=8000
Onde consigo goa?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/goadesign/goa

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados