Installation
Configurer le registre privé, générer un projet avec npx @lrvo/start et initialiser la base.
Un projet LRVO se génère par une seule commande. Cette page couvre l'accès au registre privé, la génération et le premier démarrage.
Prérequis
- Node.js 20 ou plus, imposé par le SDK Resend v6, livré quel que soit le fournisseur de courriel actif.
- PostgreSQL 14 ou plus, accessible depuis la machine.
- Un compte sur le registre privé
https://registry.lrvo.app/. - Un terminal bash, zsh ou PowerShell. Sous Windows, les commandes de cette documentation sont écrites pour PowerShell, pas pour l'invite
cmd.exe.
1. Configurer le registre
Le scope @lrvo n'est pas sur npm public. Le pointer vers le registre privé, une seule fois par machine :
npm config set "@lrvo:registry" https://registry.lrvo.app/2. S'authentifier
npm login --registry=https://registry.lrvo.app/Le token est déposé dans ~/.npmrc, le .npmrc du dossier personnel : %USERPROFILE%\.npmrc sous Windows. Il n'expire pas dans le temps : il cesse de fonctionner seulement si le secret du serveur change, si le mot de passe est modifié, ou si le compte est révoqué.
3. Générer le projet
npx @lrvo/startLa commande ne prend aucun argument : elle génère toujours dans le dossier courant. Se placer dans le dossier destiné au projet avant de la lancer, et le laisser vide. Le nom du dossier devient le nom du projet dans le package.json et dans le README.md.
La commande enchaîne :
create-next-appen JavaScript, avec Tailwind et l'App Router, puis suppression duapp/par défaut.- L'écriture d'un
README.mdau nom du projet et l'ajout des scriptsdev,build,postinstall,auditetmake-favicon. Les trois premiers sont préfixés parlrvo-modules sync. - La copie des fichiers de gabarit :
app/,components/,styles/,dev/,instrumentation.js,next.config.mjs,jsconfig.json,.npmrc. - L'ajout de
app/.lrvo/au.gitignore, et la mise en commentaire des règles.envet.npmrc: les deux fichiers sont suivis par git. - La reprise du token de
~/.npmrcdans le.npmrcdu projet. - L'installation de
@lrvo/core. - La création du
.envà partir du modèle du package, s'il n'existe pas déjà.
4. Configurer l'environnement
Le .env généré vient de node_modules/@lrvo/core/.env.example. Il faut le remplir avant de démarrer.
Le minimum pour lancer l'application :
NEXT_PUBLIC_URL=http://localhost:3000
LRVO_NAME=Mon site
LRVO_DATABASE_URL=postgres://user:password@localhost:5432/mon_projetLe détail de chaque variable est dans Configuration.
Le .env est suivi par git par défaut, comme le .npmrc. Voir Secrets et git.
5. Initialiser la base
npx lrvo-db test # vérifier la connexion
npx lrvo-db init # créer les tables ◆ Initializing database...
✓ DB ready — 7 tables created, 0 skippedLa commande est idempotente : la relancer après chaque ajout de module ne casse rien.
6. Démarrer
npm run dev| URL | Contenu |
|---|---|
http://localhost:3000 | Site public. |
http://localhost:3000/auth | Première configuration, puis connexion. |
http://localhost:3000/admin | Administration. |
Tant qu'aucun compte n'existe, /auth affiche le formulaire de première configuration. Le compte qu'il crée reçoit le rôle admin et arrive connecté sur /admin. Créer ce compte immédiatement.
Renouveler le token
Sur un projet existant qui n'a pas encore sa clé, ou après un nouveau npm login :
npx lrvo-key # reprend le token de ~/.npmrc dans .npmrc
npx lrvo-key status # vérifie, token masquéVoir lrvo-key.
Secrets et git
Le CLI laisse .env et .npmrc suivis par git : il commente leurs règles dans le .gitignore au lieu de les poser.
Le .npmrc en est la raison principale. Il porte le token du registre en clair, et ce token est nécessaire au build : npm ci va chercher @lrvo/core et les modules sur https://registry.lrvo.app/, et échoue avec un 404 sans lui. Le token ne sert qu'à l'installation, aucun code d'exécution ne le lit. En le gardant dans le dépôt, la machine de build n'a rien à configurer : elle clone et lance npm ci. Le .env suit la même logique, ce qui évite de recopier les variables sur chaque environnement.
Cela suppose un dépôt privé. Le token du registre et les secrets applicatifs sont en clair dans l'historique git, et un historique ne se nettoie pas facilement. Un dépôt qui deviendrait public, ou un accès en lecture accordé à un tiers, expose les deux.
Pour sortir ces fichiers de git, retirer le # des lignes correspondantes du .gitignore :
.env*
.npmrcIl faut alors les fournir à la main sur chaque machine qui installe ou build le projet. La procédure est dans Déploiement.
Diagnostiquer
| Symptôme | Cause probable |
|---|---|
404 Not Found - @lrvo/core à l'installation | Registre non configuré, ou token absent du .npmrc. Relancer npm login puis npx lrvo-key. |
LRVO_DATABASE_URL is not defined | .env non rempli, ou non chargé. |
| Échec de connexion à la base | Vérifier avec npx lrvo-db test. En local sans TLS, poser LRVO_DB_SSL_DISABLED=true. Le ?sslmode=… d'une URL copiée chez un fournisseur n'a pas à être retiré à la main. |
| Requête refusée en écriture | NEXT_PUBLIC_URL absent : la vérification CSRF refuse les méthodes mutantes. |
| Doute sur l'état du projet | npx lrvo-doctor confronte le projet à la version du core installée. |
Le site porte les correctifs de sécurité
C'est le package.json du site, et lui seul, qui peut épingler une version dans l'arbre de dépendances. npm n'honore le champ overrides que depuis la racine du projet installé : ni @lrvo/core ni les modules ne peuvent le faire à la place du site. C'est pourquoi aucun package LRVO n'en déclare.
Le projet généré n'a pas de bloc overrides, et c'est l'état normal. Il ne s'en ajoute un que pour une faille qu'aucune mise à jour amont ne corrige. Le suivi se fait avec le script généré :
npm run audit # npm audit --omit=devLa première correction à tenter est toujours npm update next. La plupart des alertes d'un site LRVO viennent de l'arbre de Next.js et disparaissent avec une montée de version. Voir Sécurité.
Mettre à jour, plus tard
npx lrvo-updateUne seule commande pour le core, les modules et l'enchaînement qui suit. Voir Mettre à jour un projet.
Étape suivante
Le tour du propriétaire crée le premier compte, parcourt l'admin et met une première page en ligne.