Repository navigation
02 installation
Public : développeurs et administrateurs système.
| Outil | Version minimale |
|---|---|
| PHP | 8.2+ |
| Composer | 2.x |
| Node.js | 18+ |
| NPM | 9+ |
| MySQL / MariaDB | 8.0+ / 10.4+ recommandé |
Le fichier
.env.exampleLaravel indique encoreDB_CONNECTION=sqlite, mais le dépôt contient une baseline de schéma MySQL (database/schema/mysql-schema.sql). Pour une installation fiable d'Oneduc, utiliser MySQL/MariaDB ou générer explicitement une baseline SQLite équivalente.
git clone https://github.com/LaurentSta/Oneduc_Dev.git
cd Oneduc_Devcomposer install
npm installcp .env.example .env
php artisan key:generateÉditer .env — voir la section Variables d'environnement ci-dessous.
# Créer la base MySQL/MariaDB au préalable
# Dans .env : DB_CONNECTION=mysql, DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD
php artisan migrate
php artisan db:seed # optionnel — données de démonstrationLaravel applique d'abord le schéma baseline situé dans database/schema/mysql-schema.sql, puis les migrations post-baseline présentes dans database/migrations/.
# Recommandé — lance tout en parallèle (serveur, queue, logs, Vite)
composer dev
# Ou individuellement :
php artisan serve # Backend Laravel
npm run dev # Frontend Vite (hot reload)
php artisan queue:listen # Queue de travailLe fichier vite.config.js écoute sur 0.0.0.0, impose le port Vite (strictPort: true) et contient une adresse IP en dur pour le Hot Module Replacement :
hmr: {
host: '192.168.189.129' // <- IP Debian actuelle
}Mettre à jour cette valeur avec l'IP locale de la machine de développement pour que le rechargement automatique fonctionne correctement.
| Variable | Description | Valeur dev typique |
|---|---|---|
APP_NAME |
Nom de l'application | Oneduc |
APP_ENV |
Environnement |
local / production
|
APP_URL |
URL de base | http://localhost:8000 |
APP_DEBUG |
Mode debug |
true (dev), false (prod) |
APP_LOCALE |
Langue principale | fr |
APP_FALLBACK_LOCALE |
Langue fallback | fr |
APP_TIMEZONE |
Fuseau horaire |
Europe/Paris en production France |
DB_CONNECTION |
Driver BDD |
mysql recommandé |
DB_HOST |
Hôte BDD | 127.0.0.1 |
DB_PORT |
Port BDD | 3306 |
DB_DATABASE |
Nom de la base | oneduc |
DB_USERNAME |
Utilisateur BDD | — |
DB_PASSWORD |
Mot de passe BDD | — |
MAIL_MAILER |
Driver mail |
smtp / log (dev) |
SESSION_DRIVER |
Driver session | database |
QUEUE_CONNECTION |
Driver queue | database |
CACHE_STORE |
Driver cache | database |
| Variable | Description | Requis |
|---|---|---|
VITE_APP_NAME |
Nom exposé au frontend via Vite | Oui |
HEDGEDOC_BASE_URL |
URL de l'instance HedgeDoc (pages collaboratives) | Non |
HEDGEDOC_NEW_PATH |
Chemin de création de nouvelle page HedgeDoc | Non (défaut : /new) |
DISCORD_SUPPORT_WEBHOOK_URL |
Webhook Discord pour les notifications support | Non |
DISCORD_SUPPORT_INVITE_URL |
URL d'invitation Discord affichée aux utilisateurs | Non |
DISCORD_SERVER_ID |
ID du serveur Discord | Non |
NOCAPTCHA_SITEKEY |
Clé publique reCAPTCHA si les formulaires publics l'utilisent | Selon usage |
NOCAPTCHA_SECRET |
Secret reCAPTCHA | Selon usage |
COOKIE_CONSENT_ENABLED |
Active/désactive le bandeau cookies Spatie | Non (défaut : true) |
MISTRAL_API_KEY |
Clé API Mistral pour la génération de leçon par IA (builder formateur) | Non (fonctionnalité désactivée sans clé) |
MISTRAL_MODEL |
Modèle Mistral utilisé | Non (défaut : mistral-large-latest) |
| Package | Usage |
|---|---|
laravel/framework ^11 |
Framework principal |
anhskohbo/no-captcha |
Captcha sur formulaires publics |
spatie/laravel-cookie-consent |
Bandeau RGPD cookies |
laravel-lang/common |
Traductions Laravel |
smalot/pdfparser |
Extraction de texte PDF (génération de leçon par IA) |
phpoffice/phpword |
Extraction de texte Word .docx (génération de leçon par IA) |
| Package | Usage |
|---|---|
laravel/pint |
Formatage du code PHP |
pestphp/pest |
Framework de tests |
laravel/pail |
Viewer de logs en temps réel |
laravel/sail |
Docker pour dev local (optionnel) |
# Tests
php artisan test # Tous les tests
./vendor/bin/pest tests/Feature/SomeTest.php # Fichier spécifique
php artisan test --filter NomDuTest # Filtrer par nom
# Formatage
php artisan pint # Formatter le PHP
# Base de données
php artisan migrate # Migrations en attente
php artisan migrate:fresh --seed # Réinitialiser la BDD
# Débogage
php artisan route:list # Lister les routes
php artisan tinker # Console interactiveLes packages SCORM importés ne sont pas versionnés dans git. Les chemins applicatifs sont centralisés dans config/learning_assets.php :
| Type | Chemin principal |
|---|---|
| Leçons SCORM | modules/00_Lecons |
| Vidéos | modules/videos |
| Évaluations SCORM | modules/evaluations/scorm |
Des chemins legacy restent déclarés pour relire les anciens imports (modules/scorm/00_Lecons, modules/scorm/01_evaluations, modules/scorm/02_videos).
En production, ces dossiers doivent être sauvegardés séparément du code source.
- Désactiver
APP_DEBUG=falseobligatoirement - Configurer un vrai driver mail (SMTP)
- Configurer
QUEUE_CONNECTION=databaseet lancer un worker queue en continu (php artisan queue:work) - Configurer le scheduler Laravel dans cron (
php artisan schedule:run) - Vérifier que
APP_NAME,APP_LOCALE,APP_FALLBACK_LOCALE,APP_TIMEZONEet les valeurs mail ne gardent pas les valeurs génériques de.env.example - Vérifier les routes exposées publiquement (voir Sécurité)