diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c73fbe0d9bd2e5b76de7ab165e0f1e832b65edb5..641127a6b3635987155ff6e4071435c6d1f23ddd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,9 +14,10 @@ build_and_deploy_gitlab:
     - pip install pipenv
     - pipenv install
     - npm ci --cache .npm --prefer-offline
-    - curl -sSLf "$(curl -sSLf https://api.github.com/repos/tomwright/dasel/releases/latest | grep browser_download_url | grep linux_amd64 | grep -v .gz | cut -d\" -f 4)" -L -o dasel && chmod +x dasel
+    - curl -sSLf "https://github.com/TomWright/dasel/releases/download/v2.4.1/dasel_linux_amd64" -L -o dasel && chmod +x dasel
     - NEW_VERSION=`./dasel -f pyproject.toml -r toml "project.join(+,version,string(${CI_COMMIT_SHORT_SHA}))" | tr -d "'"`
     - ./dasel put -f pyproject.toml -r toml -t string -v ${NEW_VERSION} project.version
+    - pipenv run pip install -e .
     - pipenv run npm run build:prod
     - pipenv run python -m build
     - 'echo "Déploiement de la version : ${NEW_VERSION}"'
diff --git a/Pipfile b/Pipfile
index 1e69980e0c15789659bd3183ee7bc0358af7c4c5..7086e3c912d1f9077d873e03787cb26b5a7c9234 100644
--- a/Pipfile
+++ b/Pipfile
@@ -3,7 +3,13 @@ url = "https://pypi.org/simple"
 verify_ssl = true
 name = "pypi"
 
+[[source]]
+name = "gitlab-plugin"
+url = "https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/projects/22396/packages/pypi/simple"
+verify_ssl = false
+
 [packages]
+dsfr_structure= "*"
 mkdocs = "*"
 mkdocs-include-markdown-plugin = "*"
 mkdocs-git-revision-date-localized-plugin = "*"
diff --git a/Pipfile.lock b/Pipfile.lock
index 62eebd6073acc76a33b136f434544f020647ee2f..60c192c3be65f21a1e2eb024edcf77986596e89b 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "cfc210b031c25ce2442482474c180db2efe35e17dbb27b191bbd97fd837402a0"
+            "sha256": "c5b4bd3f7d8385ad5f4b44c5f9839a364bd285ba3c07fe32387a6b2d739e04d3"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -12,6 +12,11 @@
                 "name": "pypi",
                 "url": "https://pypi.org/simple",
                 "verify_ssl": true
+            },
+            {
+                "name": "gitlab-plugin",
+                "url": "https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/projects/22396/packages/pypi/simple",
+                "verify_ssl": false
             }
         ]
     },
@@ -157,7 +162,7 @@
                 "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
                 "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
             ],
-            "markers": "os_name == 'nt'",
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
             "version": "==0.4.6"
         },
         "docutils": {
@@ -168,6 +173,14 @@
             "markers": "python_version >= '3.7'",
             "version": "==0.20.1"
         },
