Panel de registros
Infraestructura de correo con panel de control: un dominio recibe en cualquier dirección, cada mensaje se clasifica solo y el equipo lo administra desde una sola pantalla. Proyecto para cliente privado.
El problema
El equipo llevaba el control en hojas de cálculo y buzones sueltos. Cada dirección nueva había que crearla a mano, y saber qué llegó a cuál implicaba entrar a revisar buzón por buzón. No escalaba y se perdían cosas.
Lo que construí
- Dominio con catch-all. Cualquier dirección del dominio recibe. La primera vez que llega correo a una dirección, esa dirección se da de alta sola como registro. No hay que crear nada por adelantado.
- Ingesta y extracción. El correo entra por IMAP y un extractor le saca los datos del cuerpo y reconoce de qué plataforma viene, contra un catálogo sembrado.
- Panel multiusuario. El equipo ve todos los registros y le asocia a cada uno su información definitiva.
- Aislamiento por fila. 6 tablas, RLS activo en todas, 13 políticas y 5 triggers, para que cada usuario vea solo lo suyo a nivel de base de datos, no de aplicación.
Cómo lo verifiqué
En un sistema de ingesta, lo que rompe no es el camino feliz: es el mensaje duplicado, el formato que cambió y el que llega dos veces por un reintento.
- 7 pruebas de humo de triggers e idempotencia, corriendo contra la base real, no contra una copia local.
- 24 pruebas del extractor de datos.
- Conexión al buzón medida desde una Edge Function: 530 ms de respuesta.
En la documentación del proyecto cada pieza está marcada como
✅ verificado, 🟡 plausible o 🔴 sin verificar.
Si algo se probó contra datos sintéticos y no contra los reales del cliente, lo dice.
Prefiero entregar un estado honesto que un tablero todo en verde que no aguanta la
primera semana en producción.
Stack
| Pieza | Tecnología |
|---|---|
| Base de datos | Supabase — 6 tablas, RLS, triggers |
| Ingesta | Edge Functions + IMAP |
| Correo | Zoho Mail con catch-all |
| Panel | Next.js |