RESUMEN
Plataforma fullstack de mensajería distribuida con moderación automática mediante IA local.
ChatHub es una plataforma de mensajería instantánea diseñada desde sus cimientos para garantizar una comunicación fluida, reactiva y segura entre usuarios. Integra conversaciones privadas uno a uno, salas grupales con jerarquía de roles, confirmaciones de lectura y un sistema inteligente de moderación de contenido en tiempo real mediante modelos de lenguaje (LLM) ejecutados localmente para detectar y filtrar lenguaje soez de forma automática.
A nivel de arquitectura de software, el sistema se organiza bajo el patrón MVC (Model-View-Controller) en el backend con una capa de servicios desacoplada para orquestar rutas HTTP REST y eventos de WebSockets, mientras que el cliente web implementa una arquitectura modular Feature-Based que aísla la lógica de chat, grafo social, autenticación, avatar y perfiles para maximizar la cohesión y mantenibilidad.
El proyecto nació como un reto académico integrador entre las cátedras de Desarrollo de Software II e Inteligencia Artificial en la Universidad Gran Mariscal de Ayacucho. A través de un desarrollo continuo que abarcó más de un año y cientos de iteraciones, la plataforma evolucionó hacia un sistema escalable y robusto que prescinde de intermediarios pesados para maximizar la velocidad y el control sobre los datos.
- Patrón BackendArquitectura MVC
- Patrón FrontendFeature-Based
- Motor Real-TimeWebSockets / Socket.io
- Inteligencia ArtificialOllama (Inferencia Local)
Latencia de Envío
Privacidad IA (Offline)
Repositorios Fullstack

DISEÑO E IDENTIDAD
Diseño neo-brutalista inspirado en WhatsApp, gestión de perfiles y seguridad.
Para acelerar el desarrollo y no retrasar el proyecto elaborando bosquejos desde cero (el sistema no contó con wireframes previos en Figma), la distribución espacial nació de una alusión mental que combinó la ergonomía probada de WhatsApp con la estética del neo-brutalismo. Se adoptó la disposición reconocible de dos columnas: panel lateral de conversaciones y solicitudes a la izquierda, ventana de conversación activa a la derecha, cabecera de contacto con indicador en línea y barra inferior de entrada rápida de mensajes.
Sobre esta estructura intuitiva se inyectó una identidad gráfica de alto contraste, caracterizada por tarjetas con bordes negros marcados, sombras desplazadas sólidas, acentos de color vibrantes y lienzos punteados. Esta combinación permitió entregar una experiencia visual distintiva y memorable, manteniendo una curva de aprendizaje inmediata para cualquier usuario habituado a apps de mensajería masivas.
El módulo de Ajustes de Perfil permite a los usuarios gestionar su información pública y personal con total autonomía. Desde una ventana modal organizada en bloques visuales claros, los usuarios pueden actualizar su nombre de usuario, correo electrónico, biografía y número de contacto, manteniendo una separación estricta entre la información visible en salas de chat y los datos privados de seguridad.
En términos de seguridad y privacidad, el sistema provee flujos dedicados para la modificación de contraseñas y la verificación de cambios de credenciales a través de códigos de confirmación temporales, garantizando que ninguna cuenta sufra alteraciones no autorizadas.

SISTEMA PROCEDURAL
Generación procedural de avatares y personalización estética granular.
Para fomentar la identidad individual dentro de la comunidad, ChatHub incorpora Avatar Builder Pro, una herramienta de diseño procedural integrada que genera avatares vectoriales de forma dinámica sin necesidad de subir imágenes externas a servidores de terceros.
El generador ofrece una amplia colección de estilos artísticos base (incluyendo Micah, Notionists, Pixel Art, Adventurer y Toon Head). Cada usuario puede generar combinaciones aleatorias instantáneas mediante un generador de semillas aleatorias o ajustar de forma minuciosa cada elemento visual.
El panel de control permite seleccionar colores de fondo personalizados o transparentes, tonalidades de piel, tipos de cabello, peinados faciales, accesorios (como aretes o gafas) y expresiones faciales detalladas (ojos, cejas y sombras). Los parámetros resultantes se guardan de forma compacta en el perfil del usuario, garantizando un renderizado vectorial liviano y de máxima nitidez en cualquier resolución de pantalla.

MODELADO DE IDENTIDAD
Modelo Entidad-Relación: ciclo de vida de usuarios, autenticación y seguridad.
La base de la arquitectura de datos de ChatHub está cimentada en un Modelo Entidad-Relación (MER) modular y estructurado. El primer subsistema abarca la gestión de identidad, control de acceso y mecanismos de recuperación de cuentas.
La entidad central USER_ACCOUNT gestiona las credenciales esenciales de autenticación (identificador único, nombre de usuario único, correo electrónico y clave encriptada). Su información complementaria se desacopla en la entidad USER_ACCOUNT_INFO mediante una relación unívoca, permitiendo que las consultas de autenticación operen de manera rápida y sin cargar metadatos prescindibles.
Para resguardar las sesiones activas en múltiples dispositivos y facilitar la recuperación segura, el modelo incorpora entidades especializadas: REFRESH_TOKENS para la persistencia y revocación de sesiones, PASSWORD_RESETS para la emisión de tokens de restablecimiento con caducidad temporal, EMAIL_CHANGE_REQUESTS para validar la migración de correos con doble verificación, y PUSH_SUBSCRIPTIONS para la entrega de notificaciones en tiempo real a nivel de navegador.

