Saltar al contenido
Néstor Castelblanco
Volver a proyectos
  • En producción
  • Profesional
  • 2026

GPE — Gestión de Prácticas Empresariales

Sistema en producción para el ciclo completo de prácticas empresariales

Ver sitioRepositorio privado

Capturas

gpe.sysdatec.edu.co
Portal público de prácticas empresariales con accesos para empresas, estudiantes y administrativos, y cifras de empresas aliadas y estudiantes en práctica.
Portal público de prácticas, en producción.
gpe.sysdatec.edu.co/login
Pantalla de inicio de sesión de GPE para los cinco roles: coordinación, dirección, secretaría, estudiante y empresa o tutor.
Acceso para los cinco roles del sistema.
Arquitectura: GPE — Gestión de Prácticas Empresariales
  1. Cliente web

    • React 18 + TypeScriptVite + Radix UI
    • TanStack QueryCaché del estado del servidor
    • React Hook Form + ZodFormularios validados
  2. → HTTPS · JSON · JWT
  3. API REST · Express + TS

    • 33 módulos verticalesrouter → controller → service
    • MiddlewaresAuth, RBAC, carga, errores
    • Esquemas ZodValidación de entrada
  4. → Prisma Client
  5. 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 superRefine de 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.

Siguiente caso de estudioFondo Ciudad Torres Blancas 2027Sitio oficial de un gran fondo de ciclismo en El Líbano, Tolima