Lab'IA est une plateforme web intelligente qui permet aux utilisateurs de saisir leurs analyses médicales de laboratoire et d'obtenir des explications claires et personnalisées grâce à l'intelligence artificielle de Mistral.
- À propos du projet
- Fonctionnalités principales
- Technologies utilisées
- Architecture du projet
- Installation
- Utilisation
- Organisation de l'équipe
Lab'IA a pour mission de rendre les analyses médicales de laboratoire accessibles et compréhensibles pour tous. Souvent complexes et difficiles à interpréter, les résultats d'analyses médicales peuvent être sources d'inquiétude ou de confusion pour les patients.
Notre plateforme utilise l'IA de Mistral pour :
- 📊 Analyser automatiquement les résultats médicaux
- 💡 Fournir des explications simplifiées et vulgarisées
- 🎯 Proposer des conseils pratiques pour améliorer les résultats
⚠️ Avertissement médical : Lab'IA est un outil d'information et ne remplace en aucun cas l'avis d'un professionnel de santé. Consultez toujours votre médecin pour une interprétation médicale approfondie.
- Saisie des analyses : Interface intuitive pour entrer manuellement les résultats d'analyses
- Upload de documents : Importation directe de PDF ou images d'analyses
- Analyse IA : Interprétation automatique des résultats via l'API Mistral
- Visualisation claire : Présentation des résultats avec codes couleur (normal/anormal)
- Explications détaillées : Descriptions accessibles de chaque paramètre médical
- Conseils personnalisés : Recommandations pour améliorer les résultats
- React.js - Framework JavaScript pour l'interface utilisateur
- React Router - Navigation entre les pages
- Axios - Requêtes HTTP vers le backend
- Tailwind CSS - Framework CSS utilitaire pour le styling
- Node.js - Environnement d'exécution JavaScript
- Express.js - Framework web pour l'API REST
- Supabase Auth - Authentification des utilisateurs
- Supabase Postgres - Base de données hébergée
- Drizzle ORM - Requêtes SQL métier typées
- Mistral AI API - Intelligence artificielle pour l'analyse des résultats
- Docker - Conteneurisation
- GitHub Actions ou GitLab CI - Intégration continue
- Vercel ou Render - Déploiement frontend
- Railway ou Heroku - Déploiement backend
ProjetLabTech/
├── frontend/ # Application React.js
│ ├── public/
│ ├── src/
│ │ ├── components/ # Composants réutilisables
│ │ ├── pages/ # Pages de l'application
│ │ ├── services/ # Services API
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Fonctions utilitaires
│ │ ├── styles/ # Styles globaux
│ │ └── App.js # Composant principal
│ ├── package.json
│
├── backend/ # API Express.js
│ ├── src/
│ │ ├── controllers/ # Logique métier
│ │ ├── routes/ # Routes API
│ │ ├── services/ # Services de traitement du PDF
│ │ └── server.js # Point d'entrée
│ ├── package.json
│
└── README.md # Documentation
- Node.js (v20+)
- npm ou yarn
- Compte Mistral AI (pour la clé API)
- Projet Supabase (Auth + Postgres)
# Cloner le repository
git clone <repository-url>
cd ProjetLabTech/backend
# Installer les dépendances
npm install
# Configurer les variables d'environnement
cp .env.example .env
# Démarrer le serveur de développement
npm run dev
# Créer/mettre à jour les tables users avec Drizzle
npm run db:pushcd ProjetLabTech/frontend
# Installer les dépendances
npm install
# Démarrer l'application
npm startL'application sera accessible sur http://localhost:3000
Le frontend utilise Vitest + Testing Library pour les tests unitaires et d'intégration.
FRONT/src/test/
├── setup.ts # Configuration globale (jest-dom)
├── unit/ # Tests unitaires — composants isolés
│ ├── UiButton.test.tsx
│ ├── Card.test.tsx
│ ├── Header.test.tsx
│ ├── Footer.test.tsx
│ └── TestValueCard.test.tsx
└── integration/ # Tests d'intégration — flux complets
├── Upload.test.tsx
├── Manual.test.tsx
├── ManualValues.test.tsx
└── LabResultsPage.test.tsx
cd FRONT
# Lancer tous les tests une fois (mode CI)
npm run test
# Lancer en mode watch (développement)
npm run test:watch
# Générer un rapport de couverture (HTML dans FRONT/coverage/)
npm run test:coverage
# Tout vérifier d'un coup : lint + tests + build
npm run ciÀ chaque push ou pull request, la pipeline .github/workflows/ci.yml exécute automatiquement :
- Lint (
eslint) — vérifie la qualité du code TypeScript - Tests (49 tests) — unitaires et intégration
- Build (
vite build) — vérifie que la production compile
Le déploiement Vercel ne se déclenche qu'après que ces 3 étapes soient passées avec succès.
Le fichier vercel.json à la racine configure le déploiement :
{
"buildCommand": "cd FRONT && npm install && npm run build",
"outputDirectory": "FRONT/dist",
"rewrites": [{ "source": "/(.*)", "destination": "/" }]
}Variables d'environnement Vercel (Project Settings → Environment Variables) :
| Variable | Description |
|---|---|
VITE_API_URL |
URL du backend (ex: https://ton-backend.up.railway.app) |
Le backend Express (backend/) ne peut pas tourner sur Vercel (serverless). Déployer sur Railway ou Render :
# Démarrage
cd backend && npm start- Nouvelle analyse : Cliquer sur "Nouvelle analyse" et saisir les résultats ou uploader un fichier PDF
- Analyser : L'IA de Mistral génère une analyse détaillée
- Consulter les résultats : Visualiser les explications et conseils
- Lorsold Pradon Alyssia - Développement React.js
- Camara Diangou - Développement React.js
- Charlery Malcolm - Développement Express.js
- Intsorou Samentah - Vision produit, Définition des fonctionnalités
- Sfez Noah - Gestion agile, Coordination de l'équipe
- Validation des entrées avec express-validator
- Rate limiting pour prévenir les abus
- CORS configuré pour les domaines autorisés
- HTTPS en production
Ce projet est réalisé dans le cadre d'un projet académique.
Pour toute question ou suggestion, contactez l'équipe Lab'IA.
Note : Ce projet est en cours de développement. Les fonctionnalités peuvent évoluer.