Repolode
evrone

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. 1

    Inicie Postgres, RabbitMQ e NATS com Docker Compose

    make compose-up
  2. 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