# ๐Ÿ›ก๏ธ 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! ๐Ÿ˜‰ ---