MODELADO SOCIAL
Modelo Entidad-Relación: grafo de amistades simétrico y puente hacia chats directos.
El segundo pilar conceptual del sistema modela las relaciones sociales interpersonales entre usuarios. En lugar de tratar las amistades como listas unidireccionales, el modelo formaliza un grafo simétrico no dirigido a través de la entidad FRIENDSHIP.
Dos usuarios vinculados a través de las relaciones SOLICITA_AMISTAD y RECIBE_AMISTAD comparten una única fila en el sistema, la cual mantiene estados de solicitud independientes (pendiente, aceptada o bloqueada). Esto previene inconsistencias de duplicación y simplifica la verificación de permisos en tiempo real.
Cuando una solicitud de amistad se formaliza, la relación ASOCIA_AMISTAD genera una entidad FRIENDSHIP_CHAT. Este nodo actúa como un puente inteligente que enlaza el lazo social con una sala de conversación genérica (CHAT), permitiendo que cada amigo configure apodos o sobrenombres personalizados de forma bidireccional sin alterar el nombre de usuario global del otro.

MODELADO DE MENSAJERÍA
Modelo Entidad-Relación: mensajería polimórfica, integración GIPHY y salas grupales.
El tercer componente del modelo formaliza el intercambio de información y la colaboración grupal. La entidad genérica CHAT actúa como abstracción base para todo espacio conversacional en la plataforma, garantizando que los mensajes se manejen con una lógica uniforme independientemente de si el chat es privado o colectivo.
Las salas grupales se materializan mediante la entidad GROUP_CHAT, enlazada a sus integrantes a través de GROUP_MEMBERS. Esta estructura soporta jerarquías de privilegios (propietario, administradores y miembros regulares), fecha de ingreso a la sala y políticas configurables para la admisión de nuevos participantes.
Cada mensaje enviado (MESSAGE) se vincula a su autor y a su sala correspondiente, integrando marcas de tiempo, indicadores de edición y banderas de moderación de lenguaje soez. Para las confirmaciones de lectura en tiempo real (double-check multiusuario), la entidad MESSAGE_VIEW registra de manera granular qué participantes han visualizado cada mensaje y en qué momento exacto, resolviendo la trazabilidad de lectura sin sobrecargar la entidad principal.
Para enriquecer la expresividad en las conversaciones sin incurrir en costos de almacenamiento en la nube ni sobrecargar el backend (evitando la necesidad de servicios como AWS S3 o buckets de media dedicados), el frontend integra la API de GIPHY directamente. Esta solución actúa como una alternativa ligera y dinámica a los tradicionales stickers, permitiendo buscar y compartir contenido animado de forma instantánea mientras se delega el alojamiento multimedia y la optimización en la infraestructura del proveedor.

ARQUITECTURA RELACIONAL
Diagrama Relacional: normalización física en MySQL, integridad referencial y atomicidad.
Para traducir las entidades conceptuales en una estructura de almacenamiento de alto rendimiento, se diseñó un Diagrama Relacional (DR) físico completamente normalizado en MySQL 8.0, compuesto por 14 tablas estrechamente vinculadas mediante restricciones de integridad referencial (claves primarias, foráneas e índices únicos).
A diferencia de arquitecturas tradicionales que confían en ORMs pesados, el sistema opera con acceso relacional directo. Las operaciones que involucran múltiples tablas (como la creación de un grupo con asignación de roles iniciales o la confirmación de solicitudes de amistad con apertura de canal) se ejecutan bajo límites transaccionales estrictos: si cualquier fase de la operación encuentra una anomalía, los cambios se revierten de forma atómica.
Asimismo, la estructura relacional permite unificar en una sola consulta paginada tanto los chats privados como las salas grupales, resolviendo en el propio motor de base de datos el cálculo de apodos cruzados, avatares contextuales y la marca de tiempo de la última actividad registrada.

IMPACTO Y RESULTADOS
Moderación de lenguaje soez con IA local, tiempo real y conclusiones de ingeniería.
ChatHub demostró la viabilidad de construir una plataforma integral de comunicación en tiempo real combinando principios fundamentales de ingeniería de software e inteligencia artificial local. Al ejecutar el pipeline de moderación de lenguaje soez mediante Ollama directamente en el servidor local, la plataforma protege la privacidad de las conversaciones sin incurrir en costos de APIs externas ni exponer datos confidenciales a terceros.
El sistema cuenta con un respaldo integral de fiabilidad validado por 11 suites de pruebas unitarias y de integración automatizadas, cubriendo desde la consistencia de las consultas relacionales y transacciones hasta la sincronización de eventos de WebSocket y la resiliencia del filtro de IA ante desconexiones imprevistas.
Entre los aprendizajes más valiosos destaca la importancia de formalizar modelos conceptuales (MER y DR) antes de la codificación, adoptar metodologías modulares y desacopladas (MVC en backend y Feature-Based en frontend) y dominar la persistencia relacional pura sin intermediarios, logrando latencias inferiores a 50 milisegundos en el intercambio de mensajes.
- Tipo de ProyectoAplicación Web Fullstack
- MetodologíaMVC + Feature-Based
- Testing Suite11 Suites Automatizadas
- EstadoProyecto Concluido
