Retour aux projets

Construire Schoolify 2.0

Une application étudiante qui rassemble chaque devoir dans un seul calendrier et suit vos notes. La première version était un tableau de bord web. La version 2 est une seule base de code pour le web, une application de bureau et une application mobile.

Rôle
Seul, de la conception au déploiement
Stack
TypeScript, Next.js, Tauri, Expo, Supabase, Turborepo
Statut
En développement, phase de fondation
La direction design Wayfinder : une carte de prochain cours marine affichant la salle AQ 4110 en jaune signal

L'objectif

Les étudiants gardent leur semaine à quatre endroits : le système d'apprentissage de l'école, un calendrier, un tableur de notes et leur tête. Schoolify réunit tout ça dans une seule application ouverte sur chaque appareil qu'ils utilisent, et elle doit être quelque chose à qui un étudiant peut confier ses données scolaires.

La structure

C'est un seul monorepo Turborepo. Les applications sont minces, et la vraie logique vit dans des paquets partagés, si bien qu'une correction arrive sur toutes les plateformes en même temps.

Les applications web, bureau et mobile partagent un même ensemble de paquets, qui parlent à Supabase WebNext.js 16 BureauTauri 2, enveloppe l'app web MobileExpo, iOS et Android Paquets partagéscore, sync, api, tokens SupabasePostgres, sécurité au niveau des lignes
  • core contient les règles, comme le calcul des notes et la gestion du temps, sans aucun code de plateforme dedans.
  • sync contient un adaptateur pour chaque école et système d'apprentissage, si bien qu'ajouter une école ne touche pas les applications.
  • tokens est le système de design, partagé par le web et l'application mobile pour qu'ils ressemblent à un seul produit.
  • La base de données est au Canada, et la sécurité au niveau des lignes est active depuis la première migration. Chaque requête est limitée à l'étudiant qui l'a faite.

Se connecter à l'école, en toute sécurité

La façon facile de lire les cours d'un étudiant est de demander son mot de passe scolaire ou un jeton d'accès. Schoolify ne fait ni l'un ni l'autre. Elle lit le flux calendrier que l'école publie déjà pour chaque étudiant, et ajoute une vraie connexion avec chaque école une fois que celle-ci accorde l'accès. Demander un identifiant scolaire dans l'application n'est jamais expédié dans les versions de la boutique.

Le bug de fuseau horaire qui n'était pas le nôtre

La Colombie-Britannique est passée à l'heure d'été permanente le 8 mars 2026. Une application étudiante vit sur des horaires, alors j'ai vérifié ce que chaque partie de la stack croyait. Sur les 9 environnements d'exécution mesurés, 8 expédiaient des données de fuseau horaire trop anciennes pour connaître ce changement. La base de données était la pire, encore sur les règles de 2025.

La correction est de ne jamais faire confiance à la plateforme là-dessus. L'application expédie sa propre règle pour Vancouver et la vérifie au démarrage, et la base de données n'est jamais chargée de convertir une heure locale de Vancouver. Un cours à 10h30 reste à 10h30.

La vie privée comme fonctionnalité

  • La date de naissance est gardée dans un schéma privé, à l'écart du reste du profil.
  • L'inscription passe par une seule fonction serveur, et aucune autre écriture n'est autorisée tant qu'elle n'a pas tourné. S'inscrire avec Google ou Apple ne peut pas contourner la vérification d'âge.
  • Les étudiants peuvent supprimer leur compte eux-mêmes, avec une période de grâce de 7 jours qu'une reconnexion annule, et exporter leurs données via un lien qui expire après 7 jours.
  • Les données des utilisateurs ne sont jamais vendues.

Concevoir Wayfinder

Le style s'inspire des panneaux de campus. Des gris calmes et un marine encré portent la mise en page, et le jaune signal est réservé à la seule chose qui a besoin de vous maintenant. Les codes de salle sont composés comme les plaques devant un amphithéâtre, en Atkinson Hyperlegible, une police faite pour être lue d'un coup d'œil entre deux cours.

Le premier tableau de bord Schoolify, avec une trajectoire de moyenne, une série d'étude et des priorités d'étude
La première version, un tableau de bord web. La version 2 garde les idées et reconstruit tout ce qu'il y a dessous.

Ce que j'en ai retenu

  • Vérifiez les hypothèses que personne ne vérifie. Les données de fuseau horaire semblaient être un problème résolu jusqu'à ce que je les mesure.
  • Décider ce que l'application ne fera jamais, comme demander un mot de passe scolaire, a rendu le reste de la conception plus facile.
  • Les paquets partagés d'abord, les applications ensuite. Les trois applications ne sont pour l'essentiel que du câblage.