Extract shared utilities (color functions, icon registry), replace hero
banners with compact PageHeader, add TrimesterSelector/ConfirmDialog/
Breadcrumb components, consolidate off-palette colors to design tokens,
convert AssessmentListView to table layout, compress ResultsView stats
into horizontal bar, and inline ClassFormView as a modal in ClassListView.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace window.confirm() with Modal dialogs for class deletion and grade
reset. Add unsaved-changes guards to AssessmentFormView. Warn before
deleting exercises/elements with existing grades. Surface invalid grades
in a detailed Modal after save. Replace GradingView local toasts with
global notification store. Fix missing French accents across CouncilView,
CouncilStudentDetail, and ConfigView. Make dashboard "À corriger" card
and student list rows clickable. Add visual hierarchy to assessment
detail actions. Add loading overlay to trimester switch. Simplify email
sending workflow by removing mode-switch pattern.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: create api/helpers.py with eligible_enrollment_filter,
count_eligible_students, get_active_enrollment, ensure_unique_name,
upsert_app_configs, and build_heatmap. Add full_name properties to
Student model. Apply across all route files (-481/+184 lines).
Frontend: create stores/helpers.js with withLoading composable,
apply to assessments and classes Pinia stores.
96/96 tests pass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change Docker ports from 80/8000 to 8081/8080 (non-privileged)
- Update CORS_ORIGINS in docker-compose.yml and .env.docker
- Update all documentation (README.md, DOCKER.md) with new ports
- Add Podman compatibility section to CHANGELOG.md
- Enable podman-compose usage without root privileges
✨ Fichiers Docker ajoutés:
- backend/Dockerfile: Image Python 3.11 avec uv et FastAPI
- frontend/Dockerfile: Build multi-stage avec Nginx
- docker-compose.yml: Orchestration complète des services
- frontend/nginx.conf: Configuration Nginx avec proxy API
📝 Documentation:
- DOCKER.md: Guide complet de déploiement Docker (monitoring, backup, prod)
- README.md: Section Docker ajoutée
- .env.docker: Template mis à jour pour v2
🔧 Configuration:
- .dockerignore pour backend et frontend
- Volume data/ pour la base de données
- Healthchecks pour les deux services
- Réseau bridge dédié
🚀 Démarrage simplifié:
cp .env.docker .env
docker-compose up -d
Accès: http://localhost (frontend) + http://localhost:8000 (API)
- Correction commande: python -m uvicorn au lieu de uvicorn seul
- Copie de la base de données depuis instance/ vers racine
- README mis à jour avec la bonne commande
- Backend vérifié: /api/v2/health répond healthy ✅