
# Commandes de projet

Quatre commandes agissent sur un projet plutôt que sur un serveur en cours : en échafauder un, le construire en fichiers statiques, afficher son schéma et vérifier une configuration avant de la livrer.

## `sovrium init`

Échafaude un nouveau projet dans le répertoire indiqué, ou dans le répertoire courant si aucun n'est passé. Chaque échafaudage écrit un `app.yaml`, un `CLAUDE.md` rédigé pour le domaine du modèle, et un répertoire `public/` pour les ressources statiques.

```bash
sovrium init ./my-app                          # démarrage vierge
sovrium init ./my-app --template crm --name acme-crm
sovrium init ./my-app --template sovrium/crm-template#v2
```

| Option              | Effet                                                                               |
| ------------------- | ----------------------------------------------------------------------------------- |
| `--template <name>` | Nom d'un modèle intégré, ou un dépôt GitHub — voir ci-dessous.                      |
| `--name <name>`     | Nom d'application écrit dans l'`app.yaml` généré. Par défaut, le nom du répertoire. |
| `--force`           | Autorise l'écrasement d'un `app.yaml` existant.                                     |

Modèles intégrés : `hello-world`, `landing-page`, `crm`, `api-only`, `intranet`, `mcp-server`, `blog`, `docs-site`, `projects`, `helpdesk`, `content-calendar`, `people`, `events`, `assets`, `expenses`, `company-os`, `automation-recipes`, `knowledge-base`. Un nom inconnu sort en `1` et affiche la liste.

`--template` accepte aussi un **dépôt GitHub** sous les formes `owner/repo`, `gh:owner/repo` ou `https://github.com/owner/repo`, chacune avec un `#ref` optionnel nommant une branche, une étiquette ou un SHA. Seul `github.com` est pris en charge.

:::callout
**`init` n'écrase jamais ce qui ne lui appartient pas.** Les fichiers `.gitignore`, `.env.example` et `public/` existants sont laissés tels quels. `app.yaml` est le seul fichier qu'`init` possède, et même celui-là n'est écrasé qu'avec `--force`.
:::

## `sovrium build`

Génère un site statique — HTML, CSS et ressources — à partir de votre configuration, prêt pour n'importe quel hébergeur statique.

```bash
sovrium build app.yaml

SOVRIUM_DEPLOYMENT=github-pages sovrium build app.yaml

SOVRIUM_OUTPUT_DIR=./public \
  SOVRIUM_BASE_URL=https://example.com \
  SOVRIUM_GENERATE_SITEMAP=true \
  SOVRIUM_GENERATE_ROBOTS=true \
  sovrium build app.yaml
```

Les options de build proviennent de variables d'environnement `SOVRIUM_*`, pas d'options de ligne de commande — voir [Variables d'environnement](/fr/docs/env-vars) pour l'ensemble complet. La sortie va dans `SOVRIUM_OUTPUT_DIR` lorsqu'elle est définie ; sinon dans un répertoire `dist/` à côté du fichier de configuration.

## `sovrium schema`

Affiche le JSON Schema (Draft-07) de la configuration d'application sur la sortie standard, ou l'écrit dans un fichier.

```bash
sovrium schema
sovrium schema --output app.schema.json
```

Le document est autonome, avec une déclaration `$schema` de premier niveau : tout éditeur ou validateur compatible JSON Schema le consomme tel quel. Voir [Schéma JSON](/fr/docs/json-schema) pour le brancher à un éditeur.

## `sovrium validate`

Décode un fichier de configuration face à `AppSchema` et signale ce qui ne va pas. Accepte `.json`, `.yaml`, `.yml` et `.ts`, en résolvant d'abord les inclusions `$ref`.

```bash
sovrium validate app.yaml
sovrium validate app.ts
```

Affiche `Valid configuration: <name>` et sort en `0`, ou un arbre d'erreurs et sort en `1`. Exécutez-la en CI avant un déploiement — c'est le schéma que le serveur décode au démarrage. Comportement détaillé sur [Valider une configuration](/fr/docs/config-validation).

## Pages associées

- [Aperçu du CLI](/fr/docs/cli) — résolution de configuration et surface complète des commandes.
- [Commandes de cycle de vie](/fr/docs/cli-lifecycle) — `start`, `stop`, `restart`, `reload`.
- [Modèles et exemples](/fr/docs/templates-examples) — le contenu de chaque modèle intégré.
- [Valider une configuration](/fr/docs/config-validation) — lire les erreurs affichées par `validate`.
