Splora: arquitectura de observabilidad
Resumen
Servicio Go (chi router) con ring buffer in-memory, persistencia Neon, Push API Bearer auth y WebSocket para UI live.
Estructura
apps/splora/
├── cmd/splora/ # HTTP + workers
├── internal/handlers/ # push, pages, WS
├── internal/tokens/ # spl_ generation
├── internal/rules/ # whitelist/blacklist
└── web/ # go:embed templates
Push API
POST /v1/events — valida Bearer, normaliza level 0–5, escribe buffer + DB async.
Tokens
Generación criptográfica spl_..., almacenados hashed en Neon. Revocación inmediata.
Auth UI
Middleware JWT ES256 — misma clave pública Folks que Kalista/Desk.
Cloud sync
Worker opcional flush a Google Drive (logs.spl, formato SPL2) según config.
Deploy
Dockerfile multi-stage Alpine en Railway. API en api.splora.zolski.net, UI en app.splora.zolski.net.