Jose Luis Montañes Ojados 11831f905b initial commit
2026-01-28 14:45:06 +01:00
2026-01-28 14:45:06 +01:00

🛡️ EnvGuard (Integration Lock Manager)

Stop asking "Who is touching the Payment Service?" in Slack.

EnvGuard es una herramienta TUI (Terminal User Interface) escrita en Go para gestionar la concurrencia y evitar race conditions en nuestro entorno de integración. Permite visualizar, reservar y liberar microservicios en tiempo real sin salir de la terminal.

📸 Preview

Así es como se ve envguard cuando lo ejecutas:

┌────────────────────────────────────────────────────────────────┐
│  🛡️  ENV-GUARD v1.0  |  Conectado como: @dev_actual            │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  SERVICIO          ESTADO       USUARIO       TIEMPO           │
│  ────────────────  ──────────   ───────────   ──────────────   │
│  auth-service      🟢 LIBRE     --            --               │
│> payments-api      🔴 LOCKED    @carlos       Hace 12m         │
│  user-db           🔴 LOCKED    @sofia        Hace 03m         │
│  notifications     🟢 LIBRE     --            --               │
│  front-web         🔴 LOCKED    @tu (YO)      Hace 10s         │
│                                                                │
├────────────────────────────────────────────────────────────────┤
│  [↑/↓] Navegar   [Enter] Reservar/Liberar   [Q] Salir          │
└────────────────────────────────────────────────────────────────┘

🚀 Cómo funciona

El sistema consta de dos partes:

  1. Server (cmd/server): Una API ligera que mantiene el estado de los bloqueos en memoria (Source of Truth).
  2. CLI (cmd/cli): El cliente TUI desarrollado con Bubble Tea que consumen los desarrolladores.

Flujo de Trabajo

  1. Abres la terminal y ejecutas envguard.
  2. Ves que payments-api está libre.
  3. Pulsas Enter sobre él.
  4. El servidor registra el bloqueo a tu nombre.
  5. Tus compañeros ven instantáneamente (polling) que tú lo estás usando.

🛠️ Desarrollo y Setup Local

Sigue estos pasos para arrancar el entorno de desarrollo:

Prerrequisitos

  • Go 1.21+

1. Clonar el repositorio

git clone https://github.com/tu-org/envguard.git
cd envguard

2. Arrancar el Servidor

En una terminal separada:

go run cmd/server/main.go
# Output: 🚦 Lock Server corriendo en :8080

3. Arrancar el Cliente (TUI)

En otra terminal:

# Simula ser un usuario específico mediante variable de entorno
USER=mi_usuario go run cmd/cli/main.go

📂 Estructura del Proyecto

.
├── cmd/
│   ├── server/      # Entry point del servidor
│   │   └── main.go
│   └── cli/         # Entry point del cliente TUI
│       └── main.go
├── internal/
│   ├── models/      # Estructuras compartidas (Lock, Service)
│   └── api/         # Cliente HTTP para llamar al servidor
├── go.mod
└── README.md

🎮 Controles

Tecla Acción
/ k Subir cursor
/ j Bajar cursor
Enter Bloquear (si está libre) o Liberar (si es tuyo)
r Forzar refresco de datos
q / Esc Salir

🔮 Roadmap

  • v1: Visualización de estado y bloqueo manual simple.
  • v1.1: Auto-refresco (Polling) cada 2 segundos.
  • v1.2: Notificaciones de escritorio cuando un servicio se libera.
  • v2: Wrapper de ejecución (envguard run services -- go test ./...).
  • v3: Integración con CI/CD (Bloqueo automático desde Jenkins/GitHub Actions).

¿Cómo contribuir?

  1. Haz fork del repo.
  2. Instala las dependencias de Charm: go get github.com/charmbracelet/bubbletea
  3. Crea una rama feature/nueva-cosa.
  4. Haz PR. ¡Evitemos race conditions también en el código! 😉

Description
No description provided
Readme 69 KiB
Languages
Go 93.3%
Makefile 6.7%