Skip to content

02 installation

Laurent Staelens edited this page Jul 14, 2026 · 5 revisions

02 — Installation & Configuration

Public : développeurs et administrateurs système.

Prérequis

Outil Version minimale
PHP 8.2+
Composer 2.x
Node.js 18+
NPM 9+
MySQL / MariaDB 8.0+ / 10.4+ recommandé

Le fichier .env.example Laravel indique encore DB_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.


Installation (environnement de développement)

1. Cloner le dépôt

git clone https://github.com/LaurentSta/Oneduc_Dev.git
cd Oneduc_Dev

2. Installer les dépendances PHP et JavaScript

composer install
npm install

3. Configurer l'environnement

cp .env.example .env
php artisan key:generate

Éditer .env — voir la section Variables d'environnement ci-dessous.

4. Créer la base de données et migrer

# 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émonstration

Laravel applique d'abord le schéma baseline situé dans database/schema/mysql-schema.sql, puis les migrations post-baseline présentes dans database/migrations/.

5. Lancer l'environnement de développement

# 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 travail

Configuration du HMR Vite (développement)

Le 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.


Variables d'environnement

Variables standard Laravel

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

Variables spécifiques au projet

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)

Dépendances principales

PHP (Composer)

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)

Dev PHP

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)

Commandes utiles

# 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 interactive

Stockage des assets SCORM

Les 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.


Notes pour la production

  • Désactiver APP_DEBUG=false obligatoirement
  • Configurer un vrai driver mail (SMTP)
  • Configurer QUEUE_CONNECTION=database et 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_TIMEZONE et les valeurs mail ne gardent pas les valeurs génériques de .env.example
  • Vérifier les routes exposées publiquement (voir Sécurité)

Retour au wiki

Clone this wiki locally