diff --git a/README.md b/README.md index 66dc773..8e4370b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Application de quiz pédagogique **souveraine et auto-hébergée**, construite en Rust full-stack. -Conçue pour un usage en présentiel (cours, examens): les étudiants passent le quiz depuis leur navigateur, le professeur consulte les résultats et les statistiques depuis une interface d'administration protégée. +Conçue pour un usage en présentiel (cours, examens) — les étudiants passent le quiz depuis leur navigateur, le professeur consulte les résultats et les statistiques depuis une interface d'administration protégée. ## Stack technique @@ -38,7 +38,7 @@ Conçue pour un usage en présentiel (cours, examens): les étudiants passent le - Cookies de session httponly - Normalisation des noms (lowercase + trim) pour l'anti-doublon -## Architecture de déploiement optimale +## Architecture de déploiement ``` Internet @@ -50,7 +50,7 @@ Traefik Gateway (VM OVH) │ ▼ Raspberry Pi 5 - └── enuxia-quiz (binaire Rust) + └── enuxia-quiz (binaire Rust, systemd) └── quiz.db (SQLite local) ``` @@ -61,6 +61,7 @@ Traefik Gateway (VM OVH) ```bash rustup target add wasm32-unknown-unknown cargo install cargo-leptos +# node et npm installés ``` ### Développement @@ -84,21 +85,58 @@ cargo leptos build --release ## Configuration -Créez un fichier `.env` à la racine : +Créez un fichier `.env` : ```env DATABASE_URL=sqlite:///chemin/absolu/vers/quiz.db SESSION_PASSWORD=code_distribué_aux_étudiants ADMIN_PASSWORD=mot_de_passe_admin +LEPTOS_SITE_ROOT=/opt/enuxia-quiz/site +LEPTOS_SITE_ADDR=0.0.0.0:3010 LEPTOS_TAILWIND_VERSION=v4.1.13 ``` Les mots de passe sont également modifiables en live depuis `/admin/config` sans redémarrer l'application. +## Gestion du service (systemd) + +```bash +# Démarrer +systemctl start enuxia-quiz + +# Arrêter +systemctl stop enuxia-quiz + +# Redémarrer +systemctl restart enuxia-quiz + +# Voir l'état +systemctl status enuxia-quiz + +# Logs en temps réel +journalctl -u enuxia-quiz -f + +# Activer/désactiver le démarrage automatique +systemctl enable enuxia-quiz +systemctl disable enuxia-quiz +``` + +## CI/CD + +Pipeline Gitea Actions (`.gitea/workflows/build-deploy.yml`) : + +- **Runner ARM64 natif sur le Pi** — build natif, tous les cores utilisés +- **Cache Cargo** — premier build ~15min, suivants ~3min +- **Deploy automatique** — `cargo leptos build --release` + `systemctl restart` + +``` +push main → runner Pi → cargo leptos build → cp binaire → systemctl restart +``` + ## Licence MIT — libre d'utilisation, de modification et de déploiement. --- -Construit par [Enuxia](https://enuxia.fr) — systèmes intelligents souverains sur mesure. \ No newline at end of file +Construit par [Enuxia](https://enuxia.com) — systèmes intelligents souverains sur mesure. \ No newline at end of file