Plateforme de prise de rendez-vous
Une plateforme web multi-rôles gérant le cycle complet — du patient qui trouve un médecin, à la candidature examinée par un admin, jusqu'au rendez-vous confirmé.
3
rôles utilisateurs
Stack
Le défi
L'accès aux soins à Djibouti est fragmenté. Trouver le bon médecin, connaître ses disponibilités et prendre rendez-vous nécessitait des appels téléphoniques, du bouche-à-oreille et de la chance. Il n'existait aucun système centralisé — encore moins un capable de vérifier les accréditations médicales.
Ce qu'on a construit
Nous avons construit une plateforme à trois rôles : les patients parcourent et réservent, les médecins postulent et gèrent leur agenda, les admins examinent les candidatures et valident les accréditations. Le flux d'onboarding utilise des liens magiques — sans friction de mot de passe. Les téléversements de fichiers gèrent les documents d'accréditation. Un formulaire pas-à-pas guide les nouveaux médecins dans leur candidature sans les submerger.
Décisions clés
Rôle stocké dans appUser, pas dans la table auth
Better Auth gère la couche session mais ne sait rien des rôles métier. On stocke le rôle exclusivement dans notre propre table appUser — les préoccupations d'auth restent séparées de la logique produit.
Aucune entité auth avant approbation admin
Les candidatures médecins vivent dans une table doctorApplication sans utilisateur auth correspondant. Seulement après approbation admin le système appelle signUpMagicLink() et crée l'enregistrement auth. Ça empêche les médecins non vérifiés d'avoir une session active.
SteppedFormBuilder pour l'onboarding
Plutôt qu'un formulaire long unique, on a construit un composant wizard avec validation Zod par étape et une étape de prévisualisation avant soumission finale. Réduit l'abandon et rend le téléversement de documents guidé, pas bureaucratique.
Le résultat
Une plateforme en production au service des médecins et patients à Djibouti. Le flux d'approbation admin a traité chaque médecin actuellement sur la plateforme. Zéro violation d'accréditation depuis le lancement.