Documentation

Le toolkit Genèse est la chaîne d'outils que nous utilisons pour construire, vérifier et livrer les sites et applications de nos projets. Cette page couvre l'installation, la configuration et la mise en ligne, de la machine vide au site en production.

Dernière mise à jour : 17 septembre 2026 Node.js 20 LTS Version 1.4.0

Introduction

Le toolkit repose sur trois briques, volontairement peu nombreuses :

@genese/cli

L'outil en ligne de commande : création du projet, serveur de développement, contrôles avant livraison et mise en ligne.

genese.config.ts

Un seul fichier décrit le projet : structure juridique visée, volets actifs, plugins et coordonnées.

@genese/plugin-*

Des modules optionnels qui ajoutent le SEO, la conformité RGPD, les formulaires ou le volet mobile.

À qui s'adresse cette page

Aux personnes qui interviennent sur un projet Genèse : bénévoles, prestataires, ou client qui souhaite reprendre la main sur son site après la livraison. Pour une estimation de budget, utilisez plutôt le configurateur.

Prérequis

Avant d'installer quoi que ce soit, vérifiez que votre machine dispose des outils suivants.

OutilVersionRôle
Node.js20 LTS (18 minimum)Exécution de la CLI et du serveur de développement
npm10 ou plusInstallation des paquets. pnpm 9 et Yarn 4 fonctionnent aussi
Git2.40 ou plusVersionnage du projet et livraison
Flutter3.24 ou plusVolet application mobile, uniquement si celui-ci est actif

Vérifier ce qui est déjà installé

terminal
$ node -v
v20.11.0
$ npm -v
10.2.4
$ git --version
git version 2.45.1
Installer Node.js

Sous Windows, prenez l'installeur officiel sur nodejs.org et cochez l'ajout au PATH. Sous macOS et Linux, passez plutôt par un gestionnaire de versions : il évite les conflits entre projets.

terminal
$ nvm install 20
$ nvm use 20
Now using node v20.11.0 (npm v10.2.4)

Installation

La CLI s'installe une fois pour toutes, en global. Choisissez votre gestionnaire de paquets :

terminal
$ npm install -g @genese/cli

Contrôlez ensuite que la commande répond :

terminal
$ genese --version
genese/1.4.0 node-v20.11.0
Erreur EACCES pendant l'installation

N'utilisez pas sudo : cela crée des fichiers appartenant à root que npm ne saura plus mettre à jour. La bonne solution est décrite dans la section Dépannage.

Démarrage rapide

Quatre commandes suffisent pour obtenir un projet qui tourne en local.

  1. 1

    Créer le projet

    L'assistant pose quelques questions : nom du projet, structure juridique visée et volets à activer.

    terminal
    $ genese init mon-projet
    ? Nom affiché du projet › Mon Projet
    ? Structure juridique › SAS
    ? Volets à activer › administratif, web, communication
    ✔ Projet créé dans ./mon-projet
  2. 2

    Installer les dépendances

    terminal
    $ cd mon-projet
    $ npm install
  3. 3

    Lancer le serveur de développement

    Le rechargement est automatique à chaque fichier enregistré.

    terminal
    $ npm run dev
    
    ▲ genese dev
      local    http://localhost:3000
      réseau   http://192.168.1.24:3000
      prêt en 412 ms
  4. 4

    Vérifier avant de livrer

    La commande check passe en revue l'accessibilité, les liens morts, les métadonnées et les en-têtes de sécurité.

    terminal
    $ genese check
    ✔ contrastes .............. 0 problème
    ✔ navigation clavier ...... 0 problème
    ✔ liens ................... 34 vérifiés
    ! images .................. 2 sans attribut alt

Structure des fichiers

Un projet fraîchement créé contient uniquement ce qui suit. Rien n'est caché, tout est modifiable à la main.

arborescence
mon-projet/
├─ public/              fichiers servis tels quels : images, polices, favicon
├─ src/
│  ├─ pages/            une page du site = un fichier .html
│  ├─ styles/           style.css et ses partiels
│  ├─ scripts/          main.js et modules
│  └─ contenus/         textes en markdown, relus par le client
├─ mobile/              projet Flutter, présent si le volet mobile est actif
├─ .env.local           secrets de la machine, jamais versionnés
├─ genese.config.ts     configuration du projet
└─ package.json
Le dossier dist/

Il apparaît après la première commande genese build et contient le site compilé. Il n'est pas versionné : il se régénère à chaque mise en ligne.

Le fichier genese.config.ts

C'est le seul fichier à connaître pour piloter un projet. Il est typé : votre éditeur signale une option mal orthographiée avant même l'exécution.

genese.config.ts
import { defineConfig } from "@genese/core";
import seo from "@genese/plugin-seo";
import rgpd from "@genese/plugin-rgpd";

export default defineConfig({
  projet: "mon-projet",
  structure: "SAS",
  contact: "contact@mon-projet.fr",

  volets: {
    administratif: true,
    legal: false,
    web: true,
    communication: true,
  },

  suivi: false,

  plugins: [
    seo({ sitemap: true }),
    rgpd({ banniere: "minimale" }),
  ],
});

Référence des options

