Architecture du site
Le site suit la séparation de Hugo entre contenu, présentation, ressources statiques, configuration, sortie générée et service de recherche facultatif.
Structure du dépôt
.
├── content/
│ ├── _index.org
│ ├── about/
│ ├── research/
│ ├── engineering/
│ ├── software/
│ ├── projects/
│ ├── debian/
│ ├── digital-rights/
│ ├── politics/
│ └── website/
├── layouts/
│ ├── _default/
│ └── home.html
├── scripts/
│ ├── build_search_index.py
│ └── check_site.py
├── server/
│ └── search.cgi
├── static/
│ ├── css/
│ └── files/
├── hugo.toml
└── MakefileModèle de contenu
Org Mode reste le format de rédaction.
Une section est représentée par un répertoire contenant un fichier _index.org. Par
exemple :
content/research/_index.org
content/research/electrochemical-noise.org
content/research/pem-fuel-cells.orgLa hiérarchie est donc représentée par le système de fichiers plutôt que par des préfixes numériques intégrés aux titres visibles des pages.
L'ordre dans une section est contrôlé par des métadonnées telles que :
#+title: PEMFC Multiphysics Modelling
#+weight: 40Cela conserve des titres sémantiques tout en permettant une navigation déterministe.
Layouts
Les templates Hugo définissent la structure HTML commune.
Le template de base contient l'enveloppe du document, la feuille de style, la navigation horizontale, la zone de contenu et le pied de page. Les templates de section et de page simple ne définissent que la partie qui diffère.
Les éléments d'interface partagés sont définis une seule fois dans les templates communs plutôt que dupliqués dans les sources Org individuelles.
Cela maintient la cohérence du HTML généré tout en laissant les fichiers de contenu centrés sur le matériau propre à chaque page.
Fichiers statiques
Les fichiers placés sous static/ sont copiés directement vers le site généré.
Ce dépôt y conserve la feuille de style, les documents PDF, robots.txt et le fichier
de vérification du moteur de recherche. Aucun JavaScript n'est livré aux visiteurs.
Sortie générée
L'exécution de Hugo crée public/.
Le répertoire public/ est un artefact de build, pas une source, et il est exclu de
Git.
nginx sert ce répertoire généré après déploiement.
Recherche
La lecture du site lui-même ne nécessite que des fichiers statiques.
La recherche plein texte est un composant serveur facultatif. Pendant le build,
scripts/build_search_index.py extrait le texte du HTML généré et crée un index
SQLite FTS5. Le programme CGI server/search.cgi interroge cet index en lecture seule.
Le formulaire de recherche est du HTML ordinaire utilisant une requête GET vers le
point d'entrée CGI. Il ne nécessite pas JavaScript.
Le site ne fournit pas de sélecteur manuel de thème. Le mode de couleur suit la
préférence du navigateur ou du système via CSS color-scheme ; aucun JavaScript,
cookie ou état de thème côté serveur n'est nécessaire.
Le composant de recherche est donc séparé du rendu des pages et peut échouer ou être désactivé sans empêcher l'accès au site statique.
Sitemap et index de sections
Hugo dérive la structure du site du contenu plutôt que d'un analyseur de titres personnalisé. Les pages de section peuvent énumérer leurs enfants via les templates, et Hugo peut générer un sitemap XML à partir du même modèle de pages.
Le changement architectural important est donc :
ancien : conventions de titres -> analyse Elisp personnalisée -> navigation
nouveau : hiérarchie du contenu + métadonnées -> modèle de pages Hugo -> navigation