Mesa Digital
Centralized request system for the Digital Resources Office at Universidad César Vallejo: tickets, notifications, calendar, knowledge base, and real-time dashboard.

Sobre el Proyecto
Mesa Digital centralizes into a single channel every request handled by the Digital Resources Office at Universidad César Vallejo: tickets, notifications, calendar, knowledge base, and dashboard, so nobody has to ask 'how's my request going?' again.
As Full-Stack Lead, I built the entire ecosystem: a Next.js 16 frontend with a GitHub-inspired interface (Issue-style lists, Issue-style detail view, dark theme), and a NestJS 12 backend with a domain-event-driven modular architecture (auth, tickets, areas, notifications, real-time).
The platform supports multiple organizations, capability-based configurable roles (Director, Coordinator, Member), a real-time Kanban board over WebSocket, ticket auto-close, grouped push notifications with quiet hours, a drag-and-drop delivery calendar, and a knowledge module with versioned documents and executable checklists.
Detalles Técnicos
- RoleFull-Stack Lead
- Year2026
- ClientIA Systems & Data
- FrontendNext.js 16, TanStack Query
- BackendNestJS 12, Prisma 7
- StatusIn Production
STACK TECNOLÓGICO —
Stack Completo:
Next.js 16, TanStack Query, GitHub-style interface (shadcn/ui), dark theme by default
NestJS 12 (ESM), Prisma 7, domain events with @nestjs/event-emitter
Pure Socket.IO (no SSE, no polling), Redis for pub/sub across replicas
Google OAuth restricted by organization domain (multi-tenant)
FUNCIONALIDADES —
Ticket board synchronized over WebSocket across every connected user, following a create → review → assign → in-progress → resolved → closed flow.
Each organization is identified by its users' email domain; the flow lets requests be routed between areas and new organizations be onboarded from a platform panel.
Live WebSocket bell and Web Push with grouping (several changes within minutes generate a single alert) and configurable quiet hours.
Month/week/agenda view with drag-and-drop, deliveries automatically derived from tickets, and recurring custom events.
Collaborative documents with a rich editor, version history, publishing, Spanish-language search, and checklists executable directly from the ticket.
On-demand cached indicators, historical series, breakdown by area, and CSV export, designed to be reviewed after weeks of real usage.
Desafíos Técnicos y Soluciones
The system infers the organization from the institutional email domain (Organization.allowedDomains), isolating data between organizations without duplicating infrastructure.
Every event travels in an { type, payload, version, ts } envelope over WebSocket; each NestJS module publishes domain events with @nestjs/event-emitter and others subscribe without coupling.
I designed a per-organization role system on top of a fixed set of capabilities, letting a Head and a Coordinator have different notification-escalation ranges without touching code.
IMPACTO —
Notas Técnicas
pnpm + Turborepo monorepo (apps/web, apps/api, packages/shared). NestJS 12 (ESM) backend with isolated modules (auth, users, areas, admin, realtime, health) communicating over an event bus, Prisma 7 over PostgreSQL 16, and Redis 7 for socket pub/sub and queues. Next.js 16 frontend with TanStack Query and a GitHub-style interface. Deployed on a dedicated VPS behind Cloudflare and Caddy, with automatic deployment via GitHub Actions on push to main.