Actualizar CLAUDE.md - proyecto completado v1.2

- Estado actualizado a COMPLETO v1.2
- Estructura real del proyecto (8 archivos src/)
- Comandos con path completo a Zig 0.15.2
- Ecosistema Zig documentado (zcatui, zsqlite, zpdf)
- Notas tecnicas: migracion Zig 0.15, SMTP STARTTLS
- Historial de desarrollo con commits clave
- Mejoras futuras pendientes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
reugenio 2025-12-08 17:48:43 +01:00
parent dbcf8c696b
commit dfc75be016

335
CLAUDE.md
View file

@ -1,165 +1,248 @@
# service-monitor - Monitor de Servicios en Zig
> **Última actualización**: 2025-12-08
> **Ultima actualizacion**: 2025-12-08
> **Lenguaje**: Zig 0.15.2
> **Estado**: PROYECTO COMPLETADO v1.2
> **Repositorio**: git@git.reugenio.com:reugenio/service-monitor.git
## Descripción del Proyecto
## Descripcion del Proyecto
Monitor que verifica periódicamente que los servicios en nuestro servidor Hetzner (Simba) estén funcionando correctamente, con notificaciones si algo falla.
Monitor que verifica periodicamente que los servicios en nuestro servidor Hetzner (Simba) esten funcionando correctamente, con notificaciones si algo falla.
**Lenguaje**: Zig 0.15.2
**Objetivo**: Herramienta de monitoreo simple y ligera, sin dependencias de servicios externos como UptimeRobot.
## Servicios a Monitorear
### Servidor Simba (188.245.244.244)
| Servicio | URL/Puerto | Verificación |
|----------|------------|--------------|
| **Forgejo** | https://git.reugenio.com | HTTP 200 |
| **Forgejo SSH** | git.reugenio.com:2222 | Conexión TCP |
| **Simifactu API** | https://simifactu.com | HTTP 200 |
| **Mundisofa** | https://mundisofa.com | HTTP 200 |
| **Menzuri** | https://menzuri.com | HTTP 200 |
## Funcionalidades Planificadas
### Fase 1 - Básico
- [ ] Verificar HTTP status de URLs
- [ ] Verificar puertos TCP abiertos
- [ ] Output en terminal (estado actual)
### Fase 2 - Monitoreo Continuo
- [ ] Modo daemon (corre en background)
- [ ] Intervalo configurable
- [ ] Log de eventos
### Fase 3 - Notificaciones
- [ ] Notificación desktop (libnotify)
- [ ] Log a archivo
- [ ] Opcional: webhook/email
## Stack Técnico
- **Zig 0.13.0** - Lenguaje principal
- **HTTP Client** - std.http
- **TCP Sockets** - std.net
- **Sin dependencias externas** - Solo stdlib de Zig
## Filosofía del Proyecto
- Binario único, pequeño, portable
- Puede correr en el servidor o en máquina local
- Sin dependencias de servicios cloud externos
- Consumo mínimo de recursos
**Funcionalidades implementadas**:
- Verificacion HTTP/HTTPS con tiempos de respuesta
- Verificacion TCP con resolucion DNS
- Modo watch (loop continuo con intervalo configurable)
- Modo daemon (background con fork() + setsid())
- Log a archivo
- Configuracion externa (CSV)
- Notificaciones desktop (notify-send)
- Notificaciones email (SMTP con STARTTLS via curl)
- Notificaciones Telegram (Bot API via curl)
---
## Equipo y Metodología
## Estructura del Proyecto
### Quiénes Somos
- **Usuario**: Desarrollador independiente, proyectos comerciales propios
- **Claude**: Asistente de programación (Claude Code)
```
service-monitor/
├── CLAUDE.md # Este archivo - especificacion y continuidad
├── build.zig # Sistema de build Zig
├── services.conf # Configuracion activa
├── services.conf.example # Ejemplo documentado
├── service-monitor # Binario compilado
├── service-monitor.log # Log de ejecucion
├── service-monitor.pid # PID en modo daemon
├── src/
│ ├── main.zig # Entry point + CLI + logica principal (317 lineas)
│ ├── http.zig # Cliente HTTP/HTTPS (77 lineas)
│ ├── tcp.zig # Verificacion TCP (68 lineas)
│ ├── config.zig # Parser de configuracion (233 lineas)
│ ├── notify.zig # Notificaciones desktop (77 lineas)
│ ├── daemon.zig # Daemonizacion (101 lineas)
│ ├── smtp.zig # Cliente SMTP (260 lineas)
│ └── telegram.zig # Cliente Telegram (107 lineas)
└── docs/
├── PROYECTO_COMPLETO.md # Documentacion tecnica completa
└── DIARIO_DESARROLLO.md # Historial de desarrollo
```
---
## Comandos Utiles
```bash
# Zig path
ZIG=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2/zig
# Compilar
$ZIG build
# Verificar una vez
./service-monitor
# Modo watch (cada 60 segundos)
./service-monitor --watch
# Modo watch cada 30 segundos
./service-monitor -w -i 30
# Con log a archivo
./service-monitor -w -l
# Con notificaciones desktop
./service-monitor -w -n
# Daemon en background
./service-monitor -w -d
# Todo junto
./service-monitor -w -i 60 -d -l -n
# Config personalizado
./service-monitor -c /ruta/config.conf
# Ayuda
./service-monitor --help
```
---
## Servicios Monitoreados (Servidor Simba)
| Servicio | Tipo | Endpoint | Puerto |
|----------|------|----------|--------|
| Forgejo HTTP | HTTPS | git.reugenio.com | 443 |
| Forgejo SSH | TCP | git.reugenio.com | 2222 |
| Simifactu | HTTPS | simifactu.com | 443 |
| Mundisofa | HTTPS | mundisofa.com | 443 |
| Menzuri | HTTPS | menzuri.com | 443 |
---
## Archivo de Configuracion
Formato CSV simple en `services.conf`:
```
# Servicios HTTP
http,Forgejo (HTTP),https://git.reugenio.com
http,Simifactu API,https://simifactu.com
http,Mundisofa,https://mundisofa.com
http,Menzuri,https://menzuri.com
# Servicios TCP
tcp,Forgejo (SSH),git.reugenio.com,2222
# Telegram
telegram,BOT_TOKEN,CHAT_ID
# Email
email,destinatario@email.com
email_smtp,smtp.servidor.com,587,usuario,password,from@email.com
```
**Credenciales completas**: `TEAM_STANDARDS/INFRASTRUCTURE/NOTIFICACIONES.md`
---
## Equipo y Metodologia
### Normas de Trabajo Centralizadas
**IMPORTANTE**: Todas las normas de trabajo están en:
**IMPORTANTE**: Todas las normas de trabajo estan en:
```
/mnt/cello2/arno/re/recode/TEAM_STANDARDS/
```
**Archivos clave a leer**:
- `LAST_UPDATE.md` - **LEER PRIMERO** - Cambios recientes en normas
- `NORMAS_TRABAJO_CONSENSUADAS.md` - Metodología fundamental
- `QUICK_REFERENCE.md` - Cheat sheet rápido
- `INFRASTRUCTURE/` - Documentación de servidores (IPs, puertos, servicios)
### Protocolo de Comunicación Entre Proyectos
1. **Al iniciar conversación**: Leer `TEAM_STANDARDS/LAST_UPDATE.md`
2. **Si modificas normas**: Actualizar `LAST_UPDATE.md` con fecha y cambios
3. **Commits**: Siempre a Forgejo (git.reugenio.com), nunca a GitHub
- `NORMAS_TRABAJO_CONSENSUADAS.md` - Metodologia fundamental
- `QUICK_REFERENCE.md` - Cheat sheet rapido
- `INFRASTRUCTURE/` - Documentacion de servidores (IPs, puertos, servicios)
### Control de Versiones
```bash
# Este proyecto
git remote: git@git.reugenio.com:reugenio/service-monitor.git (pendiente crear)
# Remote
git remote: git@git.reugenio.com:reugenio/service-monitor.git
# Crear repo en Forgejo cuando esté listo el código inicial
```
### Documentación del Sistema Local
El ordenador de trabajo está documentado en:
```
/home/re/cello/claude/claude.md
/home/re/cello/claude/docs/
```
### Documentación del Servidor
Información detallada del servidor Simba:
```
/mnt/cello2/arno/re/recode/TEAM_STANDARDS/INFRASTRUCTURE/SERVIDOR_HETZNER.md
# Branches
main # Codigo estable
```
---
## Estructura del Proyecto (Planificada)
## Ecosistema Zig - Proyectos Relacionados
```
service-monitor/
├── CLAUDE.md # Este archivo
├── src/
│ ├── main.zig # Punto de entrada
│ ├── checker.zig # Lógica de verificación
│ ├── http.zig # Cliente HTTP
│ ├── tcp.zig # Verificación TCP
│ ├── config.zig # Configuración de servicios
│ └── notify.zig # Sistema de notificaciones
├── build.zig # Sistema de build de Zig
├── services.json # Lista de servicios a monitorear (configurable)
└── README.md # Documentación de uso
```
Este proyecto forma parte del ecosistema Zig desarrollado en 2025:
## Comandos Útiles
| Proyecto | Descripcion | Estado | Repo |
|----------|-------------|--------|------|
| **service-monitor** | Monitor de servicios (este) | COMPLETO v1.2 | git.reugenio.com/reugenio/service-monitor |
| **zcatui** | TUI library (ratatui-style) | COMPLETO v1.0 | git.reugenio.com/reugenio/zcatui |
| **zsqlite** | SQLite wrapper | COMPLETO v0.1 | git.reugenio.com/reugenio/zsqlite |
| **zpdf** | PDF generator | COMPLETO v0.1 | git.reugenio.com/reugenio/zpdf |
### Descripcion de cada proyecto:
- **zcatui**: Libreria TUI para Zig inspirada en ratatui (Rust). 13 widgets implementados, 103+ tests.
- **zsqlite**: Wrapper SQLite que compila sqlite3.c directamente en el binario. API idiomatica Zig.
- **zpdf**: Generador PDF puro Zig. Texto, graficos, 14 fuentes Type1, PDF 1.4.
---
## Notas Tecnicas
### Migracion a Zig 0.15.2
La migracion a Zig 0.15.2 requirio cambios importantes:
| Cambio | Antes (0.13) | Despues (0.15) |
|--------|--------------|----------------|
| Build.zig | `root_source_file` | `root_module` con `b.createModule()` |
| stdout | `std.io.getStdOut().writer()` | `std.fs.File.stdout().deprecatedWriter()` |
| ArrayList | `std.ArrayList(T).init(alloc)` | `std.array_list.Managed(T).init(alloc)` |
| file.reader() | sin args | `deprecatedReader()` |
| HTTP Client | `client.open()` + `send()` + `wait()` | `client.fetch()` |
| sleep | `std.time.sleep()` | `std.Thread.sleep()` |
### SMTP con STARTTLS
Se usa curl como subprocess para SMTP (mas fiable que TLS nativo):
```bash
# Compilar
zig build
# Ejecutar verificación única
zig build run
# Modo daemon
zig build run -- --daemon --interval 60
# Release para servidor
zig build -Doptimize=ReleaseFast -Dtarget=x86_64-linux
```
## Ejemplo de Uso (Planificado)
```bash
# Verificar todos los servicios una vez
$ service-monitor check
✅ git.reugenio.com - 200 OK (45ms)
✅ git.reugenio.com:2222 - TCP OK (12ms)
✅ simifactu.com - 200 OK (89ms)
✅ mundisofa.com - 200 OK (67ms)
✅ menzuri.com - 200 OK (72ms)
# Modo watch (cada 60 segundos)
$ service-monitor watch --interval 60
echo -e "From: ...\r\nTo: ...\r\nSubject: ...\r\n\r\nBody" | \
curl -s --url "smtp://smtp.mailbox.org:587" --ssl-reqd \
-u "usuario:password" \
--mail-from "<from@email.com>" \
--mail-rcpt "<to@email.com>" -T -
```
---
## Notas de Desarrollo
## Historial de Desarrollo
*Esta sección se irá llenando conforme avance el proyecto*
| Fecha | Version | Cambio |
|-------|---------|--------|
| 2025-12-08 | v1.2 | Migracion Zig 0.15.2 + SMTP STARTTLS via curl |
| 2025-12-07 | v1.1 | Telegram + Email + Daemon mode |
| 2025-12-06 | v1.0 | HTTP/TCP check + watch mode + log + notify |
### Commits clave:
| Hash | Descripcion |
|------|-------------|
| e2e19da | Fase 1: Monitor basico HTTP/TCP |
| 3946f83 | Fase 2: Modo watch + CLI + timestamps |
| dfcfd31 | Log a archivo |
| 5a17d74 | Fase 3: Notificaciones desktop |
| 655dcb8 | Daemon mode + config externo |
| a011d9e | SMTP y Telegram |
| f31ce95 | Migracion a Zig 0.15.2 |
| 4a9d0e6 | SMTP con STARTTLS via curl |
---
**Estado**: Proyecto nuevo, pendiente iniciar desarrollo (después de forgejo-cli)
## Pendiente (Mejoras futuras)
- [ ] Notificacion de recuperacion (servicio vuelve a funcionar)
- [ ] Rate limiting de notificaciones (evitar spam)
- [ ] Metricas/estadisticas de uptime
- [ ] Web dashboard (usando zcatui o similar)
---
## Referencias
- Documentacion tecnica completa: `docs/PROYECTO_COMPLETO.md`
- Guia Zig 0.15: `TEAM_STANDARDS/INFRASTRUCTURE/ZIG_0.15_GUIA.md`
- Credenciales: `TEAM_STANDARDS/INFRASTRUCTURE/NOTIFICACIONES.md`
- Servidor Simba: `TEAM_STANDARDS/INFRASTRUCTURE/SERVIDOR_HETZNER.md`
---
**service-monitor - Monitor de Servicios Zig**
*Proyecto completado 2025-12-08*