











Comply DQ
Plataforma de Compliance y Document Intelligence para Flotas
- Rol
- Full-stack · Multi-tenant
- Tipo de trabajo
- Colaboración con equipo
- Industria
- Compliance de transporte
Resumen
El desafío
Enlaces
Privado — proyecto de cliente
Arquitectura del sistema
Comply DQ aplica el modelo multi-tenant en la capa de datos. Cada consulta está acotada a un tenant y cada ruta de la API valida ese alcance del lado del servidor, manteniendo una separación estricta entre las organizaciones clientes.
Arquitectura de la aplicación
- Frontend en Next.js App Router, con Redux Toolkit para el estado operativo del cliente.
- Backend en NestJS con Prisma sobre PostgreSQL, tipado de punta a punta.
- Modelo multi-tenant con resolución de tenant y jerarquías por tipo de empresa, que cubren estructuras directas y de servicio gestionado.
- Acceso por roles que separa la supervisión a nivel plataforma de los administradores y operadores de cada organización cliente.
Funcionalidades de la plataforma
- Flujos de alta y verificación de conductores para CDL, certificados médicos y documentación de políticas.
- Biblioteca de documentos con manejo de subidas, deduplicación y almacenamiento sobre S3.
- Seguimiento de vencimientos y flujos de renovación para cumplir con los requisitos regulatorios.
- Dashboards para operadores optimizados para la revisión de cumplimiento en desktop y para el uso en tablet en campo.
Autenticación
La gestión de identidades sigue estándares enterprise para cumplir con los requisitos de compras B2B y las revisiones de IT.
- Keycloak (OIDC)
- JWT access/refresh
- Endurecimiento de sesiones
- Guards de API por tenant
- RBAC
Infraestructura y deploy
La plataforma reemplazó planillas y sistemas legacy que los transportistas venían usando desde hacía años, por lo que la migración de datos fue un requisito central de la entrega, a la par de la aplicación en sí.
Migración de datos
- Pipelines basados en CSV para transferir registros productivos de clientes desde los sistemas legacy.
- Pasadas de validación previas a la carga, que detectan registros mal formados para su conciliación.
- Scripts operativos que permiten cutovers repetibles, con modo dry-run contra staging.
Base de datos
- PostgreSQL con Prisma, que da acceso seguro respecto del esquema sobre una superficie operativa amplia.
- Migraciones versionadas en el control de versiones para que la evolución del esquema sea revisable.
- Alcance por tenant aplicado en la capa de datos, manteniendo el aislamiento y la trazabilidad para auditoría.
Operaciones
- Logging estructurado en todas las capas de la API, que permite diagnósticos reproducibles sobre datos productivos.
- Guards de API por tenant aplicados del lado del servidor en todas las rutas.
- Configuración de despliegue que mantiene la paridad entre los entornos de staging y producción.
- AWS S3
- Keycloak
- Logging estructurado
- Paridad con staging
Construido con
La facturación por suscripción funciona a nivel organización: los cambios de plan ocurren a mitad de ciclo y los permisos habilitados tienen que mantenerse sincronizados con el estado de facturación en toda la plataforma.
Arquitectura de facturación
Stripe es la fuente de verdad del estado de las suscripciones, y los permisos de la plataforma se derivan de ella.
- Suscripciones de Stripe acotadas por tenant, alineando los límites de facturación con los límites de datos.
- Ciclo de vida manejado por webhooks: creación, actualizaciones, pagos exitosos, pagos fallidos y cancelación.
- El estado del plan se aplica a nivel de guard de la API, así los cambios de permisos se resuelven del lado del servidor.
Experiencia del operador
- Estado de facturas y suscripciones visible dentro del espacio de trabajo de cumplimiento.
- Los pagos fallidos se muestran de forma explícita para que puedan resolverse a tiempo.
Validación y testing
- Tests automatizados enfocados en las transiciones del ciclo de vida de los documentos, el cálculo de vencimientos y los guards de aislamiento entre tenants.
- Tests explícitos de los límites de acceso entre tenants.
- TypeScript con tipos generados por Prisma, que hacen visibles los cambios de esquema en tiempo de compilación tanto en la API como en el cliente.
Entregado como parte de un equipo de ingeniería senior que da servicio a transportistas de toda Norteamérica, en una plataforma sujeta a requisitos regulatorios vigentes.
Entregado
- Flujos de alta de conductores y verificación de documentos en uso productivo.
- Panel administrativo multi-tenant para transportistas, incluidas herramientas de supervisión a nivel plataforma.
- Facturación por suscripción sobre Stripe, integrada con la habilitación de funcionalidades.
- Migraciones de datos legacy ejecutadas sobre registros productivos de clientes.
Modelo de trabajo
- Desarrollo colaborativo junto a un equipo de ingeniería canadiense, combinando su conocimiento del dominio de cumplimiento en transporte con la implementación.
- Code review y releases escalonados entre los entornos de staging y producción.