An open API service indexing awesome lists of open source software.

https://github.com/aoc-gamers/connect-libraries

Librerías compartidas y reutilizables de Go para el ecosistema de microservicios Connect Backend
https://github.com/aoc-gamers/connect-libraries

authentication go golang internal-tools jwt microservices middleware nats testing

Last synced: about 2 months ago
JSON representation

Librerías compartidas y reutilizables de Go para el ecosistema de microservicios Connect Backend

Awesome Lists containing this project

README

          

# Connect Libraries

[![CI](https://github.com/AoC-Gamers/connect-libraries/actions/workflows/ci.yml/badge.svg)](https://github.com/AoC-Gamers/connect-libraries/actions/workflows/ci.yml)
[![Release](https://github.com/AoC-Gamers/connect-libraries/actions/workflows/release.yml/badge.svg)](https://github.com/AoC-Gamers/connect-libraries/actions/workflows/release.yml)

🔧 Librerías compartidas y reutilizables para el ecosistema de microservicios Connect Backend.

## ✅ Prerrequisitos

Antes de ejecutar los comandos `make` del repositorio:

- Go `1.24.x`
- `golangci-lint` `v2.10.1`
- `gosec` `v2.23.0`
- `make`

Puedes validar versiones con:

```bash
go version
golangci-lint version
gosec -version
make --version
```

## 📦 Librerías Disponibles

| Librería | Descripción | Versión |
|----------|-------------|---------|
| [apikey](./apikey/) | Autenticación y validación de API Keys | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [authz](./authz/) | Sistema de autorización, roles y permisos (RBAC) | ![Version](https://img.shields.io/badge/version-2.0.3-blue) |
| [errors](./errors/) | Manejo de errores estandarizado (RFC 7807) | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [middleware](./middleware/) | Middlewares HTTP para framework Chi | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [migrate](./migrate/) | Sistema de migraciones para PostgreSQL | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [nats](./nats/) | Cliente NATS con soporte JetStream | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [swagger](./swagger/) | Detección automática de Swagger/OpenAPI | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |
| [testhelpers](./testhelpers/) | Utilidades para testing y mocks | ![Version](https://img.shields.io/badge/version-1.0.0-blue) |

## 🚀 Instalación

### Usar en tus proyectos

```go
// go.mod
module github.com/AoC-Gamers/Connect-Auth

require (
github.com/AoC-Gamers/connect-libraries/authz/v2 v2.0.3
github.com/AoC-Gamers/connect-libraries/errors v1.0.0
github.com/AoC-Gamers/connect-libraries/middleware v1.0.0
)
```

```bash
go get github.com/AoC-Gamers/connect-libraries/authz/v2@v2.0.3
go mod tidy
```

## 📝 Versionado

Este repositorio usa **versionado independiente por biblioteca** siguiendo Semantic Versioning.

Cada biblioteca tiene su propio ciclo de versiones con tags en el formato `/v`:

- `apikey/v1.0.0`, `apikey/v1.0.1`, `apikey/v1.1.0`, ...
- `authz/v1.0.0`, `authz/v1.0.1`, ...
- `errors/v1.0.0`, `errors/v1.0.1`, `errors/v1.1.0`, ...
- etc.

### Cadena de dependencia para releases

Para evitar romper el flujo de integración en los servicios, aplica esta guía antes de publicar versiones.

#### Bibliotecas independientes (entre si)

Estas bibliotecas no tienen `require` internos entre módulos de `Connect-Libraries`, por lo que se pueden versionar de forma independiente:

- `apikey`
- `audit`
- `authz/v2`
- `errors`
- `middleware/v2`
- `migrate`
- `nats`
- `swagger`
- `testhelpers`

#### Bibliotecas dependientes (de adopcion en servicios)

Aunque sean independientes dentro de este repo, sí dependen de adopción en `Connect-Auth`, `Connect-Core`, `Connect-Lobby` y `Connect-RT`:

- Cambios `major` (ej. `middleware/v2`) requieren actualizar `go.mod` e imports en consumidores.
- Cambios `minor/patch` requieren solo actualización de versión en `go.mod` de consumidores.

#### Orden recomendado de publicacion

1. Publicar primero bibliotecas sin breaking changes (`patch`/`minor`).
2. Publicar bibliotecas con breaking changes (`major`) en release separado.
3. Esperar disponibilidad del tag en el proxy de Go.
4. Actualizar consumidores por fases (un servicio a la vez), validar CI y luego continuar.

#### Regla obligatoria para `major` en Go

Cuando una biblioteca pasa de `v1` a `v2+`, debe incluir el sufijo en el módulo e imports:

- `module github.com/AoC-Gamers/connect-libraries//v2`
- Imports: `github.com/AoC-Gamers/connect-libraries//v2/...`

### Crear nueva versión de una biblioteca

```bash
# Ejemplo: Nueva versión de authz/v2
cd authz
# Actualizar CHANGELOG.md con los cambios
git add .
git commit -m "feat(authz): nueva funcionalidad"
git tag authz/v2.0.3
git push origin authz/v2.0.3
```

### Actualizar en proyectos

```bash
# Actualizar a una versión específica
go get github.com/AoC-Gamers/connect-libraries/authz/v2@v2.0.3

# O usar la última versión
go get -u github.com/AoC-Gamers/connect-libraries/authz/v2

go mod tidy
```

### Consultar versiones disponibles

```bash
# Ver todas las versiones de una biblioteca
go list -m -versions github.com/AoC-Gamers/connect-libraries/authz/v2

# Ver tags en GitHub
git ls-remote --tags origin | grep authz
```

## 🏗️ Estructura del Repositorio

```
connect-libraries/
├── apikey/ # Autenticación API Keys
│ ├── CHANGELOG.md # Historial de versiones
│ └── ...
├── authz/ # Autorización, roles y permisos
│ ├── CHANGELOG.md
│ └── ...
├── errors/ # Manejo de errores
│ ├── CHANGELOG.md
│ └── ...
├── middleware/ # Middlewares HTTP
│ ├── CHANGELOG.md
│ └── ...
├── migrate/ # Migraciones PostgreSQL
│ ├── CHANGELOG.md
│ └── ...
├── nats/ # Cliente NATS/JetStream
│ ├── CHANGELOG.md
│ └── ...
├── testhelpers/ # Utilidades de testing
│ ├── CHANGELOG.md
│ └── ...
├── .gitignore
└── README.md
```

> **Nota**: Cada biblioteca mantiene su propio CHANGELOG.md con su historial de versiones independiente.

## 📊 Reportes en subdirectorio

Como en los backends, ahora puedes generar reportes en un subdirectorio dedicado desde la raíz de `Connect-Libraries`:

```bash
# Solo tests (logs por librería)
make test

# Solo lint (genera lint.json y lint.log por librería)
make lint

# Solo seguridad (genera gosec.json y gosec.log por librería)
make gosec

# Todo junto
make report

# Limpiar reportes por librería
make clear
```

Salida esperada (por librería):

```text
apikey/reports/
test.log
lint.json
lint.log
gosec.log

authz/reports/
errors/reports/
...
```

## 📄 Licencia

AoC Gamers © 2026