DiabCare
Gestion du diabète
Janvier 2026 – Mai 2026 · Académique · ESPRIT



Plateforme e-santé qui réunit patients diabétiques, médecins et pharmaciens : application Flutter (Android et iOS), API NestJS et back-office React, avec un glucomètre Bluetooth et cinq services d'IA générative (Gemini et Ollama).
En chiffres
0
routes REST documentées (environ)
0
modules NestJS
0
services d'IA
0
lignes de code (environ)
Étude de cas
Le défi
Gérer un diabète, c'est mesurer sa glycémie plusieurs fois par jour, compter ses glucides, voir son médecin tous les trois mois et appeler plusieurs pharmacies pour trouver son insuline. Il fallait réunir patients, médecins et pharmaciens dans un seul outil, avec une IA utile même quand un fournisseur est indisponible.
Architecture
Clients
- App Flutter Android / iOS (MVVM, Provider)
- Back-office React 19 + Vite
- Glucomètre Bluetooth LE
API NestJS 11
- 31 modules, ~175 routes Swagger
- JWT + sessions multi-appareils
- Guards par rôle et Premium
- 3 tâches planifiées (cron)
Données
- MongoDB Atlas (29 schémas)
- Discriminators par rôle
- Index géospatiaux 2dsphere
Services externes
- Gemini + Ollama
- Firebase Cloud Messaging
- RevenueCat
- Google Maps & Sign-In
- Cloudinary
Clients
- App Flutter Android / iOS (MVVM, Provider)
- Back-office React 19 + Vite
- Glucomètre Bluetooth LE
API NestJS 11
- 31 modules, ~175 routes Swagger
- JWT + sessions multi-appareils
- Guards par rôle et Premium
- 3 tâches planifiées (cron)
Données
- MongoDB Atlas (29 schémas)
- Discriminators par rôle
- Index géospatiaux 2dsphere
Services externes
- Gemini + Ollama
- Firebase Cloud Messaging
- RevenueCat
- Google Maps & Sign-In
- Cloudinary
Choix techniques
01
Une IA qui ne tombe jamais
Chaque requête passe par Gemini, puis Ollama en repli, puis un calcul local marqué « faible confiance ». Les réponses JSON sont réparées, validées champ par champ, et les réponses qui recopient le modèle de prompt sont rejetées.
02
Trouver un médicament en urgence
Une demande part vers toutes les pharmacies dans un rayon choisi grâce à une requête $nearSphere sur un index 2dsphere. Elle expire après 2 heures, et un cron la clôture automatiquement.
03
Un seul modèle d'utilisateur
Patients, médecins et pharmaciens partagent la collection users grâce aux discriminators Mongoose : chaque rôle ajoute ses propres champs sans dupliquer l'authentification.
04
Sécurité et consentement
Mots de passe bcrypt, JWT vérifié contre une session active (déconnexion à distance), guards par rôle et par abonnement, et accès du médecin au dossier soumis à l'accord du patient.
Fonctionnalités
- Carnet glycémique : saisie manuelle ou lecture d'un glucomètre Bluetooth Low Energy, moyenne, temps dans la cible et HbA1c estimée
- Alertes selon des seuils médicaux (hypo < 70, critique < 54, hyper > 180, critique > 250 mg/dL), envoyées au patient et à son médecin
- 5 services d'IA : chatbot MediBot nourri des données du patient, analyse de repas par photo, prédiction de la glycémie à 2 h et 4 h, détection de patterns, assistant clinique MediAssist pour le médecin
- Demandes de médicaments géolocalisées envoyées à plusieurs pharmacies proches, qui répondent avec prix et délai de préparation
- Marketplace et commandes en click & collect, avec suivi du statut jusqu'au retrait
- Espace médecin : patientèle, alertes critiques, dossier médical avec rapport généré par IA, agenda de rendez-vous et messagerie
- Gamification des pharmacies (points, badges de Bronze à Diamond, classement), abonnement Premium et boosts de visibilité via RevenueCat
- Back-office React : indicateurs clés, modération des comptes et des produits, commandes et réclamations
Captures d'écran (20)



Un mot sur ce projetUn mot sur ce projet
Une question, un avis, une idée ?
Écrivez-moi directement d'ici. Votre message n'est pas publié : je suis le seul à le lire.
Privé : jamais affiché sur le site