Pharmapedia — plateforme de révision en pharmacie
Une plateforme de révision pour étudiants en pharmacie, en production sur deux périodes d'examens. Six années de programme, un accès vendu sous forme de licences plutôt que par inscription, et des quiz de révision générés à la demande depuis une banque de questions. La charge est le point intéressant : quasi nulle la majeure partie de l'année, puis toute la promotion arrive dans la quinzaine qui précède les examens.
- PROGRAMME
- Six années, semestre → module → leçon
- ACCÈS
- Licences par année, semestre ou module
- ÉVALUATION
- Entraînement, examen chronométré, révision
- SURFACE
- 80 routes, un seul process Next.js
- PIC
- Quinzaine d'examens, quelques milliers
modules / leçons
vérif. de portée
questions actives
mélangé, ×N
↳ progression sauvegardée ; la soumission est transactionnelle↳ une seconde soumission sur une tentative terminée est refusée
- UTILISATEURS
- Quelques milliers en pharmacie
- PROFIL
- Charge concentrée sur les examens
- CONSTATÉ
- Aucune panne signalée sur deux sessions
- DONNÉES
- PostgreSQL 16 · Prisma · 12 migrations
LE POINT DIFFICILE
L'accès est vendu sous forme de licences, pas par inscription, et une licence porte sur une année, un semestre ou un module — exactement un des trois. Déterminer ce qu'un étudiant peut ouvrir revient à croiser son année avec chacune de ses licences actives, à chaque requête : et c'est cette requête qui doit rester peu coûteuse quand toute la promotion se connecte le même soir.
CE QUE J'AI ÉCARTÉ
L'inscription comme modèle d'accès. Elle correspond à la façon dont une université raisonne, mais pas à la façon dont le produit se vend : un étudiant achète un module, un semestre, ou l'année. Faire de la licence l'unité permet d'accorder et de faire expirer un accès sans toucher au programme qu'il vise.
CE QUE JE CORRIGERAIS EN PREMIER
Le cache et la limitation de débit vivent tous deux dans le process, ce qui fixe l'application à une seule instance : une seconde servirait ses propres lectures périmées et doublerait la limite réelle. Les déplacer derrière Redis est ce qui doit être fait avant que la charge ne grandisse encore — la forme actuelle a tenu, elle n'est pas confortable.