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
- Host: GitHub
- URL: https://github.com/aoc-gamers/connect-libraries
- Owner: AoC-Gamers
- Created: 2026-01-07T01:09:31.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-04-15T23:07:04.000Z (about 2 months ago)
- Last Synced: 2026-04-15T23:32:10.839Z (about 2 months ago)
- Topics: authentication, go, golang, internal-tools, jwt, microservices, middleware, nats, testing
- Language: Go
- Homepage:
- Size: 331 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Audit: audit/CHANGELOG.md
Awesome Lists containing this project
README
# Connect Libraries
[](https://github.com/AoC-Gamers/connect-libraries/actions/workflows/ci.yml)
[](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 |  |
| [authz](./authz/) | Sistema de autorización, roles y permisos (RBAC) |  |
| [errors](./errors/) | Manejo de errores estandarizado (RFC 7807) |  |
| [middleware](./middleware/) | Middlewares HTTP para framework Chi |  |
| [migrate](./migrate/) | Sistema de migraciones para PostgreSQL |  |
| [nats](./nats/) | Cliente NATS con soporte JetStream |  |
| [swagger](./swagger/) | Detección automática de Swagger/OpenAPI |  |
| [testhelpers](./testhelpers/) | Utilidades para testing y mocks |  |
## 🚀 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