- En producción
- Profesional
- 2026
GPE — Gestión de Prácticas Empresariales
Sistema en producción para el ciclo completo de prácticas empresariales
Capturas


Cliente web
- React 18 + TypeScriptVite + Radix UI
- TanStack QueryCaché del estado del servidor
- React Hook Form + ZodFormularios validados
- → HTTPS · JSON · JWT
API REST · Express + TS
- 33 módulos verticalesrouter → controller → service
- MiddlewaresAuth, RBAC, carga, errores
- Esquemas ZodValidación de entrada
- → Prisma Client
Persistencia
- Prisma ORM66 modelos, migraciones
- PostgreSQLBase relacional
- StorageServiceArchivos, implementación intercambiable
Componentes transversales
Documentos
- Handlebars + Puppeteer
- 20 plantillas PDF
Tareas programadas
- node-cron diario
- Recordatorios y alertas
Notificaciones
- Nodemailer (SMTP)
- En plataforma
Auditoría
- AuditLog
- Antes y después
Resumen
Plataforma que digitaliza las prácticas empresariales de una institución técnica: convocatorias, postulaciones, requisitos, ARL y seguridad social, visitas de seguimiento, control de horas, informes, firmas y certificados.
El proceso dependía de formatos institucionales en papel y hojas de cálculo, con cinco roles distintos (coordinación, dirección, secretaría, estudiantes y tutores de empresa) que debían aprobar, devolver y firmar en orden.
- Rol
- Único autor del sistema: análisis funcional, modelo de datos, backend, frontend, generación de documentos, despliegue y evolución con las reglas de negocio reales de la institución.
- Periodo
- 2026
- Estado
- En producción
- Código
- Privado, descrito con autorización
- Node.js
- TypeScript
- Express
- Prisma
- PostgreSQL
- Zod
- JWT
- React 18
- Vite
- TanStack Query
- React Hook Form
- Radix UI
- Tailwind CSS
- Puppeteer
- Handlebars
- Jest
- Supertest
- Docker
Contexto
Sysdatec gestiona las prácticas empresariales de sus estudiantes técnicos. Cada práctica pasa por convocatoria, postulación, requisitos, inicio o continuidad, afiliación a ARL, visitas, control de horas, informes y cierre, y cada etapa produce un formato institucional que debe firmarse.
Arquitectura
El backend está organizado en 33 módulos verticales por funcionalidad (router, controller, service, repository y esquema Zod), con capas transversales para autenticación, RBAC, carga de archivos, manejo de errores y auditoría. Prisma es la fuente única de verdad del esquema, con migraciones versionadas.
Decisiones técnicas
- Almacenamiento detrás de una interfaz StorageService: pasar de disco local a S3 o Azure Blob solo requiere otra implementación.
- Los archivos subidos nunca conservan el nombre del cliente. El servicio decide la ruta, lo que evita path traversal, y solo se aceptan PDF, JPG y PNG.
- Los documentos institucionales se generan con plantillas Handlebars renderizadas por Puppeteer.
- Un job diario con node-cron revisa visitas próximas, evidencias pendientes y ARL incompleta, y notifica en la plataforma y por correo.
- Los rechazos exigen un motivo, validado con
superRefinede Zod en cada esquema de revisión.
Desafíos y soluciones
- Una auditoría propia de RBAC detectó tres fugas de datos entre roles, que corregí en las rutas y servicios afectados.
- Las reglas cambian con el uso real: devolver un registro en lugar de rechazarlo, eximir la ARL solo desde Dirección, exigir la seguridad social mensual antes de aprobar una continuidad. Cada cambio entró como un commit pequeño y trazable.
- Acoté el rango válido de fechas en el control de horas para evitar un error 500 que apareció en producción.
Calidad
- Pruebas unitarias y de integración con Jest y Supertest.
- Verificación de tipos estricta en backend y frontend.
- Auditoría de cada mutación relevante, con su estado antes y después.
Resultados
El sistema está en producción en gpe.sysdatec.edu.co, con un portal público para empresas y estudiantes y gestión interna para los cinco roles.