
# Variables d'environnement

Sovrium lit la configuration à partir des variables d'environnement au démarrage. Définissez-les dans un fichier `.env` ou dans l'environnement de votre serveur. Toutes les variables sont optionnelles sauf indication contraire.

```bash
# .env

# Application
APP_SCHEMA='app.yaml'

# Server
PORT=3000
BASE_URL=http://localhost:3000

# Database (optional — defaults to embedded SQLite)
DATABASE_URL=file:./data/app.db

# Authentication
AUTH_SECRET=your-secret-key-here

# Default Admin
AUTH_ADMIN_EMAIL=admin@example.com
AUTH_ADMIN_PASSWORD=secure-admin-password

# OAuth (Google example)
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

# Email (SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
```

## Application

Configuration principale de l'application. `APP_SCHEMA` est le moyen privilégié de fournir un schéma sans argument de fichier.

| Variable     | Description                                                                                                                                                  |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `APP_SCHEMA` | Schéma de l'application sous forme de JSON en ligne, de YAML en ligne ou d'URL distante. Alternative au passage d'un chemin de fichier en ligne de commande. |

## Serveur

Options réseau du serveur pour la commande `start`.

| Variable   | Description                                                                                                                                                           |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PORT`     | Numéro de port du serveur (0–65535). 0 sélectionne un port disponible. Par défaut : 3000.                                                                             |
| `HOSTNAME` | Nom d'hôte du serveur. Par défaut : `localhost`.                                                                                                                      |
| `BASE_URL` | URL de base de l'application (par ex. `https://myapp.com`). Utilisée pour les URL de rappel d'authentification et les liens d'email.                                  |
| `NODE_ENV` | Environnement d'exécution. Définissez à `"production"` pour des cookies sécurisés, des vérifications CSRF et une validation SMTP stricte. Par défaut : `development`. |

## Base de données

Paramètres de connexion à la base de données. Optionnel — Sovrium utilise par défaut SQLite embarqué lorsqu'il n'est pas défini.

| Variable       | Description                                                                                                                                                                                                                                                                          |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `DATABASE_URL` | Chaîne de connexion à la base de données. Optionnel : non défini, utilise SQLite embarqué ; une URL `file:` (par ex. `file:./data/app.db`) choisit le fichier SQLite ; une URL `postgresql://` (par ex. `postgresql://user:password@localhost:5432/dbname`) bascule vers PostgreSQL. |

## Authentification

Variables pour l'intégration de Better Auth. Requises lorsque le schéma définit une section `auth`.

| Variable      | Description                                                                                                                              |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `AUTH_SECRET` | Clé secrète pour signer les jetons et chiffrer les sessions. Doit être une chaîne aléatoire robuste (32 caractères ou plus recommandés). |

### Utilisateur administrateur par défaut

Variables optionnelles pour créer un utilisateur administrateur par défaut au premier démarrage. Les trois doivent être définies pour que l'utilisateur administrateur soit créé.

| Variable              | Description                                                                                    |
| --------------------- | ---------------------------------------------------------------------------------------------- |
| `AUTH_ADMIN_EMAIL`    | Adresse email de l'utilisateur administrateur par défaut.                                      |
| `AUTH_ADMIN_PASSWORD` | Mot de passe de l'utilisateur administrateur par défaut. Doit comporter au moins 8 caractères. |
| `AUTH_ADMIN_NAME`     | Nom d'affichage de l'utilisateur administrateur par défaut. Optionnel, par défaut `"Admin"`.   |

### Fournisseurs OAuth

Identifiants pour chaque fournisseur OAuth configuré dans le schéma d'authentification. Remplacez `{PROVIDER}` par le nom du fournisseur en majuscules.

| Variable                   | Description                                                                               |
| -------------------------- | ----------------------------------------------------------------------------------------- |
| `{PROVIDER}_CLIENT_ID`     | Identifiant client OAuth issu de la console développeur du fournisseur.                   |
| `{PROVIDER}_CLIENT_SECRET` | Secret client OAuth issu de la console développeur du fournisseur. À garder confidentiel. |

