Un sistema de gestión que diseñé e hice solo para una escuela de inglés, a lo largo de dieciséis meses y 419 commits. Gestionó la escuela durante más de un año; dejé de trabajar en él en agosto de 2026 y vuelvo a él en las vacaciones. La matrícula llena el PDF del contrato en el mismo navegador, los contratos salen a firma electrónica con el estado seguido por webhook, la escuela llega a las familias con web push y el horario de clases es un tablero de arrastrar y soltar. La marca y los datos de la escuela son privados, así que la demo de abajo es el mismo panel reconstruido con una marca genérica y datos ficticios, navegable de principio a fin.

01 / EL PROBLEMA
La matrícula vivía en una impresora y un chat de WhatsApp.
Una escuela de inglés hacía la matrícula como la mayoría de las escuelas pequeñas: un contrato llenado a mano, impreso, firmado cuando algún padre pasaba por allí y reclamado por WhatsApp cuando no pasaba. El horario vivía en una hoja de cálculo, los avisos salían de chat en chat y nadie tenía una sola vista de quién estaba matriculado, quién había firmado y a quién le faltaba firmar.
Hice el sistema que reemplazó esa rutina, y lo seguí construyendo durante dieciséis meses.
02 / LA CONSTRUCCIÓN
Una matrícula que llena su propio contrato.
El PDF del contrato se llena en el navegador. Los datos del formulario de matrícula van al contrato real con pdf-lib: sin volver a escribir nada, sin copias desactualizadas. Después el documento sale a firma electrónica, y un webhook cambia su estado en el panel cuando vuelve firmado.
Web push para llegar a las familias. Los avisos salen como notificaciones push en lugar de un mensaje más de WhatsApp perdido en el chat.
Un horario de arrastrar y soltar. Las clases se mueven entre aulas y franjas horarias arrastrándolas, y la agenda se imprime y se exporta para la pared junto a la recepción.
Por debajo: React con TypeScript, Postgres con Drizzle ORM y migraciones numeradas, y una suite de regresión en Playwright que corre contra una base de datos de prueba con datos cargados.
03 / DIECISÉIS MESES
419 commits, de abril de 2025 a agosto de 2026.
Esta es la parte que una demo no puede fingir. El repositorio tiene 419 commits a lo largo de dieciséis meses —unas 50k líneas al final— y el historial se lee como el de un producto real: primero la matrícula, después contratos y firma, después la agenda, después push. Los cambios de esquema salieron como migraciones; los flujos que importan están cubiertos por pruebas end-to-end.
Un sistema solo acumula dieciséis meses de commits si se usa, y este se usó: matrículas reales, contratos firmados de verdad, un horario real en una pared real.
04 / LA DEMO
El mismo panel, con una marca genérica.
La marca y los datos de la escuela son de la escuela, así que la versión que puedes abrir aquí es una reconstrucción del panel con marca genérica y datos ficticios. Las mismas pantallas, la misma densidad: tres roles de acceso (dirección, coordinación, recepción), cinco gráficos en vivo, importación de hojas de cálculo y un tema claro/oscuro animado con la View Transitions API.
Toda la demo es un solo archivo HTML. Se abre en el móvil, sin login y sin instalar nada, y esa es la idea: el sistema real existe, y esta es la parte que puedo darte como enlace.
Líneas de código
~50k
Commits
419
Meses de trabajo
16
Demo
1 HTML
