
Le projet
La vie étudiante se disperse : un serveur Discord par promo, un groupe de messagerie par association, des annonces sur un intranet que personne n'ouvre, et rien qui survive à la fin de l'année. HubSchool rassemble tout ça en un point d'accès unique, disponible sur mobile et sur le web, et cloisonné par établissement : l'inscription n'est possible qu'avec une adresse e-mail de son école. Projet monté à six, en dehors de nos études, et tenu sur deux ans.
Fonctionnalités
Chaque établissement a son espace, et les étudiants s'y organisent en hubs : des groupes thématiques qu'ils créent eux-mêmes et qui passent par une validation avant d'être ouverts. On y publie des posts avec photos et vidéos, on échange en messagerie temps réel, et les notifications push prennent le relais sur mobile. Un fil de tendances remonte ce qui circule sur la plateforme, filtré par une liste de mots bannis. Les associations disposent de leur propre profil, avec leur ancienneté, leur budget et leurs financements. La modération est outillée de bout en bout — signalement des contenus, bannissement des comptes — et les publications sont traduites automatiquement pour les étudiants internationaux.
Architecture
Le projet est découpé en trois briques indépendantes : une API qui porte la logique métier et les données, un front web déployé sur serveur et géré avec PM2, et une application mobile développée en React Native avec Expo. Chaque brique a son propre dépôt et son propre pipeline.
Données personnelles
La plateforme traite des données d'étudiants identifiables : l'effacement et la portabilité sont implémentés, pas seulement promis. Une demande de suppression ouvre un délai de rétractation de trente jours ; passé ce délai, une tâche planifiée anonymise en cascade le compte, le profil étudiant, les discussions, les hubs, les médias et les notifications, puis envoie un e-mail de confirmation. En parallèle, l'export des données personnelles est généré à la demande, expurgé des champs sensibles, et supprimé automatiquement à expiration.
Déploiement et CI/CD
Les pipelines GitLab CI tournent sur des runners auto-hébergés. Pour le web, chaque déploiement crée un répertoire par commit, partage la configuration via un dossier commun, vérifie que l'application a bien démarré sous PM2, puis nettoie les anciennes versions. Pour le mobile, les APK Android sont générés localement sur le serveur avec EAS Build, ce qui évite de dépendre des builds cloud d'Expo.