Files
lescarnetsdakkadien.netig.net/README.md
T

195 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Les Carnets dAkkadien
**Les Carnets dAkkadien** est un site personnel consacré à lapprentissage de lakkadien et de l’écriture cunéiforme. Il rassemble des fiches de vocabulaire et de signes, des notes de grammaire, des textes étudiés et des articles de parcours.
Site public : <https://lescarnetsdakkadien.netig.net>
Le site est généré avec **Zola 0.23.1** et **Tera 2** à partir de fichiers Markdown. Il est entièrement statique : aucune base de données, aucune interface dadministration et aucune exécution côté serveur ne sont nécessaires.
## Contenu
- **Signes** : signes cunéiformes classés par numéro MZL et par lecture ;
- **Vocabulaire** : fiches adaptées à la nature grammaticale des mots ;
- **Grammaire** : notes regroupées par thème ;
- **Textes** : translittérations, traductions et commentaires classés par genre ;
- **Articles** : billets consacrés à lapprentissage et au projet.
La page daccueil présente le dernier article et les trois fiches les plus récemment publiées ou mises à jour. Un flux Atom est disponible à ladresse `/atom.xml`.
## Prérequis
Pour le développement local :
- Python 3.11 ou ultérieur ;
- Zola 0.23.1 ;
- Git, si le dépôt est versionné avec Git.
Pour le déploiement décrit ici :
- Docker Engine et Docker Compose ;
- Caddy 2 sur lhôte public.
Toutes les commandes suivantes sont exécutées depuis la racine du dépôt.
## Développement local
Valider la structure des fiches :
```sh
./scripts/check-content.py
```
Vérifier le chargement du site et ses liens, brouillons compris :
```sh
zola --root src check --drafts
```
Sans accès réseau, les liens externes peuvent être ignorés :
```sh
zola --root src check --drafts --skip-external-links
```
Rendre le site avec les brouillons afin de tester tous les templates :
```sh
zola --root src build --drafts
```
Construire ensuite la version publique, sans les brouillons :
```sh
zola --root src build
```
Les fichiers générés sont écrits dans `src/public/`, répertoire ignoré par Git.
Lancer le serveur de développement :
```sh
zola --root src serve
```
Afficher également les brouillons :
```sh
zola --root src serve --drafts
```
## Rédaction
Les contenus sont stockés dans `src/content/`. Trois commandes accompagnent leur rédaction :
- `new-content.py` crée un brouillon complet pour une section donnée ;
- `update-content.py` actualise son horodatage `updated` ;
- `check-content.py` vérifie la présence et le type des champs prévus.
Le module `_schema.py` centralise les modèles utilisés par le générateur et le validateur ; il nest pas exécuté directement.
Les commandes, conventions et modèles de front matter sont détaillés dans le [guide de rédaction](GUIDE_REDACTION.md).
## Architecture
```text
.
├── Caddyfile.example
├── Dockerfile
├── compose.yml
├── README.md
├── GUIDE_REDACTION.md
├── LICENSE-CODE
├── LICENSE-CONTENT
├── scripts/
└── src/
├── content/
├── sass/main.scss
├── static/
├── templates/
│ ├── components.html
│ ├── partials/
│ └── *.html
└── zola.toml
```
- `src/content/` contient les sources Markdown ;
- `src/templates/components.html` contient les composants Tera 2 paramétrés ;
- `src/templates/partials/` contient les fragments utilisant le contexte courant ;
- `src/templates/sitemap.xml` retire du sitemap les taxonomies sans contenu publié ;
- `src/sass/main.scss` définit lapparence, le responsive et limpression ;
- Zola génère `giallo.css` à partir du thème `github-light` pour la coloration syntaxique par classes ;
- `src/static/` contient les images, la police et le favicon servis tels quels ;
- `src/zola.toml` contient la configuration générale, les taxonomies et le flux Atom.
`giallo.css` et `main.css` sont des fichiers générés dans `src/public/` : ils ne doivent pas être ajoutés manuellement à `src/static/`.
## Déploiement avec Docker Compose
Limage est construite en trois étapes :
1. validation des fiches avec Python ;
2. génération du site avec Zola 0.23.1 ;
3. copie des seuls fichiers publics dans un serveur HTTP statique.
Vérifier puis démarrer le service :
```sh
docker compose config
docker compose up -d --build
```
Le conteneur est exposé uniquement sur linterface locale de lhôte :
```text
http://127.0.0.1:8002
```
Pour mettre à jour le déploiement :
```sh
git pull --ff-only
docker compose up -d --build
```
Pour larrêter :
```sh
docker compose down
```
## Proxy inverse Caddy
Caddy prend en charge le domaine public, HTTPS, les en-têtes de sécurité et la politique de cache. Le serveur HTTP interne désactive ses propres en-têtes de cache et de sécurité afin d’éviter deux configurations concurrentes.
[`Caddyfile.example`](Caddyfile.example) fournit le bloc correspondant au port publié par `compose.yml`. Il applique :
- `Cache-Control: no-cache` aux documents ;
- un cache navigateur dune journée aux feuilles de style, images et polices ;
- une CSP compatible avec les ressources locales du site ;
- HSTS, `Referrer-Policy`, `X-Content-Type-Options` et `X-Frame-Options`.
Le fichier peut être importé au niveau principal du Caddyfile de lhôte ou servir de modèle pour un bloc existant. Sa syntaxe peut être contrôlée avec :
```sh
caddy validate --config Caddyfile.example --adapter caddyfile
```
## Flux Atom
Le flux est activé dans `src/zola.toml` :
```toml
generate_feeds = true
feed_filenames = ["atom.xml"]
```
Le template de base affiche automatiquement la balise de découverte et le lien du pied de page lorsque cette configuration est active.
## Licences
Le code propre au projet est distribué sous licence MIT ; voir [`LICENSE-CODE`](LICENSE-CODE).
Sauf mention contraire, les contenus originaux de `src/content/` sont publiés sous licence CC BY-SA 4.0 ; voir [`LICENSE-CONTENT`](LICENSE-CONTENT).
Les polices, photographies et autres ressources tierces restent soumises à leurs propres droits et licences.