Resumen
ORBE es una plataforma empresarial construida para Printpack Medical, un fabricante médico con una red de 17 plantas y más de 3,200 empleados. Centraliza lo que el piso de planta necesita para operar con seguridad y con registro: quién puede estar dónde, cómo se envían y resuelven incidentes y sugerencias, cómo se conserva la documentación técnica y cómo se emiten las credenciales de acceso.
Se diseñó para operar en todas las plantas de la red y se entregó lista para desplegarse. Fui el único desarrollador, de la base de datos a la interfaz.
El problema
La manufactura médica funciona con papel y paciencia. Antes de ORBE, emitir una sola credencial de empleado implicaba fotos, hojas de cálculo, imprimir gafetes uno por uno, recortar y laminar — un proceso que se medía en días. Las quejas y sugerencias viajaban en papel y no tenían trazabilidad confiable. Cada planta era su propia isla de proceso.
La empresa necesitaba un sistema que tratara toda la red como una sola operación, sin perder las reglas de acceso estrictas de las que depende cada planta.
Qué cubre
- Control de acceso — un modelo de cuatro niveles (planta → módulo → submódulo → permiso) donde los derechos de un usuario cascan por la jerarquía y se validan en cada petición.
- Credenciales digitales — generación automatizada de gafetes que reemplazó el flujo manual de varios días por un proceso en lote que termina en minutos.
- Quejas y sugerencias — captura estructurada con enrutamiento por categoría, seguimiento de SLA y escalación cuando un caso se alarga.
- Documentación técnica — un único lugar, con búsqueda, para los procedimientos de planta.
- Autenticación — varios modos de entrada (escaneo de QR, credenciales y acceso anónimo de visitantes) adaptados a distintos escenarios del piso de planta.
Arquitectura
El sistema sigue una arquitectura limpia por capas con CQRS, separando lecturas de escrituras mediante pipelines de MediatR. Esa separación mantiene las verificaciones de acceso consistentes y testeables, y evita que un dominio grande se vuelva un enredo. El backend es .NET por capas; el frontend es Angular, con renderizado del lado del servidor, una base de aplicación web progresiva y una interfaz totalmente bilingüe (inglés / español).
ORBE/
├── src/
│ ├── Orbe.Api/ # API Web .NET — capas Clean Architecture
│ ├── Orbe.Angular/ # componentes standalone de Angular
│ └── Orbe.Shared/ # DTOs, constantes y tipos compartidos
├── database/
│ └── schema/ # esquema relacional (acceso, quejas, docs)
└── docker/ # despliegue en contenedores
Por qué está construido así
Los permisos cascan por una jerarquía profunda, así que lo costoso es verificarlos en cada acción. En lugar de golpear la base de datos, una caché en memoria (IMemoryCache) guarda los resultados de autorización y se invalida al cambiar — verificaciones rápidas sin sacrificar corrección. Las actualizaciones en vivo usan SignalR para que una planta vea el cambio de estado en el momento en que ocurre, en vez de refrescar una página y cruzar los dedos.
Estado
Entregado y listo para operar en las 17 plantas, incluidos los módulos terminados y los planeados. No llegó a despliegue productivo porque la empresa no contaba con la infraestructura para alojarlo en ese momento, y la relación laboral terminó en ese punto. El software estaba terminado; la pista de despegue no.
Qué aprendí
Construir un sistema para miles de personas, solo, me obligó a planear antes de teclear: diseñar el modelo de datos, entender cómo se comportan los permisos a escala y elegir tecnología por la realidad operativa, no por el currículum. También es donde aprendí que “terminado” y “desplegado” son palabras distintas, y que un buen ingeniero planea para ambas.