+        "dsfr-structure": {
+            "hashes": [
+                "sha256:362a7b0e98737884650c3fd74f452f2080223e4a5f1898e95ceb053081d85273",
+                "sha256:af53c2213fd13f6bdbf8b83fbe5a263b2e19e8f938b96078fb7b4372a7c6392e"
+            ],
+            "index": "gitlab-plugin",
+            "version": "==0.1.0+de04ed9d"
+        },
         "ghp-import": {
             "hashes": [
                 "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619",
@@ -193,11 +206,11 @@
         },
         "griffe": {
             "hashes": [
-                "sha256:7874febe7cd81e8e47eb7b8130ff9d38c8f3656233c01d2d217d2e898a0925f5",
-                "sha256:b4e510bf0ed1fc91c58453c68018a2247c561adec8f5dadc40275afc01f51eac"
+                "sha256:6a5bc457320e8e199006aa5fbb03e162f5e21abe31aa6221f7a5c37ea0724c71",
+                "sha256:9b97487b583042b543d1e28196caee638ecd766c8c4c98135071806cb5333ac2"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==0.36.9"
+            "version": "==0.38.0"
         },
         "idna": {
             "hashes": [
@@ -233,11 +246,11 @@
         },
         "keyring": {
             "hashes": [
-                "sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6",
-                "sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509"
+                "sha256:4446d35d636e6a10b8bce7caa66913dd9eca5fd222ca03a3d42c38608ac30836",
+                "sha256:e730ecffd309658a08ee82535a3b5ec4b4c8669a9be11efb66249d8e0aeb9a25"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==24.2.0"
+            "version": "==24.3.0"
         },
         "markdown": {
             "hashes": [
@@ -387,11 +400,11 @@
         },
         "mkdocs-include-markdown-plugin": {
             "hashes": [
-                "sha256:8f9262cf4246ebc33dcdfbdb40c1253b7c9ad79e0f8dc2a9e338b1fb761d8e02",
-                "sha256:9799ea8ac9179e9e91ab58869421be60a2585e3d9c4a53181d37a49d9a1780db"
+                "sha256:523c9c3a1d6a517386dc11bf60b0c0c564af1071bb6de8d213106d54f752dcc1",
+                "sha256:e7b8b5ecc41d6a3e16969cff3725ec3a391b68e9dfe1a4b4e36a8508becda835"
             ],
             "index": "pypi",
-            "version": "==6.0.3"
+            "version": "==6.0.4"
         },
         "mkdocs-literate-nav": {
             "hashes": [
@@ -413,18 +426,18 @@
                 "python"
             ],
             "hashes": [
-                "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e",
-                "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"
+                "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e",
+                "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"
             ],
             "index": "pypi",
-            "version": "==0.23.0"
+            "version": "==0.24.0"
         },
         "mkdocstrings-python": {
             "hashes": [
-                "sha256:2439d6ad3e34f0bb4c643b845fb3c06ae9233499a1736f9fa273424b75cc5894",
-                "sha256:c20128fa96c24dbc6437b10dfedaf33b0415d4503e51ce9ce5e84b271278268e"
+                "sha256:70eacbe5f2d5071f2e525ba0b35bc447d398437dfbcd90c63fe6e977551cfe26",
+                "sha256:c2fc34efd70000ec31aee247910006e8dd9d1b9f3957bf46880c3f6e51a8f0d5"
             ],
-            "version": "==1.7.3"
+            "version": "==1.7.4"
         },
         "more-itertools": {
             "hashes": [
@@ -481,11 +494,11 @@
         },
         "platformdirs": {
             "hashes": [
-                "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3",
-                "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"
+                "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b",
+                "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==3.11.0"
+            "version": "==4.0.0"
         },
         "pygments": {
             "hashes": [
@@ -497,11 +510,11 @@
         },
         "pymdown-extensions": {
             "hashes": [
-                "sha256:8cba67beb2a1318cdaf742d09dff7c0fc4cafcc290147ade0f8fb7b71522711a",
-                "sha256:f6c79941498a458852853872e379e7bab63888361ba20992fc8b4f8a9b61735e"
+                "sha256:bc46f11749ecd4d6b71cf62396104b4a200bad3498cb0f5dad1b8502fe461a35",
+                "sha256:cfc28d6a09d19448bcbf8eee3ce098c7d17ff99f7bd3069db4819af181212037"
             ],
             "index": "pypi",
-            "version": "==10.3.1"
+            "version": "==10.4"
         },
         "pyproject-hooks": {
             "hashes": [
@@ -526,14 +539,6 @@
             ],
             "version": "==2023.3.post1"
         },
-        "pywin32-ctypes": {
-            "hashes": [
-                "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60",
-                "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"
-            ],
-            "markers": "sys_platform == 'win32'",
-            "version": "==0.2.2"
-        },
         "pyyaml": {
             "hashes": [
                 "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5",
@@ -632,11 +637,11 @@
         },
         "rich": {
             "hashes": [
-                "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245",
-                "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"
+                "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa",
+                "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"
             ],
             "markers": "python_full_version >= '3.7.0'",
-            "version": "==13.6.0"
+            "version": "==13.7.0"
         },
         "setuptools": {
             "hashes": [
@@ -662,14 +667,6 @@
             "markers": "python_version >= '3.7'",
             "version": "==5.0.1"
         },
-        "tomli": {
-            "hashes": [
-                "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
-                "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
-            ],
-            "markers": "python_version < '3.11'",
-            "version": "==2.0.1"
-        },
         "twine": {
             "hashes": [
                 "sha256:929bc3c280033347a00f847236564d1c52a3e61b1ac2516c97c48f3ceab756d8",
@@ -680,11 +677,11 @@
         },
         "urllib3": {
             "hashes": [
-                "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84",
-                "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"
+                "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3",
+                "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"
             ],
-            "markers": "python_version >= '3.7'",
-            "version": "==2.0.7"
+            "markers": "python_version >= '3.8'",
+            "version": "==2.1.0"
         },
         "watchdog": {
             "hashes": [
diff --git a/mkdocs.yml b/mkdocs.yml
index 7f1e0bc7f3ddaf9192122fe3a1420d49f0f0a48a..f9b707513338a7765a29a9dd59974c08148c05e8 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -28,8 +28,7 @@ extra_css:
   - css/extra.css
 
 markdown_extensions:
-  - dsfr_blockquote
-  - dsfr_table
+  - dsfr_structure.extension.all_extensions
   - toc:
       permalink: ""
   - attr_list
diff --git a/pyproject.toml b/pyproject.toml
index 0b182c457334bc26f03476755f6c8f43591e4a2a..bdc849e12115230cf66e0e35825a6570dd9ab2d1 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,6 +9,8 @@ authors = [
 requires-python = ">=3.7"
 dependencies = [
     "mkdocs>=1.4",
+    "pymdown-extensions>=10.4",
+    "dsfr_structure>=0.1.0"
 ]
 license = { text = "MIT" }