Déploiement¶
Adaptive Learner supporte quatre modes de déploiement.
Mode 1 : Développement local¶
- Backend FastAPI sur le port 18001
- Frontend Vite sur le port 15174 (avec HMR)
- SQLite dans
~/.local/share/adaptive_learner/
Mode 2 : GitHub Pages (mode Dexie)¶
Le déploiement GitHub Pages est un build frontend statique sans backend.
Le build résultant (frontend/dist/) peut être déployé sur n'importe
quel hébergement de fichiers statiques.
Limites : pas de sessions IA backend, pas de synchronisation local, les données persistent uniquement dans le navigateur.
Le build officiel GitHub Pages est à
https://astrapi69.github.io/adaptive-learner/.
Contenu bundlé¶
La commande copy-bundled-content.mjs (exécutée automatiquement en prébuild)
copie les leçons de contenu du dépôt de contenu dans le bundle statique,
permettant un accès hors ligne aux leçons sans téléchargement.
Mode 3 : Docker Compose (production)¶
Configuration via les variables d'environnement dans .env :
ADAPTIVE_LEARNER_SECRET_KEY=...
ADAPTIVE_LEARNER_DATA_DIR=/app/data
ADAPTIVE_LEARNER_CORS_ORIGINS=https://votre-domaine.com
L'image Docker utilise un utilisateur non-root (adaptive_learner).
Le volume de données est monté sur /app/data.
Mode 4 : Launcher de bureau (PyInstaller)¶
Un launcher cross-plateforme empaquette le backend Python en un binaire autonome via PyInstaller.
L'exécutable résultant démarre le backend et ouvre le frontend dans le navigateur système par défaut.
Plateformes : macOS (Intel + Apple Silicon), Windows x64, Linux x64.
Variables d'environnement¶
| Variable | Défaut | Description |
|---|---|---|
ADAPTIVE_LEARNER_SECRET_KEY |
aucun (requis) | Clé de chiffrement Fernet |
ADAPTIVE_LEARNER_DATA_DIR |
~/.local/share/adaptive_learner/ |
Répertoire des données |
ADAPTIVE_LEARNER_CONFIG_DIR |
~/.config/adaptive_learner/ |
Répertoire de config |
ADAPTIVE_LEARNER_DEBUG |
false |
Active les endpoints de debug et les traces |
ADAPTIVE_LEARNER_CORS_ORIGINS |
http://localhost:15174 |
Origines CORS autorisées |
ANTHROPIC_API_KEY |
aucun | Clé API Anthropic |
OPENAI_API_KEY |
aucun | Clé API OpenAI |
GEMINI_API_KEY |
aucun | Clé API Gemini |
CI/CD¶
Les workflows GitHub Actions dans .github/workflows/ :
| Workflow | Déclencheur | Ce qu'il fait |
|---|---|---|
ci.yml |
Push / PR | Tests backend + plugins + frontend |
coverage.yml |
Push sur main | Génère les rapports de couverture |
release-gate.yml |
Push de tag | Vérifie la synchronisation des versions, lance la suite complète |
docs.yml |
Push sur main | Build et déploie le site MkDocs |
En-têtes de sécurité (backend)¶
Le middleware CSP du backend (Phase 61) applique :
default-src 'none'pour les routes API pure- Politique adaptée aux CDN pour les chemins Swagger/OpenAPI
- Headers HSTS, X-Frame-Options, X-Content-Type-Options