From 11831f905b28355dd32878ad0218f1e1a36a320b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Monta=C3=B1es=20Ojados?= Date: Wed, 28 Jan 2026 14:45:06 +0100 Subject: [PATCH] initial commit --- readme.md | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..797c4b2 --- /dev/null +++ b/readme.md @@ -0,0 +1,126 @@ +# ๐Ÿ›ก๏ธ 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: + +```text +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๐Ÿ›ก๏ธ 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](https://github.com/charmbracelet/bubbletea) 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 + +```bash +git clone https://github.com/tu-org/envguard.git +cd envguard + +``` + +### 2. Arrancar el Servidor + +En una terminal separada: + +```bash +go run cmd/server/main.go +# Output: ๐Ÿšฆ Lock Server corriendo en :8080 + +``` + +### 3. Arrancar el Cliente (TUI) + +En otra terminal: + +```bash +# Simula ser un usuario especรญfico mediante variable de entorno +USER=mi_usuario go run cmd/cli/main.go + +``` + +## ๐Ÿ“‚ Estructura del Proyecto + +```text +. +โ”œโ”€โ”€ 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 + +* [x] **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! ๐Ÿ˜‰ + +--- +