Volver al portafolio

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

PiezaTecnología
Base de datosSupabase — 6 tablas, RLS, triggers
IngestaEdge Functions + IMAP
CorreoZoho Mail con catch-all
PanelNext.js