Integración de Chat en PWA Sanitaria
Desafío
Una aplicación web sanitaria que conecta clientes y médicos carecía de su función principal — un chat en tiempo real — con una fecha límite inminente. El código existente era una PWA en React con backend NestJS/Amplication, ambos sin pruebas ni controles de calidad. El cliente no tenía estrategia tecnológica y necesitaba tanto una recomendación como una implementación completa.
Solución
Investigué y evalué soluciones de chat con soporte para React (incluyendo GetStream.io y RocketChat), presenté los resultados al cliente y lideré la integración de RocketChat. Extendí el Docker Compose existente para ejecutar RocketChat sobre la instancia MongoDB del proyecto, desactivé el auto-registro e implementé la creación automática de usuarios en RocketChat al registrarse o iniciar sesión. Construí endpoints proxy en NestJS para la creación de salas y mensajes, cubiertos con pruebas unitarias Jest. En el frontend, implementé una conexión WebSocket personalizada con RocketChat para mensajería en tiempo real dentro del diseño UI existente.
Resultado
La función de chat se entregó a tiempo e integrada completamente en la aplicación. Los endpoints NestJS fueron cubiertos con pruebas Jest por primera vez en el proyecto. La solución mantiene la gestión de usuarios centralizada y la mensajería en tiempo real eficiente mediante conexión WebSocket directa.
Desarrollado con
Descripción del Proyecto
Este proyecto bajo NDA consistió en integrar un sistema de chat en tiempo real en una aplicación web progresiva (PWA) React para clientes y profesionales sanitarios. La app gestionaba datos de usuario de ambos roles y necesitaba un canal de comunicación entre ellos. El alcance era concreto: elegir la tecnología adecuada e implementarla de extremo a extremo bajo presión de tiempo.
Funcionalidades
- RocketChat integrado vía Docker en la infraestructura existente
- Creación automática de usuarios en RocketChat al registrarse o iniciar sesión
- Endpoints proxy NestJS para creación de salas, gestión de mensajes y lógica de negocio
- Implementación personalizada de cliente WebSocket para mensajería en tiempo real en React
- Pruebas unitarias Jest en todos los nuevos endpoints NestJS con inyección de dependencias y mocking
Aspectos Técnicos
El backend fue generado con Amplication y ya usaba MongoDB, lo que facilitó compartir la misma instancia de base de datos con RocketChat. En lugar de usar la UI predefinida de RocketChat, implementé la conexión WebSocket manualmente para respetar el diseño de interfaz existente del cliente. El sistema de módulos e inyección de dependencias de NestJS facilitó escribir pruebas unitarias aisladas para los nuevos endpoints — la primera cobertura de pruebas del proyecto.