OptionTypeDéfautDescription
projetstringrequis Identifiant technique du projet, en minuscules et sans accent.
structure"SAS" | "SASU" | "micro" | "association""SAS" Structure juridique visée. Détermine les documents générés par le volet administratif.
contactstringrequis Adresse qui recevra les messages envoyés depuis le site.
volets.administratifbooleanfalse Active la génération des statuts, PV et registres.
volets.legalbooleanfalse Active la relecture de conformité et les mentions obligatoires.
volets.webbooleantrue Active le site et, si Flutter est présent, le dossier mobile/.
volets.communicationbooleanfalse Ajoute les gabarits d'affiches, de flyers et de visuels réseaux.
suivibooleanfalse Bascule le projet en accompagnement douze mois, avec points de suivi planifiés.
pluginsPlugin[][] Liste ordonnée des plugins à charger.
build.sortiestring"dist" Dossier de destination de la compilation.

Variables d'environnement

Les secrets ne vivent jamais dans genese.config.ts. Ils se déclarent dans un fichier .env.local, à la racine du projet.

.env.local
# Jeton de déploiement, fourni par Genèse
GENESE_TOKEN=gns_live_xxxxxxxxxxxx

# Destinataire du formulaire de contact
CONTACT_TO=contact@mon-projet.fr
SMTP_URL=smtp://utilisateur:motdepasse@smtp.example.net:587

# Exposées au navigateur : uniquement des valeurs publiques
PUBLIC_SITE_URL=https://mon-projet.fr
Ne jamais versionner ce fichier

.env.local est listé dans le .gitignore du projet. Seules les variables préfixées par PUBLIC_ sont injectées dans le navigateur : tout le reste reste côté serveur.

Commandes

Toutes les commandes acceptent --help pour afficher leurs options.

CommandeCe qu'elle fait
genese init [nom]Crée un projet et pose les questions de cadrage.
genese devServeur local avec rechargement. Option --port.
genese buildCompile le site dans dist/, minifie et optimise les images.
genese previewSert le contenu de dist/ comme en production.
genese checkAccessibilité, liens morts, métadonnées, en-têtes de sécurité.
genese estimateRecalcule le budget à partir des volets actifs du fichier de configuration.
genese deployMet en ligne. Option --env production ou preprod.
genese statusÉtat du projet : dernière mise en ligne, certificat, sauvegardes.
genese upgradeMet à jour la CLI et les plugins officiels vers la dernière version compatible.

Exemple : genese status

terminal
$ genese status
projet ............ mon-projet
environnement ..... production
dernier build ..... il y a 2 jours
✔ certificat TLS .... valide 74 jours
✔ sauvegardes ....... 7 versions conservées

Plugins

Un plugin s'installe comme n'importe quel paquet, puis se déclare dans la configuration.

terminal
$ npm install @genese/plugin-seo @genese/plugin-rgpd
PluginRôle
@genese/plugin-seoMétadonnées, sitemap, données structurées et aperçus de partage.
@genese/plugin-rgpdBannière de consentement minimale, mentions légales, registre des traitements.
@genese/plugin-formsFormulaires avec anti-spam, validation côté serveur et envoi par SMTP.
@genese/plugin-analyticsMesure d'audience sans cookie, hébergée dans l'Union européenne.
@genese/plugin-flutterRelie le dossier mobile/ et compile l'application iOS et Android.
@genese/plugin-printExporte les gabarits d'affiches et de flyers en PDF prêts à imprimer.
L'ordre compte

Les plugins s'exécutent de haut en bas. plugin-seo doit être déclaré avant plugin-rgpd, sinon la bannière de consentement n'est pas prise en compte dans les pages générées.

Mise en ligne

La compilation produit un site statique : il peut être servi par n'importe quel hébergeur, sans base de données ni processus permanent.

terminal
$ genese build
✔ 28 pages compilées
✔ images optimisées .... 1,8 Mo économisés
  sortie ............... dist/ (612 Ko)

$ genese deploy --env production
▲ en ligne : https://mon-projet.fr

Ce que nous exigeons en production

PointAttendu
TransportHTTPS obligatoire, redirection depuis HTTP, HSTS activé.
En-têtesContent-Security-Policy, X-Content-Type-Options, Referrer-Policy.
HébergementServeurs situés dans l'Union européenne.
SauvegardesSept versions conservées, restauration possible à tout moment.
AccèsRemis au client à la livraison : domaine, hébergement, dépôt Git.

Dépannage

genese: command not found

Le dossier des binaires globaux n'est pas dans votre PATH. Affichez-le puis ajoutez-le à votre profil de shell :

terminal
$ npm config get prefix
/Users/moi/.npm-global
$ echo 'export PATH="$(npm config get prefix)/bin:$PATH"' >> ~/.zshrc
EACCES: permission denied

npm tente d'écrire dans un dossier système. Plutôt que sudo, déplacez le préfixe npm dans votre dossier personnel, puis réinstallez la CLI :

terminal
$ npm config set prefix ~/.npm-global
$ npm install -g @genese/cli
The engine "node" is incompatible

Votre version de Node est trop ancienne. Basculez sur la 20 puis relancez l'installation des dépendances : nvm use 20 && npm install.

Port 3000 is already in use

Un autre serveur occupe le port. Lancez le vôtre ailleurs : genese dev --port 3001.

Support

Une question qui n'est pas couverte ici, un comportement inattendu, une demande d'accès : écrivez-nous, nous répondons sous 48 heures ouvrées.

Contact technique

Précisez le nom du projet, la commande lancée et le message d'erreur complet.

contact@genese.agency
© 2026 Genèse. Documentation du toolkit, version 1.4.0. Retour au site