Système éducatif intelligent hors ligne pour les écoles du Burkina Faso. Diagnostic pédagogique, remédiation automatique et suivi personnalisé sans Internet.
# EduLink AI — Backend
API REST construite avec **FastAPI + SQLite + ChromaDB**, conçue pour tourner en réseau local sans Internet.
---
## Stack technique
| Composant | Technologie |
|---|---|
| Framework | FastAPI |
| Base de données | SQLite via SQLModel |
| Authentification | JWT (python-jose) + bcrypt |
| Temps réel | WebSocket natif FastAPI |
| IA / LLM | llama-cpp-python (modèle GGUF local) |
| Embeddings | sentence-transformers `all-MiniLM-L6-v2` |
| Vector store | ChromaDB (persistant, local) |
| Parsing PDF | PyMuPDF (fitz) |
| SMS | Africa's Talking API (simulation par défaut) |
| Config | python-dotenv |
---
## Structure
```
backend/
├── main.py # Point d'entrée FastAPI, enregistrement des routes
├── config.py # Paramètres centralisés chargés depuis .env
├── database.py # Engine SQLite + init tables
├── models.py # Tables : User, Exercise, Submission,
│ # Alert, SMSLog, TeacherNote
├── schemas.py # Schémas Pydantic (request / response)
├── dependencies.py # Guards JWT : get_current_user, require_teacher, require_admin
├── ws_manager.py # Gestionnaire WebSocket (singleton)
├── seed.py # Chargement des données de démonstration
├── requirements.txt
├── routes/
│ ├── auth.py # POST /api/auth/login · GET /api/auth/me
│ ├── exercises.py # CRUD exercices + POST /api/exercises/generate (IA)
│ ├── submissions.py # Soumissions, scoring, broadcast WS, trigger alertes/SMS
│ ├── dashboard.py # Stats classe · alertes · progression élève
│ ├── admin.py # Gestion utilisateurs · classes · stats globales
│ ├── notes.py # Notes pédagogiques enseignant sur élèves
│ ├── remediation.py # Plan de remédiation IA + logs SMS
│ ├── chat.py # Chat RAG : POST /api/chat
│ └── ws.py # WebSo …