Mesa Digital
Sistema centralizado de solicitudes para la Dirección de Recursos Digitales de la Universidad César Vallejo: tickets, notificaciones, calendario, base de conocimiento y dashboard en tiempo real.

Sobre el Proyecto
Mesa Digital centraliza en un solo canal las solicitudes de la Dirección de Recursos Digitales de la Universidad César Vallejo: tickets, notificaciones, calendario, base de conocimiento y dashboard, para que nadie tenga que preguntar '¿cómo va mi pedido?'.
Como Full-Stack Lead, construí el ecosistema completo: frontend en Next.js 16 con una interfaz inspirada en GitHub (listas tipo Issues, detalle tipo Issue, tema oscuro), y backend en NestJS 12 con arquitectura modular por eventos de dominio (auth, tickets, áreas, notificaciones, tiempo real).
La plataforma soporta múltiples organizaciones, roles configurables por capacidad (Director, Coordinador, Miembro), un tablero Kanban en tiempo real vía WebSocket, auto-cierre de tickets, notificaciones push agrupadas con horario silencioso, calendario de entregas con arrastrar y soltar, y un módulo de conocimiento con documentos versionados y checklists ejecutables.
Detalles Técnicos
- RolFull-Stack Lead
- Año2026
- ClienteIA Systems & Data
- FrontendNext.js 16, TanStack Query
- BackendNestJS 12, Prisma 7
- EstadoEn Producción
STACK TECNOLÓGICO —
Stack Completo:
Next.js 16, TanStack Query, interfaz estilo GitHub (shadcn/ui), tema oscuro por defecto
NestJS 12 (ESM), Prisma 7, eventos de dominio con @nestjs/event-emitter
Socket.IO puro (sin SSE ni polling), Redis para pub/sub entre réplicas
Google OAuth restringido por dominio de organización (multi-tenant)
FUNCIONALIDADES —
Tablero de tickets sincronizado por WebSocket entre todos los usuarios conectados, con flujo crear → revisar → asignar → progreso → resuelto → cerrado.
Cada organización se identifica por el dominio de correo de sus usuarios; el flujo permite derivar solicitudes entre áreas y da de alta nuevas organizaciones desde un panel de plataforma.
Campana en vivo por WebSocket y Web Push con agrupación (varios cambios en minutos generan un solo aviso) y horario silencioso configurable.
Vista mes/semana/agenda con arrastrar y soltar, entregas derivadas automáticamente de los tickets y eventos propios con recurrencia.
Documentos colaborativos con editor enriquecido, control de versiones, publicación, búsqueda en español y checklists ejecutables directamente desde el ticket.
Indicadores bajo demanda con caché, series históricas, desglose por área y exportación a CSV, pensado para revisarse tras semanas de uso real.
Desafíos Técnicos y Soluciones
El sistema deduce la organización a partir del dominio del correo institucional (Organization.allowedDomains), permitiendo aislar datos entre organizaciones sin duplicar infraestructura.
Todo evento viaja en un sobre { type, payload, version, ts } por WebSocket; cada módulo NestJS publica eventos de dominio con @nestjs/event-emitter y los demás se suscriben sin acoplarse entre sí.
Diseñé un sistema de roles por organización sobre un conjunto fijo de capacidades, permitiendo que un Jefe y un Coordinador tengan rangos de escalado de avisos distintos sin tocar código.
IMPACTO —
Notas Técnicas
Monorepo pnpm + Turborepo (apps/web, apps/api, packages/shared). Backend NestJS 12 (ESM) con módulos aislados (auth, users, areas, admin, realtime, health) comunicados por bus de eventos, Prisma 7 sobre PostgreSQL 16 y Redis 7 para pub/sub de sockets y colas. Frontend Next.js 16 con TanStack Query e interfaz estilo GitHub. Desplegado en un VPS propio detrás de Cloudflare y Caddy, con despliegue automático por GitHub Actions al hacer push a main.