Framework web HTTP de alto desempenho para Go, com uma API semelhante à do Martini, feito para REST APIs, aplicações web e microsserviços.
evrone/go-clean-template
Template de Clean Architecture para serviços em Go, que mostra como organizar o código em transportes REST, gRPC, AMQP RPC e NATS RPC.
- Estrelas
- 7,708
- Forks
- 665
- Issues abertas
- 3
- Último commit
- há 11 dias
O que é?
go-clean-template é um ponto de partida para microsserviços em Go que seguem os princípios de Clean Architecture. Ele separa a lógica de negócios da infraestrutura, como bancos de dados, frameworks web e brokers de mensagens, para que os casos de uso principais dependam apenas de interfaces e da biblioteca padrão. O projeto foi pensado para manter o serviço organizado à medida que cresce.
O template inclui três domínios de exemplo: autenticação de usuários com JWT, gerenciamento de tarefas com transições de status e tradução de texto com histórico. Cada domínio é exposto por quatro transportes: uma API REST baseada em Fiber, gRPC e RPC via RabbitMQ (AMQP) e NATS. A injeção de dependências é feita por meio de construtores New, e o repositório inclui uma configuração do Docker Compose para Postgres, RabbitMQ, NATS e Jaeger.
O projeto também abrange observabilidade com tracing do OpenTelemetry, que propaga o contexto pelos quatro transportes, além de métricas do Prometheus, documentação Swagger, testes de integração e migrações de banco de dados.
Recursos principais
- 01Camadas de Clean Architecture com injeção de dependências via construtores New
- 02API REST baseada em Fiber, com documentação Swagger gerada pelo swag
- 03Serviços gRPC definidos com protobuf
- 04Servidores RPC via RabbitMQ (AMQP) e request-reply do NATS
- 05Tracing do OpenTelemetry e métricas do Prometheus
- 06Stack do Docker Compose com Postgres, RabbitMQ, NATS e Jaeger
Casos de uso
- Iniciar um novo microsserviço em Go com uma estrutura de projeto consistente
- Aprender a separar a lógica de negócios do transporte e do armazenamento em Go
- Criar um serviço que precisa expor a mesma lógica por REST, gRPC e filas de mensagens
Início rápido
- 1
Inicie Postgres, RabbitMQ e NATS com Docker Compose
make compose-up - 2
Execute o app com as migrações
make run
Antes de usar
- O desenvolvimento local precisa do Docker Compose para executar Postgres, RabbitMQ e NATS.
Tópicos
Perguntas frequentes
- O que é go-clean-template?
- Template de Clean Architecture para serviços em Go, que mostra como organizar o código em transportes REST, gRPC, AMQP RPC e NATS RPC. go-clean-template é um ponto de partida para microsserviços em Go que seguem os princípios de Clean Architecture. Ele separa a lógica de negócios da infraestrutura, como bancos de dados, frameworks web e brokers de mensagens, para que os casos de uso principais dependam apenas de interfaces e da biblioteca padrão. O projeto foi pensado para manter o serviço organizado à medida que cresce.
- go-clean-template é gratuito? Qual é a licença?
- go-clean-template é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- go-clean-template ainda é mantido?
- Manutenção ativa. O último commit de go-clean-template foi em 11 de out. de 2026.
- Para que posso usar go-clean-template?
- Iniciar um novo microsserviço em Go com uma estrutura de projeto consistente Aprender a separar a lógica de negócios do transporte e do armazenamento em Go Criar um serviço que precisa expor a mesma lógica por REST, gRPC e filas de mensagens
- Como instalar go-clean-template?
- Inicie Postgres, RabbitMQ e NATS com Docker Compose: make compose-up Execute o app com as migrações: make run
- Onde consigo go-clean-template?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/evrone/go-clean-template
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
GoWA é uma API REST do WhatsApp auto-hospedada, escrita em Go, com suporte a várias contas, webhooks, MCP e integração com Chatwoot.
Implementação em Go da camada de execução do Ethereum, que funciona como nó full ou archive e oferece acesso via JSON-RPC e ferramentas para desenvolvedores.
Implementação pura em Go da API WebRTC para criar conexões P2P de áudio, vídeo e dados em tempo real.
Um servidor moderno de aplicações PHP baseado no servidor web Caddy, com modo worker, Early Hints, HTTP/3 e HTTPS automático.
Um API Gateway declarativo, stateless e de alto desempenho, escrito em Go para rotear, agregar e proteger chamadas a microsserviços de back-end.