Contexto
El problema
El instituto tenía más de 60 años de trayectoria pero su presencia web era prácticamente nula. No había forma de que los alumnos consultaran información académica online, ni un espacio para que los profesores gestionen contenidos.
Necesitaban algo más que un sitio web. Querían una plataforma que les permitiera administrar usuarios, mostrar información institucional y tener un campus virtual donde alumnos y profesores pudieran interactuar.
Solución
Lo que construí
Sitio público
Landing page con toda la info institucional: carreras, historia, contacto. Responsive desde el vamos, con diseño limpio y navegación simple.
Campus virtual
Sistema de login donde cada usuario ve su dashboard según su rol (alumno, profesor, admin). Los alumnos consultan materias y calificaciones. Los profesores gestionan contenido. Los admins tienen control total.
Panel de administración
CRUD completo de usuarios, gestión de roles y permisos. Los admins pueden crear credenciales temporales, asignar materias y controlar todo desde un solo lugar.
Tecnologías
Stack técnico
Frontend
Sin frameworks. Todo vanilla para tener control total y no agregar peso innecesario.
Backend
Supabase me dio auth, base de datos y APIs sin tener que armar un backend desde cero. Las políticas RLS de PostgreSQL manejan toda la seguridad a nivel de base de datos.
Proceso
Los desafíos técnicos
Sistema de roles. Lo más complejo fue implementar permisos granulares. Un alumno no puede ver datos de otro alumno, un profesor solo ve sus materias, etc. Lo resolví con Row-Level Security directo en PostgreSQL - la seguridad está en la DB, no solo en el frontend.
Autenticación sin frameworks. Manejar sesiones persistentes entre páginas sin usar React o Vue. Tuve que armar un sistema de gestión de estado con localStorage/sessionStorage y validar tokens en cada request.
Arquitectura modular. Organizar 164 archivos para que sea mantenible. Separé todo en módulos: uno para el sitio público, otro para el campus, otro para admin. Cada módulo tiene su propio CSS y JS, sin conflictos.
Aprendizajes
Lo que me llevé
Fue mi primer proyecto full-stack de esta envergadura. Aprendí a pensar en arquitectura desde cero, no solo "hacer que funcione" sino diseñar algo que escale y sea fácil de mantener.
Me metí de lleno en PostgreSQL y entendí cómo funcionan las bases de datos relacionales en serio. Las políticas RLS fueron un desafío pero terminaron siendo la mejor decisión - la seguridad vive en la DB, no en el código.
También aprendí a trabajar con Git de forma profesional, documentar código pensando en que alguien más lo va a leer, y hacer deploy a producción manejando variables de entorno y configs.