Case Study
SIGEMV2
Plataforma SaaS para gestión de servicios y equipos médicos: unidades, técnicos, gerente, finanzas y administración con trazabilidad completa.
- Estado
- En producción
- Categoría
- SaaS médico y gestión operativa
- Rol
- Desarrollador web fullstack
- TypeScript Full-Stack
- React 19 + Vite
- Fastify 5 + Node 22
- PostgreSQL 16 + Drizzle
- Redis 7
- Docker
SIGEMV2 es una plataforma multi-rol para gestión de servicios médicos, flota vehicular, inventario de equipos y viáticos, desarrollada como sistema SaaS y desplegada en VPS con Docker. Centraliza inventarios, personal, viáticos, flotilla vehicular, documentos y finanzas en una sola plataforma web segura, moderna e intuitiva.
El sistema opera para Medingenium S.A de C.V. y cuenta con manual de usuario público organizado por rol, con capturas de cada pantalla. La plataforma está en producción como servicio SaaS.
Objetivo del sistema
- Centralizar la operación: equipos, personal, viáticos, flotilla, documentos y finanzas en un solo lugar.
- Dar trazabilidad completa a cada servicio, desde la solicitud de la unidad médica hasta el completado en sitio.
- Separar responsabilidades por rol, con accesos y acciones distintas para cada perfil.
- Ofrecer información en tiempo real para mejores decisiones, con acceso seguro desde cualquier lugar.
Roles y módulos (verificado en el manual)
- Unidad Médica: solicita servicios (equipo → tipo correctivo/preventivo → prioridad → descripción → fecha sugerida), ve sus equipos, da seguimiento y puede cancelar mientras no esté completado.
- Técnico: ejecuta el servicio en sitio (agendar → en camino → iniciar → completar / cancelar), registra consumibles usados con validación de stock y usa el chat con gerente y contador por servicio.
- Gerente: coordina servicios, asigna técnico, registra viáticos (monto + facturable), envía la solicitud de viáticos y conversa con el técnico.
- Finanzas (Contador): autoriza o rechaza solicitudes de viáticos (método de pago: efectivo o depósito), gestiona catálogo de viáticos, consumibles y resumen de totales facturables / no facturables.
- Administrador: alta y edición de todo el catálogo (equipos, técnicos, unidades, oficinas, flota, certificados, contadores), configuración de empresa, despacho inteligente de técnicos y gestión completa de servicios con timeline de cambios.
Arquitectura
- Monorepo TypeScript con
frontend/(Vite + React) ybackend/(Fastify modular con 20 módulos: auth, admin, técnicos, gerentes, unidades, vehículos, equipos, viáticos, tickets de soporte, planes preventivos, etc.). - Frontend: React 19.2 + React Router 7 + TypeScript 6, Vite 8 + Tailwind CSS 4, Framer Motion 12, Leaflet + React-Leaflet (mapas OSM + Nominatim), QRCode.react y React-Markdown + Mermaid para manuales y diagramas. Dashboards por rol: admin, gerente, tecnico, finanzas, unidad, sadmin.
- Backend: Node 22 + Fastify 5, Drizzle ORM 0.45 + Drizzle Kit (migraciones SQL versionadas), validación Zod 4, auth por sesión en Redis (
@fastify/session+RedisSessionStorecon ioredis, cookies httpOnly + Secure + SameSite=Lax, bcryptjs). - Datos: PostgreSQL 16-Alpine (persistencia) + Redis 7-Alpine (sesiones con TTL 12h / idle 30m, appendonly). Dataset 145k códigos postales precargados.
- Despliegue en producción con Docker multi-stage en un solo contenedor (Nginx + Node 22-Alpine), con PostgreSQL y Redis externos, proxy same-origin
/api/*, usuario non-root, healthchecks y headers de seguridad endurecidos. Nginx sirve la SPA y proxya/apia Fastify, con gzip, caché immutable para assets con hash y no-cache paraindex.html. - Dos puertas de acceso: Acceso Soporte (admin, gerente, técnico, finanzas) y Acceso Unidad (unidades médicas), con RBAC por middleware.
- Manual de usuario público versionado junto a la plataforma, con tabla de contenidos por rol.
Decisiones de ingeniería
- Máquina de estados explícita para el servicio: borrador → pendiente confirmación → asignado → agendado → en camino → en progreso → completado / cancelado, con recálculo automático de planes preventivos al completar.
- Despacho inteligente: al asignar técnico se proponen los mejor calificados por certificados y cualidades coincidentes, distancia desde oficina y tipo (empleado / externo).
- Validaciones en borde con Zod: stock de consumibles (sin sobregiro), viáticos con al menos un concepto antes de solicitar, contraseña mínima de 6 y CLABE de 18 dígitos para pagos por depósito.
- Seguridad endurecida:
@fastify/helmetcon CSP estricta, CORS same-origin, anti-CSRF por Origin/Referer +X-Requested-With, rate-limit 100 req/min y uploads con@fastify/multipart(10MB/archivo). - Trazabilidad: historial timeline por servicio, chats por servicio (Gerente / Contador) y mensajes de sistema ante cada cambio de estado.
- Calidad: Vitest + Testing Library + jsdom y Playwright E2E +
@axe-corepara accesibilidad. - Separación de contextos: catálogos (equipos, viáticos, consumibles, certificados, oficinas, flota) vs. operación diaria (servicios y solicitudes de viáticos).
Resultado
SIGEMV2 refleja mi capacidad como desarrollador fullstack para llevar un SaaS real a producción: del modelado por roles y el ciclo de vida del servicio, al despliegue en VPS con Docker multi-stage, la documentación pública por rol y la operación diaria con trazabilidad completa.
Vistas del producto
Toca cualquier miniatura para verla a tamaño completo.










