El objetivo
Los estudiantes mantienen su semana en cuatro sitios: el sistema de aprendizaje de la escuela, un calendario, una hoja de cálculo de calificaciones y su cabeza. Schoolify reúne eso en una sola app abierta en cada dispositivo que usan, y tiene que ser algo en lo que un estudiante pueda confiar sus datos escolares.
La forma que tiene
Es un único monorepo de Turborepo. Las apps son delgadas, y la lógica real vive en paquetes compartidos, así que una corrección llega a todas las plataformas a la vez.
- core contiene las reglas, como el cálculo de calificaciones y el manejo del tiempo, sin código de plataforma dentro.
- sync contiene un adaptador para cada escuela y sistema de aprendizaje, así que añadir una escuela no toca las apps.
- tokens es el sistema de diseño, compartido por la web y la app de teléfono para que parezcan un solo producto.
- La base de datos está en Canadá, y la seguridad a nivel de fila está activa desde la primera migración. Cada consulta está limitada al estudiante que la hizo.
Conectando con la escuela, de forma segura
La forma fácil de leer los cursos de un estudiante es pedirle su contraseña de la escuela o un token de acceso. Schoolify no hace ninguna de las dos. Lee el feed de calendario que la escuela ya publica para cada estudiante, y añade el inicio de sesión propio con cada escuela una vez que esa escuela otorga acceso. Pedir un inicio de sesión escolar dentro de la app nunca se lanza en las builds de la tienda.
El error de zona horaria que no era nuestro
Columbia Británica pasó al horario de verano permanente el 8 de marzo de 2026. Una app de estudiante vive de horarios, así que revisé lo que cada parte del stack creía. De los 9 entornos de ejecución que medí, 8 traían datos de zona horaria demasiado antiguos para conocer el cambio. La base de datos era la peor, todavía con las reglas de 2025.
La solución es nunca confiar en la plataforma para esto. La app trae su propia regla para Vancouver y la verifica al arrancar, y a la base de datos nunca se le pide que convierta una hora local de Vancouver. La clase de las 10:30 se queda a las 10:30.
La privacidad como función
- La fecha de nacimiento se guarda en un esquema privado, aparte del resto del perfil.
- El onboarding pasa por una sola función de servidor, y no se permite ninguna otra escritura hasta que se haya ejecutado. Registrarse con Google o Apple no puede saltarse la verificación de edad.
- Los estudiantes pueden borrar su cuenta ellos mismos, con un período de gracia de 7 días que se cancela si vuelven a iniciar sesión, y exportar sus datos a través de un enlace que caduca a los 7 días.
- Los datos de los usuarios nunca se venden.
Diseñando Wayfinder
El aspecto se basa en la señalética del campus. Grises calmados y azul tinta llevan el diseño, y el amarillo señal se reserva para lo único que necesita tu atención ahora. Los códigos de aula están puestos como las placas fuera de un aula magna, en Atkinson Hyperlegible, una tipografía hecha para leerse de un vistazo entre clases.
Lo que aprendí
- Revisa las suposiciones que nadie revisa. Los datos de zona horaria parecían un problema resuelto hasta que lo medí.
- Decidir lo que la app nunca hará, como pedir una contraseña escolar, hizo más fácil el resto del diseño.
- Paquetes compartidos primero, apps después. Las tres apps son sobre todo cableado.