Plateforme complÚte pour la formation aux ECOS (Examens Cliniques Objectifs Structurés) comprenant :
- Plateforme Web : Application React/Node.js pour la révision interactive
- Grid Generator : Outils de génération de grilles d'évaluation depuis des PDFs
./start-ecos.shLe script détecte automatiquement votre environnement et propose :
- Mode Docker (recommandé) - Configuration complÚte en containers
- Mode Développement Local - Backend + Frontend en local
- Informations systÚme - Vérifier les dépendances installées
cd platform
docker-compose up -dAccĂšs :
- Frontend : http://localhost
- API : http://localhost/api/v1
- Adminer : http://localhost:8080
# Terminal 1 - Backend
cd platform/backend
npm install
npm run dev
# Terminal 2 - Frontend
cd platform/frontend
npm install
npm run devAccĂšs :
- Frontend : http://localhost:3001
- API : http://localhost:3000/api/v1
./stop-ecos.shecos-grid-generator/
âââ platform/ # Plateforme web complĂšte
â âââ backend/ # API Node.js/Express + PostgreSQL
â âââ frontend/ # Application React/Vite
â âââ docker/ # Configuration Docker
â âââ docker-compose.yml # Orchestration des services
â
âââ Chablon/ # Templates et modĂšles
â âââ Model - Grille ECOS.html # ModĂšle de grille d'Ă©valuation
â âââ Model - Feuille Porte.html # ModĂšle de feuille-porte
â âââ Generateur_de_Grilles_ECOS.html # GĂ©nĂ©rateur automatique
â
âââ json_files/ # Fichiers JSON des cas cliniques
â âââ AMBOSS/ # Cas AMBOSS
â âââ RESCOS/ # Cas RESCOS
â âââ USMLE/ # Cas USMLE
â
âââ generated/ # Fichiers gĂ©nĂ©rĂ©s
â âââ grilles/ # Grilles d'Ă©valuation HTML/PDF
â âââ feuille-porte/ # Feuilles-porte HTML/PDF
â
âââ scripts/ # Scripts d'analyse et migration
â âââ generation/ # Scripts de gĂ©nĂ©ration
â âââ migration/ # Scripts de migration
â âââ standardization/ # Standardisation des donnĂ©es
â
âââ data-stat/ # DonnĂ©es statistiques
â âââ -ECOS-2013-2017.pdf # Archive des cas ECOS
â âââ ECOS-2013-2017-final.csv # DonnĂ©es extraites (174 cas)
â
âââ docs/ # Documentation complĂšte
â âââ ARCHITECTURE.md # Architecture technique
â âââ API_DOCUMENTATION.md # Documentation API
â âââ DEPLOYMENT.md # Guide de dĂ©ploiement
â âââ reports/ # Rapports techniques archivĂ©s
â
âââ templates/ # Templates rĂ©utilisables
â âââ generators/ # GĂ©nĂ©rateurs
â âââ models/ # ModĂšles de donnĂ©es
â
âââ CLAUDE.md # Instructions pour Claude Code
âââ README.md # Ce fichier
- Gestion de cas cliniques : 496+ cas ECOS structurés
- Recherche et filtrage : Par source, spécialité, systÚme
- Suivi de progression : Notes, favoris, historique
- Mode révision : Identification des lacunes
- Mode examen : Minuteur 13 minutes avec alertes
- Authentification : JWT + refresh tokens
- Paiements : Intégration Stripe
- API RESTful : Documentation complĂšte
- Extraction PDF : Lecture automatique de cas cliniques
- Traduction : Allemand â Français (terminologie mĂ©dicale)
- Génération JSON : Structure standardisée
- Export HTML/PDF : Grilles interactives + PDFs imprimables
- Notation dynamique : Calcul temps réel des scores
- Codes couleur : Diagnostics, examens, commentaires
- Frontend : React 18, Vite, TailwindCSS, React Router
- Backend : Node.js, Express, PostgreSQL, Redis
- Containerisation : Docker, Docker Compose
- Monitoring : Prometheus, Grafana (optionnel)
- Reverse Proxy : Nginx
- Base de données : PostgreSQL 15
- Templates : HTML5, CSS3, JavaScript ES6+
- Génération PDF : Puppeteer
- Traduction : Claude AI
- Parsing : pdf-parse, Custom extractors
La plateforme utilise une architecture microservices avec Docker Compose :
| Service | Description | Port |
|---|---|---|
| postgres | Base de données PostgreSQL 15 | 5432 |
| redis | Cache et sessions | 6379 |
| backend | API Node.js/Express | 3000 |
| frontend | Application React | 3001 |
| nginx | Reverse proxy | 80, 443 |
| adminer | Gestion base de données (dev) | 8080 |
| prometheus | Monitoring (optionnel) | 9090 |
| grafana | Dashboards (optionnel) | 3002 |
Copier .env.example vers .env et configurer :
# Base de données
DB_HOST=postgres
DB_NAME=ecos_platform
DB_USER=postgres
DB_PASSWORD=your_secure_password
# JWT
JWT_SECRET=your_jwt_secret
JWT_REFRESH_SECRET=your_jwt_refresh_secret
# Stripe (optionnel)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PUBLISHABLE_KEY=pk_test_...
# Email (optionnel)
EMAIL_HOST=smtp.gmail.com
EMAIL_USER=your@email.com
EMAIL_PASSWORD=your_password- Standard : postgres, redis, backend, frontend, nginx
- Dev : + adminer (gestion base de données)
- Monitoring : + prometheus, grafana (métriques)
- Architecture - Architecture technique détaillée
- API - Documentation des endpoints
- Déploiement - Guide de déploiement
- Quick Start Platform - Guide complet plateforme
- Claude Instructions - Instructions pour Claude Code
Si le projet n'est pas encore organisé avec la nouvelle structure :
./reorganize-project.shCe script :
- Crée une structure
/grid-generator/séparée - Archive les anciennes versions (v1-v5)
- Consolide la documentation
- Nettoie les fichiers temporaires
- Crée une sauvegarde avant toute modification
cd platform/backend
npm test
npm run test:coveragecd platform/frontend
npm test
npm run test:e2ecd platform
./test-platform-health.shAccéder à Grafana : http://localhost:3002
- User : admin
- Password : admin (ou valeur de
GRAFANA_PASSWORD)
Dashboards inclus :
- Métriques systÚme (CPU, RAM, disque)
- Performances backend (requĂȘtes/s, latence)
- Ătat base de donnĂ©es
# Vérifier les ports occupés
lsof -i :3000
lsof -i :3001
# ArrĂȘter les processus
./stop-ecos.sh# Nettoyer les containers
docker-compose -f platform/docker-compose.yml down -v
# Reconstruire
docker-compose -f platform/docker-compose.yml build --no-cache
docker-compose -f platform/docker-compose.yml up -d# Accéder à PostgreSQL
docker-compose -f platform/docker-compose.yml exec postgres psql -U postgres -d ecos_platform
# Réinitialiser la base
docker-compose -f platform/docker-compose.yml down -v
docker-compose -f platform/docker-compose.yml up -d# Tous les services
docker-compose -f platform/docker-compose.yml logs -f
# Service spécifique
docker-compose -f platform/docker-compose.yml logs -f backend
docker-compose -f platform/docker-compose.yml logs -f frontend- Fork le projet
- Créez votre branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
feat: Nouvelle fonctionnalité
fix: Correction de bug
docs: Documentation
style: Formatage
refactor: Refactorisation
test: Tests
chore: Maintenance
- JavaScript : ESLint avec configuration custom
- React : Functional components + Hooks
- CSS : TailwindCSS + BEM pour custom CSS
- API : RESTful avec versioning (
/api/v1)
- Authentification JWT avec refresh tokens
- Rate limiting sur les endpoints sensibles
- Validation des entrées avec Joi/Zod
- Headers de sécurité (helmet.js)
- CORS configuré
- Protection CSRF
- Sanitization des données
- Backend : Cache Redis pour requĂȘtes frĂ©quentes
- Frontend : Code splitting, lazy loading
- Base de données : Index optimisés, connexion pool
- Images : Compression et lazy loading
- API : Pagination sur toutes les listes
Ce projet est sous licence [Ă DĂFINIR].
- Damien Fulliquet - Développement initial et architecture
- Claude AI pour l'assistance au développement
- Communauté médicale suisse pour les retours
- AMBOSS, RESCOS, USMLE pour les cas cliniques
Pour toute question ou problĂšme :
- Ouvrir une issue sur GitHub
- Consulter la documentation complĂšte
- Vérifier les problÚmes connus
Version : 2.0.1 DerniĂšre mise Ă jour : Novembre 2025 Status : â Production Ready