Go Clean Template is a Clean Architecture template for Golang services that demonstrates how to structure microservices to prevent spaghetti code and maintain extensibility as projects grow.
The template addresses the challenge of organizing Go services according to Clean Architecture principles, where business logic remains independent and decoupled from infrastructure concerns. It implements four transport mechanisms—REST API using Fiber, gRPC with protobuf, AMQP RPC via RabbitMQ, and NATS RPC—allowing the same business logic to be exposed through multiple interfaces. Three complete domains are included: User Authentication with JWT-based authorization, Task Management with status state machines, and Translation with history tracking. Each domain is fully functional across all four transports, demonstrating how to apply dependency injection and layered architecture in practice.
Developers should choose this template if they are building Go microservices and want a reference implementation of Clean Architecture principles. It suits teams that need to understand how to separate concerns between transport layers, business logic, and data access, or those starting a new service who want to avoid architectural mistakes early. The template is particularly valuable for projects that may need to support multiple communication protocols or that anticipate growth requiring maintainable code organization.
The project shows consistent maintenance with regular updates addressing both new features and dependency management. Development activity demonstrates attention to code quality through structured examples and comprehensive documentation across multiple languages. The template receives ongoing refinement to keep dependencies current and examples aligned with best practices in the Go ecosystem.