:::callout
**Fournisseurs pris en charge.** Sovrium prend en charge Google, GitHub, Microsoft, Slack, GitLab et Facebook. Par exemple, définissez `GOOGLE_CLIENT_ID` et `GOOGLE_CLIENT_SECRET` pour Google OAuth.
:::

## Email (SMTP)

Configuration SMTP pour l'envoi d'emails d'authentification (vérification, réinitialisation de mot de passe, lien magique). En développement, bascule sur Mailpit à `localhost:1025` si `SMTP_HOST` n'est pas défini.

| Variable         | Description                                                                                                   |
| ---------------- | ------------------------------------------------------------------------------------------------------------- |
| `SMTP_HOST`      | Nom d'hôte du serveur SMTP (par ex. `smtp.gmail.com`). Requis en production.                                  |
| `SMTP_PORT`      | Port du serveur SMTP. Par défaut : 587.                                                                       |
| `SMTP_SECURE`    | Utiliser une connexion SSL/TLS. Par défaut : `false` pour le port 587, `true` pour le port 465.               |
| `SMTP_USER`      | Nom d'utilisateur d'authentification SMTP.                                                                    |
| `SMTP_PASS`      | Mot de passe d'authentification SMTP ou mot de passe spécifique à l'application.                              |
| `SMTP_FROM`      | Adresse email d'expéditeur par défaut (par ex. `noreply@yourdomain.com`). Par défaut : `noreply@sovrium.com`. |
| `SMTP_FROM_NAME` | Nom d'affichage de l'expéditeur par défaut. Par défaut : `Sovrium`.                                           |

:::callout
**Développement local.** Lorsque `SMTP_HOST` n'est pas configuré en mode développement, Sovrium bascule automatiquement sur Mailpit (`localhost:1025`). Installez Mailpit pour visualiser les emails envoyés dans une interface web locale.
:::

## Build

Options pour la commande `build` qui génère un site statique.

| Variable                      | Description                                                                                        |
| ----------------------------- | -------------------------------------------------------------------------------------------------- |
| `SOVRIUM_OUTPUT_DIR`          | Répertoire de sortie. Par défaut : `./dist`.                                                       |
| `SOVRIUM_BASE_URL`            | URL de base pour la génération du sitemap et les liens canoniques (par ex. `https://example.com`). |
| `SOVRIUM_BASE_PATH`           | Préfixe de chemin pour les déploiements en sous-répertoire (par ex. `/my-app`).                    |
| `SOVRIUM_DEPLOYMENT`          | Cible de déploiement : `github-pages` ou `generic`.                                                |
| `SOVRIUM_LANGUAGES`           | Codes de langue séparés par des virgules à générer (par ex. `en,fr,de`).                           |
| `SOVRIUM_DEFAULT_LANGUAGE`    | Code de langue par défaut (par ex. `en`).                                                          |
| `SOVRIUM_GENERATE_SITEMAP`    | Génère `sitemap.xml`. Par défaut : `false`.                                                        |
| `SOVRIUM_GENERATE_ROBOTS`     | Génère `robots.txt`. Par défaut : `false`.                                                         |
| `SOVRIUM_HYDRATION`           | Active l'hydratation côté client. Par défaut : `false`.                                            |
| `SOVRIUM_GENERATE_MANIFEST`   | Génère `manifest.json` pour les PWA. Par défaut : `false`.                                         |
| `SOVRIUM_BUNDLE_OPTIMIZATION` | Stratégie d'optimisation : `split` (découpage du code) ou `none`.                                  |
| `SOVRIUM_PUBLIC_DIR`          | Répertoire contenant les ressources statiques à copier dans la sortie.                             |

## Débogage

Variables de diagnostic et de test. Non nécessaires en fonctionnement normal.

| Variable                    | Description                                                                                                                                    |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `LOG_LEVEL`                 | Définissez à `"debug"` pour une journalisation détaillée (journaux de requêtes, diagnostics de compilation CSS). Par défaut : suit `NODE_ENV`. |
| `EFFECT_DEVTOOLS`           | Définissez à `"1"` pour activer l'intégration des Effect DevTools pour l'inspection à l'exécution.                                             |
| `RATE_LIMIT_WINDOW_SECONDS` | Fenêtre de limitation de débit en secondes. Utilisée dans les tests pour une exécution plus rapide. Par défaut : 60.                           |
