# 📚 Notytex v2 - SystĂšme de Gestion Scolaire **Notytex** est une application web moderne pour la gestion complĂšte des Ă©valuations scolaires. Version 2.0 entiĂšrement réécrite avec **FastAPI** (backend) et **Vue.js 3** (frontend). ## 🎯 **Objectif Principal** Simplifier et digitaliser le processus d'Ă©valuation scolaire, de la crĂ©ation des contrĂŽles Ă  la saisie des notes, en offrant une interface moderne et rĂ©active. --- ## 🚀 **DĂ©marrage Rapide** ### **PrĂ©requis** - **Python 3.11-3.13** avec `uv` ([installation](https://docs.astral.sh/uv/)) - **Node.js 22 LTS** avec `npm` - **Git** ### **Backend (FastAPI)** ```bash cd backend uv sync --all-extras uv run python -m uvicorn api.main:app --reload --port 8000 ``` ### **Frontend (Vue.js)** ```bash cd frontend npm install npm run dev ``` ### **AccĂšs (Mode DĂ©veloppement)** - **Frontend** : http://localhost:3000 - **API Backend** : http://localhost:8000 - **Documentation API** : http://localhost:8000/api/v2/docs - **ReDoc** : http://localhost:8000/api/v2/redoc ### **DĂ©ploiement avec Docker / Podman** 🐳 ```bash # Configuration cd docker cp .env.example .env # Éditez .env et changez SECRET_KEY # DĂ©marrage (Docker ou Podman) docker compose up -d # ou podman-compose up -d ``` **AccĂšs (Mode Docker/Podman) :** - **Frontend** : http://localhost:8081 - **API Backend** : http://localhost:8080 - **Documentation API** : http://localhost:8080/api/v2/docs > 💡 **Ports sans privilĂšges** : Les ports 8080/8081 permettent l'utilisation avec Podman sans root 📖 **Documentation complĂšte** : [`docker/README.md`](docker/README.md) --- ## đŸ—ïž **Architecture Technique** ### **Stack Technologique** **Backend :** - FastAPI 0.115+ (API REST moderne avec support async) - SQLAlchemy 2.0.36+ avec aiosqlite (ORM async) - Pydantic 2.10+ (validation et sĂ©rialisation) - Uvicorn 0.32+ (serveur ASGI) - Python 3.11-3.13 **Frontend :** - Vue.js 3.5+ (framework progressif) - Vite 6.0+ (build tool ultra-rapide) - Vue Router 4.5+ (routing SPA) - Pinia 2.2+ (state management) - TailwindCSS 3.4+ (styling moderne) - Chart.js 4.4+ (graphiques interactifs) - Axios 1.7+ (client HTTP) - Node.js 22 LTS **Base de donnĂ©es :** - SQLite (dĂ©veloppement) - PostgreSQL recommandĂ© (production) --- ## 📊 **ModĂšle de DonnĂ©es** ``` ClassGroup (Classe) ↓ Students (ÉlĂšves avec gestion temporelle) ↓ Assessment (Évaluation par trimestre) ↓ Exercise (Exercices) ↓ GradingElement (Questions/CompĂ©tences) ↓ Grade (Notes individuelles) ``` --- ## ⭐ **FonctionnalitĂ©s Principales** ### **Gestion des Classes et ÉlĂšves** - CrĂ©ation et organisation de classes par annĂ©e - Inscription, transfert et dĂ©part d'Ă©lĂšves avec historique - Import CSV en masse - Statistiques par trimestre et par classe ### **SystĂšme d'Évaluation** - CrĂ©ation unifiĂ©e d'Ă©valuations (Ă©val + exercices + barĂšme) - Organisation par trimestre (1, 2, 3) - Filtrage avancĂ© (trimestre, classe, statut de correction) - Indicateurs de progression de correction en temps rĂ©el ### **Notation Dual Configurable** **2 Types de Notation :** 1. **`notes`** : Valeurs numĂ©riques dĂ©cimales (ex: 15.5/20) 2. **`score`** : Échelle 0-3 pour compĂ©tences (0=Non acquis → 3=Expert) **Valeurs SpĂ©ciales :** - `.` = Absent (compte comme 0) - `d` = DispensĂ© (exclu des calculs) - Configuration personnalisable via interface ### **Analyse et Statistiques** - Dashboard avec statistiques globales - RĂ©sultats dĂ©taillĂ©s par Ă©valuation - Histogrammes de distribution des notes - Heatmaps par compĂ©tences et domaines - Statistiques descriptives (moyenne, mĂ©diane, Ă©cart-type) ### **Conseil de Classe** - PrĂ©paration automatique avec donnĂ©es consolidĂ©es - Saisie et historique des apprĂ©ciations - Vue complĂšte des performances par Ă©lĂšve ### **Envoi de Bilans par Email** - GĂ©nĂ©ration automatique de bilans individualisĂ©s - Support SMTP configurable (Gmail, Outlook, etc.) - Templates HTML responsives - Envoi en lot avec rapport dĂ©taillĂ© --- ## đŸ§Ș **Tests** ### **Backend** ```bash cd backend # Tous les tests uv run pytest tests/ -v # Tests unitaires uniquement uv run pytest tests/unit/ -v # Avec couverture uv run pytest tests/ --cov=. --cov-report=html ``` **RĂ©sultat actuel : 99/99 tests ✅** ### **Frontend** ```bash cd frontend # Tests unitaires (Ă  venir) npm run test:unit # Tests E2E (Ă  venir) npm run test:e2e ``` --- ## 📂 **Structure du Projet** ``` notytex/ ├── backend/ # API FastAPI │ ├── api/ # Routes et endpoints │ │ ├── main.py # Application principale │ │ └── routes/ # Routes organisĂ©es par fonctionnalitĂ© │ ├── domain/ # Logique mĂ©tier pure │ │ ├── services/ # Services de calcul │ │ └── value_objects/ # Objets valeur │ ├── infrastructure/ # Couche d'infrastructure │ │ ├── database/ # ModĂšles SQLAlchemy + repositories │ │ └── external/ # Services externes (email) │ ├── schemas/ # ModĂšles Pydantic (validation I/O) │ ├── core/ # Configuration │ └── tests/ # Tests unitaires et d'intĂ©gration ├── frontend/ # SPA Vue.js │ ├── src/ │ │ ├── components/ # Composants rĂ©utilisables │ │ ├── views/ # Pages de l'application │ │ ├── stores/ # State management Pinia │ │ ├── services/ # Clients API │ │ ├── router/ # Configuration routing │ │ └── assets/ # Assets statiques │ └── public/ # Fichiers publics ├── docs/ # Documentation complĂšte ├── school_management.db # Base de donnĂ©es SQLite └── README.md # Ce fichier ``` --- ## ⚙ **Configuration** ### **Backend (`backend/.env`)** ```bash # Base de donnĂ©es DATABASE_URL=sqlite+aiosqlite:///../school_management.db # SĂ©curitĂ© SECRET_KEY=your-secret-key-here-min-32-chars # CORS (origines autorisĂ©es) CORS_ORIGINS=["http://localhost:3000","http://localhost:5173"] # Logging LOG_LEVEL=INFO # Email (optionnel) SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=your-email@gmail.com SMTP_PASSWORD=your-app-password EMAIL_FROM=your-email@gmail.com ``` ### **Frontend** Le frontend utilise un proxy Vite configurĂ© dans `vite.config.js` pour rediriger `/api` vers le backend. --- ## 📖 **Documentation ComplĂšte** - **Architecture dĂ©taillĂ©e** : [`REWRITE.md`](REWRITE.md) - Historique de la réécriture v1 → v2 - **Backend** : [`backend/README.md`](backend/README.md) - Documentation API - **ParitĂ© fonctionnelle** : [`backend/docs/PARITY_CHECKLIST.md`](backend/docs/PARITY_CHECKLIST.md) - **Documentation API** : http://localhost:8000/api/v2/docs (Swagger) --- ## 🔧 **Commandes Utiles** ### **Backend** ```bash # DĂ©marrer l'API en mode dĂ©veloppement cd backend && uv run python -m uvicorn api.main:app --reload --port 8000 # ExĂ©cuter les tests cd backend && uv run pytest tests/ -v # Formater le code cd backend && uv run black . # Linter cd backend && uv run ruff check . ``` ### **Frontend** ```bash # DĂ©marrer en dĂ©veloppement cd frontend && npm run dev # Build pour production cd frontend && npm run build # Preview du build cd frontend && npm run preview ``` --- ## 📊 **État du Projet** ### **FonctionnalitĂ©s ImplĂ©mentĂ©es (100%)** | Module | FonctionnalitĂ©s | Status | |--------|----------------|--------| | **Classes** | CRUD, stats, dashboard | ✅ | | **ÉlĂšves** | CRUD, inscriptions, import CSV | ✅ | | **Évaluations** | CrĂ©ation unifiĂ©e, filtres, progression | ✅ | | **Notation** | Grille interactive, valeurs spĂ©ciales | ✅ | | **RĂ©sultats** | Statistiques, graphiques, heatmaps | ✅ | | **Conseil** | PrĂ©paration, apprĂ©ciations | ✅ | | **Configuration** | CompĂ©tences, domaines, Ă©chelle, SMTP | ✅ | | **Email** | Envoi bilans individualisĂ©s | ✅ | ### **Tests** - **Backend** : 99/99 tests unitaires ✅ - **API** : 45 routes opĂ©rationnelles ✅ - **Frontend** : 14 vues complĂštes ✅ --- ## 🎓 **Public Cible** - Enseignants du secondaire (collĂšge/lycĂ©e) - Établissements souhaitant digitaliser leurs Ă©valuations - Contexte de coexistence notation classique / Ă©valuation par compĂ©tences --- ## 📝 **Notes de Version** ### **Version 2.0.0 (Actuelle)** - ✹ Réécriture complĂšte en FastAPI + Vue.js - ⚡ Architecture moderne avec sĂ©paration backend/frontend - 🚀 API REST JSON pure avec documentation OpenAPI - 🎹 Interface utilisateur rĂ©active avec Vue 3 - 📊 Graphiques interactifs avec Chart.js - 🔒 Validation Pydantic sur toutes les entrĂ©es - đŸ§Ș 99 tests unitaires avec 100% de succĂšs ### **Version 1.0.0 (Legacy)** - Application Flask monolithique - Code disponible dans l'historique Git (branche `main` avant migration) --- ## đŸ€ **Contribution** Ce projet a Ă©tĂ© dĂ©veloppĂ© avec l'aide d'assistants IA (principalement Claude). Les contributions sont bienvenues ! --- ## 📄 **Licence** MIT --- ## 🔗 **Liens Utiles** - [FastAPI Documentation](https://fastapi.tiangolo.com/) - [Vue.js 3 Documentation](https://vuejs.org/) - [SQLAlchemy 2.0](https://docs.sqlalchemy.org/en/20/) - [Pydantic](https://docs.pydantic.dev/) - [TailwindCSS](https://tailwindcss.com/) --- **DĂ©veloppĂ© avec ❀ pour simplifier la vie des enseignants**