Repolode
evrone

evrone/go-clean-template

Plantilla de Clean Architecture para servicios Go que muestra cómo organizar el código con transportes REST, gRPC, AMQP RPC y NATS RPC.

Estrellas
7,708
Forks
665
Issues abiertos
3
Último commit
hace 11 días

¿Qué es?

go-clean-template es una base para crear microservicios Go que siguen los principios de Clean Architecture. Separa la lógica de negocio de la infraestructura, como las bases de datos, los frameworks web y los brokers de mensajes, para que los casos de uso principales dependan únicamente de interfaces y de la biblioteca estándar. El proyecto busca mantener los servicios organizados a medida que crecen.

La plantilla incluye tres dominios de ejemplo: autenticación de usuarios con JWT, gestión de tareas con transiciones de estado y traducción de texto con seguimiento del historial. Cada dominio se ofrece mediante cuatro transportes: una API REST basada en Fiber, gRPC y RPC sobre RabbitMQ (AMQP) y NATS. La inyección de dependencias se realiza mediante constructores New, y el repositorio incluye una configuración de Docker Compose para Postgres, RabbitMQ, NATS y Jaeger.

El proyecto también aborda la observabilidad con trazas de OpenTelemetry que propagan el contexto a través de los cuatro transportes, además de métricas de Prometheus, documentación de Swagger, pruebas de integración y migraciones de bases de datos.

Funciones clave

  • 01Arquitectura Clean Architecture por capas con inyección de dependencias mediante constructores New
  • 02API REST basada en Fiber, con documentación de Swagger generada por swag
  • 03Servicios gRPC definidos con protobuf
  • 04Servidores RPC sobre RabbitMQ (AMQP) y NATS request-reply
  • 05Trazas de OpenTelemetry y métricas de Prometheus
  • 06Stack de Docker Compose con Postgres, RabbitMQ, NATS y Jaeger

Casos de uso

  • Iniciar un microservicio Go con una estructura de proyecto coherente
  • Aprender a separar la lógica de negocio del transporte y el almacenamiento en Go
  • Crear un servicio que exponga la misma lógica mediante REST, gRPC y colas de mensajes

Inicio rápido

  1. 1

    Inicia Postgres, RabbitMQ y NATS con Docker Compose

    make compose-up
  2. 2

    Ejecuta la aplicación con las migraciones

    make run

Antes de usarlo

  • El desarrollo local necesita Docker Compose para ejecutar Postgres, RabbitMQ y NATS.

Temas

Preguntas frecuentes

¿Qué es go-clean-template?
Plantilla de Clean Architecture para servicios Go que muestra cómo organizar el código con transportes REST, gRPC, AMQP RPC y NATS RPC. go-clean-template es una base para crear microservicios Go que siguen los principios de Clean Architecture. Separa la lógica de negocio de la infraestructura, como las bases de datos, los frameworks web y los brokers de mensajes, para que los casos de uso principales dependan únicamente de interfaces y de la biblioteca estándar. El proyecto busca mantener los servicios organizados a medida que crecen.
¿go-clean-template es gratuito? ¿Qué licencia tiene?
go-clean-template es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿go-clean-template sigue mantenido?
Mantenimiento activo. El último commit de go-clean-template fue el 11 oct 2026.
¿Para qué puedo usar go-clean-template?
Iniciar un microservicio Go con una estructura de proyecto coherente Aprender a separar la lógica de negocio del transporte y el almacenamiento en Go Crear un servicio que exponga la misma lógica mediante REST, gRPC y colas de mensajes
¿Cómo se instala go-clean-template?
Inicia Postgres, RabbitMQ y NATS con Docker Compose: make compose-up Ejecuta la aplicación con las migraciones: make run
¿Dónde consigo go-clean-template?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/evrone/go-clean-template

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados