Trabajo

Zorzal Morazán

Educación
.NET
React

Una plataforma de inscripción y asistencia para una universidad con varios campus: los estudiantes se inscriben en sesiones y registran su asistencia, incluso sin conexión, mientras el personal administra listas, roles y notificaciones.

La página de sesiones de la consola de administración: un formulario para programar una sesión y, debajo, la lista de sesiones con el número de inscritos.

Resumen del Proyecto

Zorzal Morazán es una plataforma de inscripción y asistencia para una universidad con varios campus. El personal programa sesiones, los estudiantes se inscriben y registran su asistencia, y la información que antes vivía en hojas de cálculo ahora entra y sale de Google Sheets. Lo diseñé y construí de principio a fin. La interfaz está en español.

Qué hace

  • Cuentas de estudiantes: inicio de sesión con correo y contraseña, con Google o con un enlace mágico, y el estado de graduación de cada estudiante se mantiene junto a la cuenta.
  • Sesiones y registro de asistencia: el personal programa sesiones y los estudiantes se inscriben. El registro de asistencia funciona desde un teléfono incluso sin conexión, con un código de acceso propio de cada sesión.
  • Consola de administración: tres roles (super administrador, administrador del sistema y administrador de área) limitados a un campus y un área académica, con bitácora de auditoría, cola de trabajos en segundo plano y configuración.
  • Google Drive y Sheets: se importan y exportan listas, se exploran carpetas y la plataforma aprende equivalencias entre grafías y encabezados.
  • Notificaciones: correo electrónico y Telegram, con verificación de direcciones, un registro de envíos y una cuota diaria.
  • Campus de demostración: campus de ejemplo sembrados para demostraciones, que se pueden restablecer cuando se necesite.

La página de inicio de la consola de administración, con las secciones disponibles para un super administrador.

Asistencia que resiste una mala conexión

El registro de asistencia ocurre en el lugar de la actividad, desde el teléfono de un voluntario, donde la señal no siempre es buena. Al abrir la pantalla con el código de acceso de la sesión se descarga una sola vez la lista de estudiantes inscritos; después, cada registro se guarda de inmediato en el dispositivo y se envía cuando la red lo permite, en orden y sin duplicados. Como la lista ya está en el teléfono, quien no está inscrito se rechaza en la puerta.

La pantalla para ingresar el código de asistencia en un teléfono.

Cómo está construida

  • API: ASP.NET Core sobre .NET 10 con EF Core y PostgreSQL. El proyecto de dominio no depende de EF ni de ASP.NET, y los controladores se mantienen delgados.
  • Web: una aplicación React 19 de una sola página con Vite, TypeScript, Tailwind CSS v4 y TanStack Query, desplegada en Vercel.
  • Base de datos: migraciones de solo adición aplicadas con dbmate, más datos de referencia sembrados.
  • Resiliencia: la API corre en Docker con una réplica de respaldo por streaming, y la interfaz pasa a modo de solo lectura cuando responde la réplica.
  • Pruebas: las pruebas de integración corren contra un PostgreSQL real y migrado en un contenedor, y cada página y estado de la aplicación se puede explorar en Storybook con datos simulados.