# Déploiement

## A. Installation en local (Laragon) : pour tester

> Le dépôt contient une application Laravel 11 complète. Laravel 11 utilise une **config minimale** : les valeurs par défaut viennent du framework et se règlent via le `.env` (pas besoin de tous les fichiers `config/`).

Dans le terminal Laragon, à la racine du projet (`C:\laragon\www\endsv2`) :

```bash
composer install
cp .env.example .env
php artisan key:generate
# Crée une base MySQL "yggdrasil_bo" dans Laragon (HeidiSQL), puis renseigne DB_* dans .env
php artisan migrate --seed
php artisan serve   # ou ouvre http://endsv2.test via Laragon
```

- Connexion : `/login` : identifiants Super Admin affichés par le seeder (à changer aussitôt).
- Renseigner `ANTHROPIC_API_KEY` dans `.env` pour activer l'IA (sinon le chatbot répond depuis la base + capture email).
- Lancer les tests : `php artisan test`.

## B. Mise en production (OVH mutualisé) : déploiement auto par GitHub Actions

Hébergement mutualisé OVH (sans SSH). Le déploiement est **automatique à chaque push sur `main`** via `.github/workflows/deploy.yml` : l'Action installe les dépendances PHP dans le runner puis téléverse tout le projet (vendor inclus) par **FTPS**.

- Domaine : `noeldessorciers.festyggdrasil.fr` · doc-root OVH : **`./endsv2/public`** (l'app vit dans `~/endsv2/`).

### 1. Secrets GitHub (Settings → Secrets and variables → Actions)
| Secret | Valeur |
|---|---|
| `FTP_HOST` | hôte FTP OVH (ex. `ftp.cluster0XX.hosting.ovh.net`) |
| `FTP_USER` | identifiant FTP |
| `FTP_PASSWORD` | mot de passe FTP |

> Le workflow téléverse vers `./endsv2/` (cf. `server-dir`). Si l'utilisateur FTP n'arrive pas dans le dossier parent de `endsv2/`, ajuster `server-dir` dans `deploy.yml`.

### 2. Fichier `.env` de production : créé par l'installateur web
Le `.env` n'est jamais téléversé par l'Action (exclu). **Pas besoin de le créer à la
main** : l'installateur `/install` fonctionne sans `.env`, demande la configuration
BDD (créée dans l'espace OVH) + le compte Super Admin, vérifie la connexion, génère
l'`APP_KEY` et écrit le `.env` lui-même.

### 3. Première installation (sans SSH)
Après le 1er déploiement, ouvrir **`https://noeldessorciers.festyggdrasil.fr/install`** →
renseigner la BDD et le compte Super Admin → « Lancer l'installation » (écrit le `.env`,
migrations + données initiales). L'installateur se **désactive automatiquement** dès
qu'un compte existe. Compléter ensuite les secrets restants (SMTP, `ANTHROPIC_API_KEY`)
depuis le back-office : **Administration → Éditeur .env**.

### 4. Mises à jour ultérieures
À chaque push sur `main`, le code est redéployé. Si une mise à jour ajoute des migrations, les appliquer depuis le back-office : **Administration → Base de données → Appliquer les migrations** (sauvegarde mysqldump automatique avant).

### 5. Divers
- HTTPS activé côté OVH (SSL). Vérifier que `storage/` et `bootstrap/cache/` sont accessibles en écriture.
- Cron Laravel (purge RGPD) : voir `CRON.md`.

## C. Widget de chat sur le site vitrine
Ajouter sur les pages du site (WordPress/Elementor ou HTML) :
```html
<script src="https://backoffice.festivalyggdrasil.com/widget/chat-widget.js"
        data-api="https://backoffice.festivalyggdrasil.com/api/v1/chat"
        data-name="Yggi" defer></script>
```
Déclarer le domaine du site dans `CHAT_ALLOWED_ORIGINS` (.env) pour le CORS.

## D. Checklist avant prod
Voir la section 18 du document de règles : CHANGELOG à jour, version, tests verts, backup, HTTPS, pages légales, bandeau cookies, Super Admin + mot de passe fort, sauvegardes, test mobile, tag Git.
