diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb
index a5ff5c58040dd786e9de27571e4cf684669065bc..4220037d63d30894bca1aa0c4734cef0865847a3 100644
--- a/app/models/communication/website.rb
+++ b/app/models/communication/website.rb
@@ -34,6 +34,7 @@
 #
 class Communication::Website < ApplicationRecord
   include WithAbouts
+  include WithConfigs
   include WithGit
   include WithGitRepository
   include WithImport
@@ -59,7 +60,7 @@ class Communication::Website < ApplicationRecord
 
   def git_dependencies(website)
     dependencies = (
-      [self] +
+      [self, config_permalinks, config_base_url] +
       pages + pages.map(&:active_storage_blobs).flatten +
       posts + posts.map(&:active_storage_blobs).flatten +
       [index_for(:home)] + index_for(:home).active_storage_blobs +
diff --git a/app/models/communication/website/configs/base_url.rb b/app/models/communication/website/configs/base_url.rb
new file mode 100644
index 0000000000000000000000000000000000000000..890fbc8cb241de1298193606a4f231cb110eb8af
--- /dev/null
+++ b/app/models/communication/website/configs/base_url.rb
@@ -0,0 +1,11 @@
+class Communication::Website::Configs::BaseUrl < Communication::Website
+
+  def self.polymorphic_name
+    'Communication::Website::Configs::BaseUrl'
+  end
+
+  def git_path(website)
+    "config/production/config.yaml"
+  end
+
+end
diff --git a/app/models/communication/website/configs/permalinks.rb b/app/models/communication/website/configs/permalinks.rb
new file mode 100644
index 0000000000000000000000000000000000000000..64df73301bd1a9072a069a65ce55419ea41119e1
--- /dev/null
+++ b/app/models/communication/website/configs/permalinks.rb
@@ -0,0 +1,11 @@
+class Communication::Website::Configs::Permalinks < Communication::Website
+
+  def self.polymorphic_name
+    'Communication::Website::Configs::Permalinks'
+  end
+
+  def git_path(website)
+    "config/_default/permalinks.yaml"
+  end
+
+end
diff --git a/app/models/communication/website/index_page.rb b/app/models/communication/website/index_page.rb
index d1991abb102f7e13e39d27ee5694584c100d7797..9366722a9032e4ff6b052d144970edb5846c130d 100644
--- a/app/models/communication/website/index_page.rb
+++ b/app/models/communication/website/index_page.rb
@@ -58,7 +58,7 @@ class Communication::Website::IndexPage < ApplicationRecord
   end
 
   def git_dependencies(website)
-    [self] + active_storage_blobs + website.menus
+    [self] + active_storage_blobs + website.menus + [website.config_permalinks]
   end
 
   def git_destroy_dependencies(website)
diff --git a/app/models/communication/website/with_configs.rb b/app/models/communication/website/with_configs.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c08987ad4b046d183411613df7cd17cce3aa70d2
--- /dev/null
+++ b/app/models/communication/website/with_configs.rb
@@ -0,0 +1,15 @@
+module Communication::Website::WithConfigs
+  extend ActiveSupport::Concern
+
+  included do
+
+    def config_permalinks
+      @config_permalinks ||= Communication::Website::Configs::Permalinks.find(id)
+    end
+
+    def config_base_url
+      @config_base_url ||= Communication::Website::Configs::BaseUrl.find(id)
+    end
+
+  end
+end
diff --git a/app/views/admin/communication/website/configs/base_urls/static.html.erb b/app/views/admin/communication/website/configs/base_urls/static.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..47d8819e135ff980812c48754213d616caabb1ca
--- /dev/null
+++ b/app/views/admin/communication/website/configs/base_urls/static.html.erb
@@ -0,0 +1 @@
+baseURL: <%= @website.url %>
diff --git a/app/views/admin/communication/website/configs/permalinks/static.html.erb b/app/views/admin/communication/website/configs/permalinks/static.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..8a4a34596645d1c539a9aa48f30a3bbc2a582ed7
--- /dev/null
+++ b/app/views/admin/communication/website/configs/permalinks/static.html.erb
@@ -0,0 +1,12 @@
+posts:          /<%= @website.index_for(:communication_posts).path %>/:year/:month/:day/:slug/
+categories:     /<%= @website.index_for(:communication_posts).path %>/:slug/
+persons:        /<%= @website.index_for(:persons).path %>/:slug/
+authors:        /<%= @website.index_for(:persons).path %>/:slug/<%= @website.index_for(:communication_posts).path %>/
+<%# ces paths complémentaires sont nécessairesà Hugo mais on ne les utilise pas %>
+<% if @website.about_school? %>
+administrators: /<%= @website.index_for(:persons).path %>/:slug/roles/
+teachers:       /<%= @website.index_for(:persons).path %>/:slug/programs/
+<% end %>
+<% if @website.about_journal? %>
+researchers:    /<%= @website.index_for(:persons).path %>/:slug/articles/
+<% end %>
diff --git a/app/views/admin/communication/websites/_form.html.erb b/app/views/admin/communication/websites/_form.html.erb
index 300b47631780246141f01b1ed92921165a480f70..8227d6c685d56791d0fd7e641ae6ea08e181278d 100644
--- a/app/views/admin/communication/websites/_form.html.erb
+++ b/app/views/admin/communication/websites/_form.html.erb
@@ -3,10 +3,11 @@
     <div class="col-md-4">
       <div class="card flex-fill w-100">
         <div class="card-header">
-          <h5 class="card-title mb-0"><%= t('content') %></h5>
+          <h5 class="card-title mb-0"><%= t('metadata') %></h5>
         </div>
         <div class="card-body">
           <%= f.input :name %>
+          <%= f.input :url %>
           <%= f.input :about_type,
                       collection: Communication::Website.about_types,
                       input_html: { data: { conditional: true } },
@@ -44,20 +45,19 @@
     <div class="col-md-8">
       <div class="card flex-fill w-100">
         <div class="card-header">
-          <h5 class="card-title mb-0"><%= t('metadata') %></h5>
+          <h5 class="card-title mb-0"><%= t('communication.website.git') %></h5>
         </div>
         <div class="card-body">
-
-          <p class="mt-4"><strong><%= t('communication.website.git') %></strong></p>
           <div class="row">
             <div class="col-md-6">
-              <%= f.input :url %>
-              <%= f.input :repository %>
+              <%= f.input :git_provider, include_blank: false %>
             </div>
             <div class="col-md-6">
-              <%= f.input :git_provider, include_blank: false %>
               <%= f.input :access_token %>
             </div>
+            <div class="col-md-6">
+              <%= f.input :repository %>
+            </div>
           </div>
 
         </div>
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..ed5d2d5dc259c946e18d13d252da7fbaa4531e42
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,34 @@
+{
+  "requires": true,
+  "lockfileVersion": 1,
+  "dependencies": {
+    "16": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/16/-/16-0.0.2.tgz",
+      "integrity": "sha1-Hh9noWM+GADBZ+DnA9/wiQw+FTo=",
+      "requires": {
+        "numeric": "^1.2.6"
+      }
+    },
+    "cropperjs": {
+      "version": "1.5.12"
+    },
+    "jquery-cropper": {
+      "version": "1.0.1"
+    },
+    "notyf": {
+      "version": "3.10.0"
+    },
+    "numeric": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/numeric/-/numeric-1.2.6.tgz",
+      "integrity": "sha1-dlsCvvl5iPz4gNTrPza4D6MTNao="
+    },
+    "slug": {
+      "version": "5.1.0"
+    },
+    "sortablejs": {
+      "version": "1.14.0"
+    }
+  }
+}
diff --git a/package.json b/package.json
index 706af33303dde85fd911a6b807fec0796726719f..287e8a5c791bc877fd9519b95c75ed0a896a6c4f 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
     "npm": "8"
   },
   "dependencies": {
+    "16": "0.0.2",
     "cropperjs": "^1.5.12",
     "jquery-cropper": "^1.0.1",
     "notyf": "^3.10.0",
diff --git a/yarn.lock b/yarn.lock
index 9d2b82f2d23e3d314e536556b8da291f63c7ac3b..32fc5f3bcd3c8938621267e2d87194296d1cf723 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,13 @@
 # yarn lockfile v1
 
 
+"16@0.0.2":
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/16/-/16-0.0.2.tgz#1e1f67a1633e1800c167e0e703dff0890c3e153a"
+  integrity sha1-Hh9noWM+GADBZ+DnA9/wiQw+FTo=
+  dependencies:
+    numeric "^1.2.6"
+
 "@babel/parser@^7.16.4":
   version "7.17.3"
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0"
@@ -134,6 +141,11 @@ notyf@^3.10.0:
   resolved "https://registry.yarnpkg.com/notyf/-/notyf-3.10.0.tgz#67a64443c69ea0e6495c56ea0f91198860163d06"
   integrity sha512-Mtnp+0qiZxgrH+TzVlzhWyZceHdAZ/UWK0/ju9U0HQeDpap1mZ8cC7H5wSI5mwgni6yeAjaxsTw0sbMK+aSuHw==
 
+numeric@^1.2.6:
+  version "1.2.6"
+  resolved "https://registry.yarnpkg.com/numeric/-/numeric-1.2.6.tgz#765b02bef97988fcf880d4eb3f36b80fa31335aa"
+  integrity sha1-dlsCvvl5iPz4gNTrPza4D6MTNao=
+
 picocolors@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"