From 5cc15f1cc21805027ca7e322de63d0b4ced23b9c Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Sun, 25 Jun 2023 20:47:28 +0200
Subject: [PATCH] WIP migrate software to generated list

---
 config.toml                             |  15 ++++
 content/blog/2023-04-28-duniter-web3.md |   2 +-
 content/ecosysteme.md                   |   9 ---
 content/logiciels/TEMPLATE.md           |  11 +++
 content/logiciels/_index.md             |  21 +++++
 content/logiciels/cesium.md             |  13 +++
 content/logiciels/datapods.md           |  13 +++
 content/logiciels/duniter-v2.md         |  14 ++++
 content/logiciels/duniter.md            |  13 +++
 content/logiciels/g1-companion.md       |  13 +++
 content/logiciels/gchange.md            |  13 +++
 content/logiciels/gecko.md              |  13 +++
 content/logiciels/ginkgo.md             |  13 +++
 content/logiciels/silkaj.md             |  12 +++
 content/logiciels/tikka.md              |  14 ++++
 content/logiciels/wotwizard.md          |  12 +++
 templates/custom/4-logiciels.html       | 101 ++++++------------------
 themes/albatros                         |   2 +-
 18 files changed, 214 insertions(+), 90 deletions(-)
 delete mode 100644 content/ecosysteme.md
 create mode 100644 content/logiciels/TEMPLATE.md
 create mode 100644 content/logiciels/_index.md
 create mode 100644 content/logiciels/cesium.md
 create mode 100644 content/logiciels/datapods.md
 create mode 100644 content/logiciels/duniter-v2.md
 create mode 100644 content/logiciels/duniter.md
 create mode 100644 content/logiciels/g1-companion.md
 create mode 100644 content/logiciels/gchange.md
 create mode 100644 content/logiciels/gecko.md
 create mode 100644 content/logiciels/ginkgo.md
 create mode 100644 content/logiciels/silkaj.md
 create mode 100644 content/logiciels/tikka.md
 create mode 100644 content/logiciels/wotwizard.md

diff --git a/config.toml b/config.toml
index 59e192a..dd3fecd 100644
--- a/config.toml
+++ b/config.toml
@@ -23,6 +23,21 @@ logo = "/img/duniter.png"
 content_source = "https://git.duniter.org/websites/duniter_website_fr_v2/-/tree/master/content/"
 flag = "🇫🇷"
 
+# customize navigation links
+[extra.nav.links]
+left = [
+    "monnaie-libre.md",
+    "g1.md",
+    "logiciels/_index.md",
+    "toile-de-confiance.md",
+    "contributeurs/_index.md",
+]
+right = [
+    "blog/_index.md",
+    "wiki/_index.md",
+    "faq/_index.md",
+]
+
 # links to translated version of the site
 [extra.translations.en]
 base_url = "https://duniter.org/"
