Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Plantilla base para proyectos en Go con Gin y GORM. Incluye estructura modular, configuración inicial de rutas, controladores, servicios y conexión a base de datos. Ideal como punto de partida para futuros desarrollos backend en Go con buenas prácticas y arquitectura escalable.

Notifications You must be signed in to change notification settings

AlejoCarobolante/GORM-Template

Repository files navigation

🏗️ Clean Architecture (Go + GORM + Gin)

Este documento describe la arquitectura de capas utilizada en el proyecto, siguiendo los principios de Clean Architecture (Arquitectura Limpia).

El principio fundamental es la Regla de Dependencia:

Las dependencias siempre deben apuntar hacia el interior.
Las capas exteriores dependen de las capas interiores, pero nunca al revés.


I. Capas del Sistema

1. 🧠 Capa de Dominio (domain)

Aspecto Descripción
Rol Contiene las reglas de negocio, las estructuras de datos principales y los contratos (interfaces) que definen las interacciones. Es el núcleo puro de la aplicación.
Contenido Entity1 (modelo de la entidad), Entity1Repository (interfaz que define el CRUD: Create, Fetch, Update, Delete).
Dependencias Ninguna dependencia de otras capas o frameworks.

2. 💡 Capa de Casos de Uso (usecase)

Aspecto Descripción
Rol Contiene la lógica de aplicación específica y orquesta el flujo de datos. Implementa los contratos definidos en el Dominio.
Contenido Entity1UseCase (implementación de la interfaz domain.Entity1Repository).
Dependencias Depende del Dominio (para usar las entidades).
Nota Importante: En esta implementación, también accede directamente al framework de persistencia (bootstrap.DB / GORM), lo cual es una simplificación común, pero técnicamente coloca la implementación del repositorio en esta capa.

3. 🌐 Capa de Adaptadores (controller y route)

Aspecto Descripción
Rol Adapta la entrada y salida de la aplicación al mundo exterior (HTTP/JSON).
Contenido Entity1Controller (maneja el binding de Gin, validación básica y formato de respuesta HTTP).
route.go (define los endpoints Gin e inyecta las dependencias).
Dependencias Depende del Dominio (para la interfaz) y de la capa de Casos de Uso (para la implementación concreta a inyectar).

Diagrama de Capas de Clean Architecture


II. Flujo Típico de una Petición (Ejemplo: Create)

Este es un resumen del recorrido de una petición HTTP a través de las capas:

Paso Capa de Origen Acción Principal Dependencia/Llamada
1. Route Mapea el método y el path (e.g., POST /entity1) al handler del Controller. Inyección de Entity1UseCase en Entity1Controller.
2. Controller Recibe la petición. Hace binding del JSON a domain.Entity1 y realiza validaciones de entrada. Depende del Dominio (estructuras/tipos).
3. Controller Llama al método Create de la interfaz Entity1Repository. Llama al método de la interfaz del Dominio.
4. UseCase Se ejecuta la implementación de Create dentro de Entity1UseCase. Depende del UseCase (lógica de aplicación).
5. UseCase Ejecuta la operación de persistencia utilizando la conexión directa a la base de datos (bootstrap.DB y GORM). Depende del Framework/DB (capa externa).
6. Controller Recibe el resultado/error del UseCase. Formatea y envía la respuesta HTTP (e.g., Status 200 OK o 500 Internal Server Error). Retorno al cliente.

About

Plantilla base para proyectos en Go con Gin y GORM. Incluye estructura modular, configuración inicial de rutas, controladores, servicios y conexión a base de datos. Ideal como punto de partida para futuros desarrollos backend en Go con buenas prácticas y arquitectura escalable.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •