Note technique · Publié le 25 septembre 2026
Six cents doctorants et plus un seul tableur
Une demande de l'Université Paris Cité, un comité de suivi par an et par doctorant, et une application qui prend toute la chaîne, du dossier au PDF final, à côté de FileMaker.
L'Université Paris Cité m'a contacté pour ce projet. Chaque doctorant doit être reçu une fois par an par un comité de suivi individuel, prévu par l'arrêté du 25 mai 2016, et son rapport conditionne la réinscription. Pour environ 600 doctorants sur cinq départements, tout passait par des formulaires Word, des courriels et des tableurs. L'école voulait récupérer les heures que ce circuit coûtait chaque année.
L'application prend la chaîne complète. L'administration importe un export FileMaker, tolérant sur l'encodage et les colonnes, et envoie les liens, un par un ou en masse. Le doctorant remplit son dossier et dépose son rapport. Un membre du comité rédige le compte rendu, avec une section confidentielle réservée à la direction. Le directeur de département reçoit le tout, et le rapport final part au doctorant, directeur de thèse en copie. Un PDF à chaque étape.
Le questionnaire se configure sans moi. Dix types de questions, obligatoires ou non, visibles ou non dans le PDF, confidentielles ou non, et un export en bloc pour préparer une campagne à part. Une question confidentielle est masquée d'office dans la version du doctorant, même marquée visible, et l'anomalie est journalisée.
FileMaker reste le référentiel administratif. Six drapeaux décrivent l'avancement d'un dossier et composent l'identifiant renvoyé à FileMaker, et trois routes d'export protégées par clé alimentent son connecteur. Côté application, MongoDB fait foi.
Côté sécurité, un mot de passe haché puis un code à usage unique par courriel, une garde globale sur toutes les routes, des fichiers déposés qui ne sont plus en accès libre, et un journal de chaque requête, en base avec purge à douze mois, envoyé aussi vers un collecteur syslog externe pour survivre à une compromission de la machine.
Environ 16 000 lignes de TypeScript, NestJS et React, sur Debian 13 avec PM2 et nginx. Les limites connues, comme le lien du doctorant sans jeton, sont documentées dans le dossier remis au RSSI plutôt que passées sous silence. La page du projet est une étude de cas, avec des écrans reconstitués et des données fictives.