Skip to content
leoco/dev
← Volver a proyectos
Full-stack (autor principal)·2026·Repo público

Reino Aromas · CRM omnicanal

CRM construido sobre Laravel 13 y Vue 3 que centraliza las conversaciones de los tres canales de Meta en una sola bandeja. La capa de tiempo real usa Laravel Reverb con broadcasting: los mensajes entrantes aparecen sin recargar y el tablero Kanban de tickets refleja en vivo los movimientos de cualquier agente. Incluye gestión del ciclo de vida de las cuentas de Meta, reintentos para mensajería fallida y backups automatizados de la base con verificación de integridad.

STACK TÉCNICO
LaravelReverbVue 3WebSocketsMySQLMeta Graph API
DESAFÍOS

El estado "En vivo" mentía

El indicador miraba si Reverb estaba configurado en el build, no si el socket estaba realmente vivo. Con Reverb caído seguía diciendo "al día" y ocultaba el botón de actualizar, dejando al agente sin saber que no estaba recibiendo nada. Solución: escuchar el socket real y resincronizar al reconectar.

Configuración en dos lugares

Las credenciales de Meta vivían en .env, pero operación necesitaba cambiarlas sin tocar el servidor. Solución: modelo MetaAccount en base de datos con precedencia sobre .env, y un servicio que unifica ambas fuentes tras una sola interfaz.

El bot que pisa la conversación

Responder sola a cada DM entrante suena a mejor servicio y es lo contrario: el cliente escribe "hola" y recibe el menú; escribe "quiero el de Valencia" y recibe el menú otra vez. Solución: por defecto la automatización responde solo al primer mensaje de la conversación y se aparta en cuanto hay diálogo. Casi todo el servicio son las reglas para callarse, no el envío.

SOLUCIONES

Kanban colaborativo en vivo

Tablero de tickets con drag & drop que persiste el movimiento y lo difunde por WebSocket, de modo que dos agentes viendo el mismo tablero ven el mismo estado sin recargar.

Entrega con reintentos y respaldo

Mecanismo de reintentos para mensajes fallidos, expuesto por endpoints de API y por comando de consola. En paralelo, backups automatizados de MySQL con rotación, verificación de integridad y procedimiento de restauración documentado.

Automatizaciones de Instagram desde el CRM

Respuesta automática a DMs, DM más respuesta pública a quien comenta un post, Ice Breakers, Persistent Menu y menús de Quick Replies, todo editable desde la configuración del CRM y cubierto por tests de feature. La respuesta a comentarios es idempotente: el comment_id se reserva en un índice único antes de decidir nada, porque Meta reintenta el webhook y dos entregas del mismo comentario llegan en paralelo. El aviso público sale primero, para que quede dicho que la cuenta responde aunque el DM se frene por los límites de Meta.

¿Te interesa este proyecto o tienes una idea similar?