initial commit
This commit is contained in:
126
readme.md
Normal file
126
readme.md
Normal file
@@ -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! 😉
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user