diff --git a/content/blog/2023-04-28-duniter-web3.md b/content/blog/2023-04-28-duniter-web3.md
index cf4db19..3d5e83f 100644
--- a/content/blog/2023-04-28-duniter-web3.md
+++ b/content/blog/2023-04-28-duniter-web3.md
@@ -55,7 +55,7 @@ Les algorithmes de consensus de la blockchain peuvent être sans [permission ou
 Les algorithmes sans permission connus, comme la *preuve de travail* de Bitcoin, sont lents et gourmands en énergie. C'est pourquoi de nombreuses blockchains se sont orientées vers des algorithmes avec permission, comme la *preuve d'enjeu* ou la *preuve d'autorité*. Alors que Duniter v1 utilisait une preuve mixte ([en savoir plus](@/blog/2017-05-02-preuve-de-travail.md)), Duniter v2 est maintenant prêt à utiliser le mécanisme de preuve d'identité entièrement décentralisé fourni par sa toile de confiance en combinaison avec l'algorithme hybride <a href="https://research.web3.foundation/en/latest/polkadot/block-production/Babe.html"><abbr title="Blind Assignment for Blockchain Extension">BABE</abbr></a>/<a href="https://research.web3.foundation/en/latest/polkadot/finality.html"><abbr title="Greedy Heaviest-Observed Sub-Tree">G</abbr><abbr title="GHOST-based Recursive ANcestor Deriving Prefix Agreement">RANDPA</abbr></a>. Alors que la toile de confiance principale est accessible à tout le monde, un sous-ensemble de celle-ci appellée "toile de confiance forgeron", avec des exigences de sécurité élevées, permettra de participer à l'écriture des blocs. Il s'agira alors du premier consensus de blockchain utilisant une couche de permission entièrement décentralisée avec [preuve d'identité](https://en.wikipedia.org/wiki/Proof_of_identity_(blockchain_consensus)) (PoID) pour BABE. C'est un autre moyen de se rapprocher d'une véritable démocratie sur blockchain (le prochain moyen le plus proche étant, à mon avis, la [NPoS](https://wiki.polkadot.network/docs/learn-consensus#nominated-proof-of-stake)).
 
 ## Conception communautaire "orientée outil"
-Alors que de nombreux projets Web3 appliquent une démarche de conception "orientée produit", l'écosystème logiciel Duniter est "orienté outil". Il n'essaie pas de créer des besoins avec un marketing agressif, mais répond aux différents besoins des utilisateurs. Il suffit de regarder la galaxie des logiciels libres [connectés à la blockchain de Duniter](@/ecosysteme.md) pour se faire une idée de la diversité d'utilisation de cette monnaie par rapport à l'aspect principalement financier des *crypto-tokens*.
+Alors que de nombreux projets Web3 appliquent une démarche de conception "orientée produit", l'écosystème logiciel Duniter est "orienté outil". Il n'essaie pas de créer des besoins avec un marketing agressif, mais répond aux différents besoins des utilisateurs. Il suffit de regarder la galaxie des logiciels libres [connectés à la blockchain de Duniter](@/logiciels/_index.md) pour se faire une idée de la diversité d'utilisation de cette monnaie par rapport à l'aspect principalement financier des *crypto-tokens*.
 
 ## Futur de Duniter
 Jusqu'à présent, Duniter était principalement confiné aux utilisateurs francophones, mais il s'ouvre au monde extérieur en traduisant sa documentation en anglais et en espagnol et en [réécrivant son cœur](@/blog/2022-01-29-duniter-substrate.md) dans le *framework* Substrate. Cela facilitera l'interopérabilité avec d'autres blockchains et l'extension de son réseau de confiance, l'un de ses principaux atouts.
diff --git a/content/ecosysteme.md b/content/ecosysteme.md
deleted file mode 100644
index e5890b8..0000000
--- a/content/ecosysteme.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-title = "Logiciels"
-template = "custom/4-logiciels.html"
-weight = 3
-description = "Un large éventail logiciel constitue l'écosystème de la monnaie libre ǧ1."
-
-[taxonomies]
-tags = ["Duniter", "Cesium", "Silkaj"]
-+++
diff --git a/content/logiciels/TEMPLATE.md b/content/logiciels/TEMPLATE.md
new file mode 100644
index 0000000..4c82f10
--- /dev/null
+++ b/content/logiciels/TEMPLATE.md
@@ -0,0 +1,11 @@
++++
+title = "TEMPLATE"
+
+[extra]
+logo = "/img/logo.svg"
+repo = ""
+website = ""
+languages = ["", ]
+frameworks = ["", ]
+contributors = ["", ]
++++
\ No newline at end of file
diff --git a/content/logiciels/_index.md b/content/logiciels/_index.md
new file mode 100644
index 0000000..2c1122f
--- /dev/null
+++ b/content/logiciels/_index.md
@@ -0,0 +1,21 @@
++++
+title = "Logiciels"
+template = "custom/4-logiciels.html"
+weight = 3
+description = "Un large éventail logiciel constitue l'écosystème de la monnaie libre ǧ1."
+aliases = ["ecosysteme"]
+
+[extra]
+item_path = "logiciels/"
+
+[[extra.group]]
+name = "Écosystème logiciel"
+list = ["duniter", "cesium", "silkaj", "gchange", "wotwizard", "datapods"]
+group_by = 3
+[[extra.group]]
+name = "En développement"
+list = ["duniter-v2", "gecko", "tikka", "g1-companion", "ginkgo"]
+group_by = 3
+
+
++++
diff --git a/content/logiciels/cesium.md b/content/logiciels/cesium.md
new file mode 100644
index 0000000..60e4ae4
--- /dev/null
+++ b/content/logiciels/cesium.md
@@ -0,0 +1,13 @@
++++
+title = "Cesium"
+
+[extra]
+logo = "/img/cesium.svg"
+repo = "https://git.duniter.org/clients/cesium-grp/cesium/"
+website = "https://cesium.app/fr/"
+languages = ["javascript",]
+frameworks = ["angularjs", "ionic"]
+contributors = ["kimamila", "matograine"]
++++
+
+Fondé sur les frameworks <strong>AngularJS</strong> et <strong>Ionic</strong>, <a href="https://cesium.app/">Cesium</a> est un client web également disponible sur smartphone.
\ No newline at end of file
diff --git a/content/logiciels/datapods.md b/content/logiciels/datapods.md
new file mode 100644
index 0000000..cf14938
--- /dev/null
+++ b/content/logiciels/datapods.md
@@ -0,0 +1,13 @@
++++
+title = "Datapods"
+
+[extra]
+logo = "/img/datapod.svg"
+repo = "https://git.duniter.org/clients/cesium-grp/cesium-plus-pod/"
+website = "http://doc.e-is.pro/cesium-plus-pod/REST_API.html"
+languages = ["java", ]
+frameworks = ["elasticsearch", ]
+contributors = ["kimamila", ]
++++
+
+Les <a href="http://doc.e-is.pro/cesium-plus-pod/REST_API.html">Datapods</a> sont une couche de données complémentaires hors-blockchain sur <strong>ElasticSearch</strong> qui sert pour les applications clients comme Cesium et Ğchange.
\ No newline at end of file
diff --git a/content/logiciels/duniter-v2.md b/content/logiciels/duniter-v2.md
new file mode 100644
index 0000000..7fb3c05
--- /dev/null
+++ b/content/logiciels/duniter-v2.md
@@ -0,0 +1,14 @@
++++
+title = "Duniter-v2s"
+
+[extra]
+logo = "/img/duniterv2.svg"
+repo = "https://git.duniter.org/nodes/rust/duniter-v2s"
+website = "https://duniter.fr/"
+languages = ["rust", ]
+frameworks = ["substrate", ]
+contributors = ["elois", "HugoTrentesaux", "tuxmain", "bgallois"]
++++
+
+
+<a href="https://git.duniter.org/nodes/rust/duniter-v2s">Duniter-v2s</a> est la version 2 de Duniter totalement ré-écrite sur le framework blockchain Substrate.
\ No newline at end of file
diff --git a/content/logiciels/duniter.md b/content/logiciels/duniter.md
new file mode 100644
index 0000000..c1538d8
--- /dev/null
+++ b/content/logiciels/duniter.md
@@ -0,0 +1,13 @@
++++
+title = "Duniter"
+
+[extra]
+logo = "/img/duniter-logo_alt.svg"
+repo = "https://git.duniter.org/nodes/typescript/duniter/"
+website = "https://duniter.fr/"
+languages = ["javascript", "rust"]
+frameworks = ["nodejs"]
+contributors = ["cgeek", "elois"]
++++
+
+La blockchain de la Ğ1 fonctionne grâce à <a href="https://git.duniter.org/nodes/typescript/duniter/">Duniter</a>. Historiquement en <strong>Node.js</strong>, une migration progressive vers <strong>Rust</strong> est en cours.
\ No newline at end of file
diff --git a/content/logiciels/g1-companion.md b/content/logiciels/g1-companion.md
new file mode 100644
index 0000000..b789f0b
--- /dev/null
+++ b/content/logiciels/g1-companion.md
@@ -0,0 +1,13 @@
++++
+title = "Äž1-compagnon"
+
+[extra]
+logo = "/img/g1compagnon.svg"
+repo = "https://git.duniter.org/clients/g1-compagnon"
+languages = ["javascript", ]
+frameworks = ["nuxt", ]
+contributors = ["ManUtopiK", ]
++++
+
+
+Extension de navigateur pour la gestion de clés Ǧ1v2. Elle expose une API permettant à n'importe quel site web de fournir des fonctionnalités liées à la Ǧ1v2.
\ No newline at end of file
diff --git a/content/logiciels/gchange.md b/content/logiciels/gchange.md
new file mode 100644
index 0000000..763522b
--- /dev/null
+++ b/content/logiciels/gchange.md
@@ -0,0 +1,13 @@
++++
+title = "Äžchange"
+
+[extra]
+logo = "/img/gchange.png"
+repo = "https://git.duniter.org/marketplaces/gchange-client"
+website = "https://www.gchange.fr/"
+languages = ["javascript", ]
+
+contributors = ["kimamila", ]
++++
+
+C'est le logiciel de place de marché le plus utilisé. <a href="https://www.gchange.fr/">Ğchange</a> utilise les Datapod et une interface en <strong>Ionic</strong>.
\ No newline at end of file
diff --git a/content/logiciels/gecko.md b/content/logiciels/gecko.md
new file mode 100644
index 0000000..929a807
--- /dev/null
+++ b/content/logiciels/gecko.md
@@ -0,0 +1,13 @@
++++
+title = "Äžecko"
+
+[extra]
+logo = "/img/gecko.png"
+repo = "https://git.p2p.legal/axiom-team/gecko"
+website = ""
+languages = ["dart", ]
+frameworks = ["flutter", ]
+contributors = ["poka", ]
++++
+
+Le framework <strong>Flutter</strong> permet au client mobile axé transaction <a href="https://git.p2p.legal/axiom-team/gecko">Ğecko</a> d'atteindre de très bonnes performances. Les portefeuilles sont gérés via des bindings <strong>Rust</strong> et les données sont échangées via GVA et les Datapods.
\ No newline at end of file
diff --git a/content/logiciels/ginkgo.md b/content/logiciels/ginkgo.md
new file mode 100644
index 0000000..a3c9524
--- /dev/null
+++ b/content/logiciels/ginkgo.md
@@ -0,0 +1,13 @@
++++
+title = "Äž1nkgo"
+
+[extra]
+logo = "/img/ginkgo.svg"
+repo = "https://git.duniter.org/vjrj/ginkgo/"
+languages = ["dart", ]
+frameworks = ["flutter", ]
+contributors = ["vjrj", ]
++++
+
+
+Application <strong>Flutter</strong> utilisant l'API GVA de Duniter 1.9 permettant de faire des paiement rapides.
\ No newline at end of file
diff --git a/content/logiciels/silkaj.md b/content/logiciels/silkaj.md
new file mode 100644
index 0000000..c999be3
--- /dev/null
+++ b/content/logiciels/silkaj.md
@@ -0,0 +1,12 @@
++++
+title = "Silkaj"
+
+[extra]
+logo = "/img/silkaj.svg"
+repo = "https://git.duniter.org/clients/python/silkaj/"
+website = "https://silkaj.duniter.org/"
+languages = ["python"]
+contributors = ["moul", "vit"]
++++
+
+Client en ligne de commande développé en <strong>Python</strong>, <a href="https://silkaj.duniter.org/">Silkaj</a> permet notamment d'automatiser certaines tâches complexes.
\ No newline at end of file
diff --git a/content/logiciels/tikka.md b/content/logiciels/tikka.md
new file mode 100644
index 0000000..f2ca568
--- /dev/null
+++ b/content/logiciels/tikka.md
@@ -0,0 +1,14 @@
++++
+title = "Tikka"
+
+[extra]
+logo = "/img/tikka.png"
+repo = ""
+website = ""
+languages = ["python", ]
+frameworks = ["pyqt", ]
+contributors = ["vit", ]
++++
+
+
+<a href="https://forum.duniter.org/t/naissance-aujourdhui-de-tikka-un-nouveau-client/7849">Tikka</a> est un client bureau en développement à destination des commerçants.
\ No newline at end of file
diff --git a/content/logiciels/wotwizard.md b/content/logiciels/wotwizard.md
new file mode 100644
index 0000000..b8a94b4
--- /dev/null
+++ b/content/logiciels/wotwizard.md
@@ -0,0 +1,12 @@
++++
+title = "WotWizard"
+
+[extra]
+logo = "/img/wizard.svg"
+repo = "https://git.duniter.org/gerard94/wotwizard"
+languages = ["go", ]
+contributors = ["gerard94", ]
++++
+
+
+Développé en <strong>Go</strong> et exposant une API <strong>GraphQL</strong>, <a href="https://git.duniter.org/gerard94/wotwizard">WotWizard</a> fournit des informations sur l'historique de la toile de confiance ansi que des prédictions sur les entrées.
\ No newline at end of file
diff --git a/templates/custom/4-logiciels.html b/templates/custom/4-logiciels.html
index 3dc57db..e9de812 100644
--- a/templates/custom/4-logiciels.html
+++ b/templates/custom/4-logiciels.html
@@ -2,88 +2,31 @@
 
 {% block content %}
 <main class="w3-container w3-padding-64">
-
-    <section class="w3-content">
-        <h1 style="text-align: center;">Écosystème logiciel</h1>
-    </section>
-
-<section class="w3-content w3-padding-32">
-    <div class="titlecards">
-        <div class="w3-row-padding">
-            <div class="w3-col m4"> 
-                <a href="https://git.duniter.org/nodes/typescript/duniter/"><img src="/img/duniter-logo_alt.svg"/></a>
-                <h3>Duniter</h3>
-                <p>La blockchain de la Ğ1 fonctionne grâce à <a href="https://git.duniter.org/nodes/typescript/duniter/">Duniter</a>. Historiquement en <strong>Node.js</strong>, une migration progressive vers <strong>Rust</strong> est en cours.</p>
-            </div>
-            <div class="w3-col m4">
-                <a href="https://cesium.app/fr/"><img src="/img/cesium.svg"/></a>
-                <h3>Cesium</h3>
-                <p>Fondé sur les frameworks <strong>AngularJS</strong> et <strong>Ionic</strong>, <a href="https://cesium.app/">Cesium</a> est un client web également disponible sur smartphone.</p>
-            </div>
-            <div class="w3-col m4">
-                <a href="https://silkaj.duniter.org/"><img src="/img/silkaj.svg"/></a>
-                <h3>Silkaj</h3>
-                <p>Client en ligne de commande développé en <strong>Python</strong>, <a href="https://silkaj.duniter.org/">Silkaj</a> permet notamment d'automatiser certaines tâches complexes.</p>
-            </div>
-        </div>
-        <div class="w3-row-padding">
-            <div class="w3-col m4">
-                <a href="https://www.gchange.fr/"><img src="/img/gchange.png"/></a>
-                <h3>Äžchange</h3>                
-                <p>C'est le logiciel de place de marché le plus utilisé. <a href="https://www.gchange.fr/">Ğchange</a> utilise les Datapod et une interface en <strong>Ionic</strong>.</p>
-            </div>
-            <div class="w3-col m4">
-                <a href="https://github.com/duniter/WotWizard/"><img src="/img/wizard.svg"/></a>
-                <h3>WotWizard</h3>
-                <p>Développé en <strong>Go</strong> et exposant une API <strong>GraphQL</strong>, <a href="https://github.com/duniter/WotWizard/">WotWizard</a> fournit des informations sur l'historique de la toile de confiance ansi que des prédictions sur les entrées.</p>
-            </div>
-            <div class="w3-col m4"> 
-                <a href="http://doc.e-is.pro/cesium-plus-pod/REST_API.html"><img src="/img/datapod.svg"/></a>
-                <h3>Datapod</h3>
-                <p>Les <a href="http://doc.e-is.pro/cesium-plus-pod/REST_API.html">Datapods</a> sont une couche de données complémentaires hors-blockchain sur <strong>ElasticSearch</strong> qui sert pour les applications clients comme Cesium et Ğchange.</p>
-            </div>
-        </div>
-    </div>
-</section>
-
-
-<section class="w3-content w3-padding-32">
-    <div class="titlecards">
-        <h1>En développement</h1>
-        <div class="w3-row-padding">
-            <div class="w3-col m4">
-                <a href="https://git.duniter.org/nodes/rust/duniter-v2s"><img src="/img/duniterv2.svg"/></a>
-                <h3>Duniter-v2s</h3>
-                <p><a href="https://git.duniter.org/nodes/rust/duniter-v2s">Duniter-v2s</a> est la version 2 de Duniter totalement ré-écrite sur le framework blockchain Substrate.</p>
-            </div>
-
-            <div class="w3-col m4">
-                <a href="https://git.p2p.legal/axiom-team/gecko"><img src="/img/gecko.png"/></a>
-                <h3>Äžecko</h3>
-                <p>Le framework <strong>Flutter</strong> permet au client mobile axé transaction <a href="https://git.p2p.legal/axiom-team/gecko">Ğecko</a> d'atteindre de très bonnes performances. Les portefeuilles sont gérés via des bindings <strong>Rust</strong> et les données sont échangées via GVA et les Datapods.</p>
-            </div>
-
-            <div class="w3-col m4">
-                <a href="https://forum.duniter.org/t/naissance-aujourdhui-de-tikka-un-nouveau-client/7849"><img src="/img/tikka.png"/></a>
-                <h3>Tikka</h3>
-                <p><a href="https://forum.duniter.org/t/naissance-aujourdhui-de-tikka-un-nouveau-client/7849">Tikka</a> est un client bureau en développement à destination des commerçants.</p>
+    {% for group in section.extra.group %}
+    <section class="w3-content w3-padding-32">
+        <div class="titlecards">
+            <h1>{{group.name}}</h1>
+            <div class="w3-row-padding">
+                {% for item in group.list %}
+                {% set page = get_page(path=section.extra.item_path ~ item ~ ".md") %}
+                <div class="w3-col m4">
+                    <a href="{{page.extra.repo}}"><img src="{{page.extra.logo}}"/></a>
+                    <h3>{{page.title}}</h3>
+                    <p>{{page.content | safe}}</p>
+                </div>
+                {% if loop.index % group.group_by == 0 %}
+            </div>
+            <div class="w3-row-padding">
+                {% endif %}
+                {% endfor %}
             </div>
         </div>
+    </section>
+{% endfor %}
 
-        <div class="w3-row-padding">
-            <div class="w3-col m4">
-                <a href="https://git.duniter.org/clients/g1-compagnon"><img src="/img/g1compagnon.svg"/></a>
-                <h3>Ǧ1-compagnon</h3>
-                <p>Extension de navigateur pour la gestion de clés Ǧ1v2. Elle expose une API permettant à n'importe quel site web de fournir des fonctionnalités liées à la Ǧ1v2.</p>
-            </div>
-            <div class="w3-col m4">
-                <a href="https://git.duniter.org/vjrj/ginkgo/"><img src="/img/ginkgo.svg"/></a>
-                <h3>Äž1nkgo</h3>
-                <p>Application <strong>Flutter</strong> utilisant l'API GVA de Duniter 1.9 permettant de faire des paiement rapides.</p>
-            </div>
-        </div>
-    </div>
-</section>
+<hr>
+<hr>
+<hr>
 
 <section class="w3-content w3-padding-32">
     <div class="titlecards">
diff --git a/themes/albatros b/themes/albatros
index 0fe38e2..1dd59b7 160000
--- a/themes/albatros
+++ b/themes/albatros
@@ -1 +1 @@
-Subproject commit 0fe38e2f2a1b6e669e5590527948aefb103b217a
+Subproject commit 1dd59b7907d7f1c8c5029c27d355e5b7ad310b22
-- 
GitLab