diff --git a/constants.js b/constants.js
index 67897a28ca2a0e0c1d3d652b18b9cb1c56a47b26..32116ec9721a5244b316f336e800b67494801def 100644
--- a/constants.js
+++ b/constants.js
@@ -1,6 +1,6 @@
 const { getServerUrl } = require("./config");
 
 module.exports = {
-    images_url: `${getServerUrl()}assets/images`,
+    images_url: `${getServerUrl()}assets/images/`,
     articles_url: `${getServerUrl()}articles/`,
 };
diff --git a/public/articles/games/fantom_quest/fantom_quest.json b/public/articles/games/fantom_quest/fantom_quest.json
index 3fcaeae9446bcf2d5a85b480c62bdbc6ed37189a..9e0e9674c29b22eb494ff3e5e072d4d1873a2038 100755
--- a/public/articles/games/fantom_quest/fantom_quest.json
+++ b/public/articles/games/fantom_quest/fantom_quest.json
@@ -2,7 +2,6 @@
     "title": "Fantom Quest",
     "subtitle": "Le labyrinthe de la quête d'identité",
     "tags": ["jeu web", "pixelart", "javascript", "labyrinthe"],
-    "status": "wip",
     "body": "<file>fantom_quest.txt",
     "images": [
         "screen_fantom_quest_1.jpg",
diff --git a/public/articles/software/index.json b/public/articles/software/index.json
index b2212f7ce92cb2213681b9ee53b11c52d02a7c84..9eeda8bf41fdedb4278e10b76c791495d7d54cee 100755
--- a/public/articles/software/index.json
+++ b/public/articles/software/index.json
@@ -1,3 +1,3 @@
 {
-    "articles": ["watergun"]
+    "articles": ["watergun", "website-template"]
 }
diff --git a/public/articles/software/watergun/watergun.json b/public/articles/software/watergun/watergun.json
index f87ffaea744975a29d2ded14a21abca91d166a52..f12c1ba66b432e085095e6c0346aef93b0ec8dec 100755
--- a/public/articles/software/watergun/watergun.json
+++ b/public/articles/software/watergun/watergun.json
@@ -1,7 +1,6 @@
 {
     "title": "Watergun",
     "date": "2021/01/23",
-    "status": "wip",
     "subtitle": "Un éditeur de site web ultra-light",
     "body": "<file>watergun.txt",
     "technical": {
diff --git a/public/articles/software/website-template/images/kuadrado-template-screen.png b/public/articles/software/website-template/images/kuadrado-template-screen.png
new file mode 100644
index 0000000000000000000000000000000000000000..1604d22f54f25008c6bdbcd7e143b243149db66c
Binary files /dev/null and b/public/articles/software/website-template/images/kuadrado-template-screen.png differ
diff --git a/public/articles/software/website-template/website-template.json b/public/articles/software/website-template/website-template.json
new file mode 100644
index 0000000000000000000000000000000000000000..6f5dd94c0fb9344449c64bea2cbfebff7bd1c859
--- /dev/null
+++ b/public/articles/software/website-template/website-template.json
@@ -0,0 +1,13 @@
+{
+    "title": "Website template",
+    "date": "2021/01/28",
+    "subtitle": "Modèle de site statique simple et dynamique",
+    "body": "<file>website-template.txt",
+    "technical": {
+        "stack": ["Javascript", "Browserify", "Nginx", "Docker"],
+        "license": "MIT",
+        "repository": "https://gitlab.com/peter_rabbit/kuadrado-website-template",
+        "version": "0.1.0"
+    },
+    "images": ["kuadrado-template-screen.png"]
+}
diff --git a/public/articles/software/website-template/website-template.txt b/public/articles/software/website-template/website-template.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49fba5b9bba84f208d02163ecd385bfe57a7145c
--- /dev/null
+++ b/public/articles/software/website-template/website-template.txt
@@ -0,0 +1,5 @@
+Basé sur les mêmes mécanismes de rendu dynamique que pour Watergun, ce modèle de site web propose une base réutilisable pour n'importe quel site statique simple et moderne.
+
+Aucun framework ni aucune librairie n'est utilisée dans le moteur de rendu du DOM. L'objectif étant un maximum de légèreté et de simplicité à la fois dans le code mais aussi dans le résultat final.
+
+Ce modèle est celui qui a servi pour le présent site.
\ No newline at end of file
diff --git a/public/assets/images/tech_logos/apache.png b/public/assets/images/tech_logos/apache.png
new file mode 100644
index 0000000000000000000000000000000000000000..24c10f44733ae7c98647f08d031dfa383be38c13
Binary files /dev/null and b/public/assets/images/tech_logos/apache.png differ
diff --git a/public/assets/images/tech_logos/c.png b/public/assets/images/tech_logos/c.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc00d068b1255276a15503c4f055fc24f6f233a9
Binary files /dev/null and b/public/assets/images/tech_logos/c.png differ
diff --git a/public/assets/images/tech_logos/css.png b/public/assets/images/tech_logos/css.png
new file mode 100644
index 0000000000000000000000000000000000000000..499afaaab62a968d7ab1baf35b5e04154c92daba
Binary files /dev/null and b/public/assets/images/tech_logos/css.png differ
diff --git a/public/assets/images/tech_logos/docker.png b/public/assets/images/tech_logos/docker.png
new file mode 100644
index 0000000000000000000000000000000000000000..61228d658ea6d01bb2a99ca1b24cffe6d5bddcd1
Binary files /dev/null and b/public/assets/images/tech_logos/docker.png differ
diff --git a/public/assets/images/tech_logos/html.png b/public/assets/images/tech_logos/html.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f78f2d438d0fd7e69d52834e0fa6e791838fd72
Binary files /dev/null and b/public/assets/images/tech_logos/html.png differ
diff --git a/public/assets/images/tech_logos/js.png b/public/assets/images/tech_logos/js.png
new file mode 100644
index 0000000000000000000000000000000000000000..f768218684cdb1eec27793b14d49cbac1a1c4dba
Binary files /dev/null and b/public/assets/images/tech_logos/js.png differ
diff --git a/public/assets/images/tech_logos/linux.png b/public/assets/images/tech_logos/linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..6226359e12db783f46ff21b7bf61fd76d9b42555
Binary files /dev/null and b/public/assets/images/tech_logos/linux.png differ
diff --git a/public/assets/images/tech_logos/mongodb.png b/public/assets/images/tech_logos/mongodb.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5f846655bfa31a5e5b54a352efb0055131e95c8
Binary files /dev/null and b/public/assets/images/tech_logos/mongodb.png differ
diff --git a/public/assets/images/tech_logos/mysql.png b/public/assets/images/tech_logos/mysql.png
new file mode 100644
index 0000000000000000000000000000000000000000..4371026f51f3c40bb1d72739f3c1bb230477418f
Binary files /dev/null and b/public/assets/images/tech_logos/mysql.png differ
diff --git a/public/assets/images/tech_logos/nginx.png b/public/assets/images/tech_logos/nginx.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3bf0f889fb07ecc2a31e5e0d2063c66fc418fc8
Binary files /dev/null and b/public/assets/images/tech_logos/nginx.png differ
diff --git a/public/assets/images/tech_logos/node.png b/public/assets/images/tech_logos/node.png
new file mode 100644
index 0000000000000000000000000000000000000000..854d7ed021bbce7b68682714bb3608e578d0b1ac
Binary files /dev/null and b/public/assets/images/tech_logos/node.png differ
diff --git a/public/assets/images/tech_logos/postgre.png b/public/assets/images/tech_logos/postgre.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0d08ae50cc49a56e3d111ccd5ed99f32ad9eb9a
Binary files /dev/null and b/public/assets/images/tech_logos/postgre.png differ
diff --git a/public/assets/images/tech_logos/python.png b/public/assets/images/tech_logos/python.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d9e0c290514c05c2115a3d13748b48f500f1625
Binary files /dev/null and b/public/assets/images/tech_logos/python.png differ
diff --git a/public/assets/images/tech_logos/react.png b/public/assets/images/tech_logos/react.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdbb5f043f0875e0311c1134f65ac703b41402b7
Binary files /dev/null and b/public/assets/images/tech_logos/react.png differ
diff --git a/public/assets/images/tech_logos/rust.png b/public/assets/images/tech_logos/rust.png
new file mode 100644
index 0000000000000000000000000000000000000000..41a01113e7637228c9034fa4572f56f2eb681bcc
Binary files /dev/null and b/public/assets/images/tech_logos/rust.png differ
diff --git a/public/assets/images/tech_logos/sass.png b/public/assets/images/tech_logos/sass.png
new file mode 100644
index 0000000000000000000000000000000000000000..88d9104a9101d1c2a44349c4b2df038eef277bc6
Binary files /dev/null and b/public/assets/images/tech_logos/sass.png differ
diff --git a/public/education/education.js b/public/education/education.js
index 60c301a93a3e75e968ede3baf87c807ab6185f56..100045b18e4932e07e646c1724322cdf0bfa67c6 100644
--- a/public/education/education.js
+++ b/public/education/education.js
@@ -14,7 +14,7 @@ module.exports = {
 const { getServerUrl } = require("./config");
 
 module.exports = {
-    images_url: `${getServerUrl()}assets/images`,
+    images_url: `${getServerUrl()}assets/images/`,
     articles_url: `${getServerUrl()}articles/`,
 };
 
@@ -111,12 +111,6 @@ class WebPage {
     constructor(args) {
         Object.assign(this, args);
     }
-
-    // setMeta() {
-    //     if (!this.meta) {
-    //         console.warn("Meta information missing")
-    //     }
-    // }
 }
 
 module.exports = WebPage;
@@ -274,7 +268,8 @@ class GameStudioClub {
                                             contents: "Contact",
                                         },
                                         {
-                                            tag: "span",
+                                            tag: "a",
+                                            href: "tel:+33475780872",
                                             contents: "04 75 78 08 72",
                                         },
                                         {
@@ -306,7 +301,7 @@ class GameStudioClub {
                                                 {
                                                     tag: "img",
                                                     alt: `learning theme image ${li.title}`,
-                                                    src: `${images_url}/${li.image}`,
+                                                    src: `${images_url}${li.image}`,
                                                 },
                                                 {
                                                     tag: "div",
@@ -577,7 +572,8 @@ class Popularization {
                                             contents: "Contact",
                                         },
                                         {
-                                            tag: "span",
+                                            tag: "a",
+                                            href: "tel:+33475780872",
                                             contents: "04 75 78 08 72",
                                         },
                                         {
@@ -609,7 +605,7 @@ class Popularization {
                                                 {
                                                     tag: "img",
                                                     alt: `learning theme image ${li.title}`,
-                                                    src: `${images_url}/${li.image}`,
+                                                    src: `${images_url}${li.image}`,
                                                 },
                                                 {
                                                     tag: "div",
@@ -676,7 +672,7 @@ class EducationPage extends WebPage {
                                         {
                                             tag: "img",
                                             alt: "image brain",
-                                            src: `${images_url}/brain.svg`,
+                                            src: `${images_url}brain.svg`,
                                         },
                                     ],
                                 },
@@ -725,7 +721,14 @@ const { images_url } = require("../../../constants");
 
 const NAV_MENU_ITEMS = [
     ["/games/", "Jeux"],
-    ["/software-development/", "Software"],
+    [
+        "/software-development/",
+        "Software",
+        [
+            ["/software-development/#projects", "Nos Projets"],
+            ["/software-development/#service", "Prestation de services"],
+        ],
+    ],
     [
         "/education/",
         "Pédagogie",
@@ -770,13 +773,13 @@ class NavBar {
                         {
                             tag: "img",
                             alt: "Logo Kuadrado",
-                            src: `${images_url}/logo_kuadrado.svg`,
+                            src: `${images_url}logo_kuadrado.svg`,
                         },
                         {
                             tag: "img",
                             alt: "Kuadrado Software",
                             class: "logo-text",
-                            src: `${images_url}/logo_kuadrado_txt.svg`,
+                            src: `${images_url}logo_kuadrado_txt.svg`,
                         },
                     ],
                 },
@@ -874,13 +877,13 @@ class Template {
                                 {
                                     tag: "img",
                                     alt: `logo Kuadrado`,
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "text-logo",
                                     alt: "Kuadrado Software",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
diff --git a/public/games/games.js b/public/games/games.js
index f8474ebb63fe6148bc2909db5ccb764c3ef782c6..627a2c7f740f7de3710eb35ea685ca8613d877c4 100644
--- a/public/games/games.js
+++ b/public/games/games.js
@@ -14,7 +14,7 @@ module.exports = {
 const { getServerUrl } = require("./config");
 
 module.exports = {
-    images_url: `${getServerUrl()}assets/images`,
+    images_url: `${getServerUrl()}assets/images/`,
     articles_url: `${getServerUrl()}articles/`,
 };
 
@@ -93,7 +93,7 @@ module.exports = ImageCarousel;
 const { fetchjson, fetchtext } = require("./fetch");
 
 function getArticleBody(text) {
-    return text.replaceAll("\n", "<br/>").replaceAll("  ", "&nbsp;&nbsp;");
+    return text.replaceAll("\n", "<br/>");
 }
 
 function getArticleDate(date) {
@@ -269,12 +269,6 @@ class WebPage {
     constructor(args) {
         Object.assign(this, args);
     }
-
-    // setMeta() {
-    //     if (!this.meta) {
-    //         console.warn("Meta information missing")
-    //     }
-    // }
 }
 
 module.exports = WebPage;
@@ -480,7 +474,7 @@ class GamesPage extends WebPage {
                                         {
                                             tag: "img",
                                             alt: "image game controller",
-                                            src: `${images_url}/game_controller.svg`,
+                                            src: `${images_url}game_controller.svg`,
                                         },
                                     ],
                                 },
@@ -529,7 +523,14 @@ const { images_url } = require("../../../constants");
 
 const NAV_MENU_ITEMS = [
     ["/games/", "Jeux"],
-    ["/software-development/", "Software"],
+    [
+        "/software-development/",
+        "Software",
+        [
+            ["/software-development/#projects", "Nos Projets"],
+            ["/software-development/#service", "Prestation de services"],
+        ],
+    ],
     [
         "/education/",
         "Pédagogie",
@@ -574,13 +575,13 @@ class NavBar {
                         {
                             tag: "img",
                             alt: "Logo Kuadrado",
-                            src: `${images_url}/logo_kuadrado.svg`,
+                            src: `${images_url}logo_kuadrado.svg`,
                         },
                         {
                             tag: "img",
                             alt: "Kuadrado Software",
                             class: "logo-text",
-                            src: `${images_url}/logo_kuadrado_txt.svg`,
+                            src: `${images_url}logo_kuadrado_txt.svg`,
                         },
                     ],
                 },
@@ -678,13 +679,13 @@ class Template {
                                 {
                                     tag: "img",
                                     alt: `logo Kuadrado`,
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "text-logo",
                                     alt: "Kuadrado Software",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
diff --git a/public/main.js b/public/main.js
index 19a12c0465b9f76a35c5e816fb5e616f01c62a5f..6131b2fd10e187e3782d17de134c38d514726e4e 100644
--- a/public/main.js
+++ b/public/main.js
@@ -14,7 +14,7 @@ module.exports = {
 const { getServerUrl } = require("./config");
 
 module.exports = {
-    images_url: `${getServerUrl()}assets/images`,
+    images_url: `${getServerUrl()}assets/images/`,
     articles_url: `${getServerUrl()}articles/`,
 };
 
@@ -251,7 +251,7 @@ class ThemeCard {
                 {
                     tag: "div",
                     class: "card-img",
-                    contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}/${this.props.img}` }],
+                    contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}${this.props.img}` }],
                 },
                 {
                     tag: "div",
@@ -298,13 +298,13 @@ class HomePage {
                                 {
                                     tag: "img",
                                     alt: "logo Kuadrado",
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "logo-text",
                                     alt: "Kuadrado",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
@@ -374,7 +374,7 @@ module.exports = HomePage;
 const { fetchjson, fetchtext } = require("./fetch");
 
 function getArticleBody(text) {
-    return text.replaceAll("\n", "<br/>").replaceAll("  ", "&nbsp;&nbsp;");
+    return text.replaceAll("\n", "<br/>");
 }
 
 function getArticleDate(date) {
@@ -570,7 +570,14 @@ const { images_url } = require("../../../constants");
 
 const NAV_MENU_ITEMS = [
     ["/games/", "Jeux"],
-    ["/software-development/", "Software"],
+    [
+        "/software-development/",
+        "Software",
+        [
+            ["/software-development/#projects", "Nos Projets"],
+            ["/software-development/#service", "Prestation de services"],
+        ],
+    ],
     [
         "/education/",
         "Pédagogie",
@@ -615,13 +622,13 @@ class NavBar {
                         {
                             tag: "img",
                             alt: "Logo Kuadrado",
-                            src: `${images_url}/logo_kuadrado.svg`,
+                            src: `${images_url}logo_kuadrado.svg`,
                         },
                         {
                             tag: "img",
                             alt: "Kuadrado Software",
                             class: "logo-text",
-                            src: `${images_url}/logo_kuadrado_txt.svg`,
+                            src: `${images_url}logo_kuadrado_txt.svg`,
                         },
                     ],
                 },
@@ -719,13 +726,13 @@ class Template {
                                 {
                                     tag: "img",
                                     alt: `logo Kuadrado`,
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "text-logo",
                                     alt: "Kuadrado Software",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
diff --git a/public/software-development/software-development.js b/public/software-development/software-development.js
index 68e82f3875ac32625a5c438a95d2bd16f65bdfc4..fc8525ee1c84e839102cc2a116bb9c146eaa5a05 100644
--- a/public/software-development/software-development.js
+++ b/public/software-development/software-development.js
@@ -14,7 +14,7 @@ module.exports = {
 const { getServerUrl } = require("./config");
 
 module.exports = {
-    images_url: `${getServerUrl()}assets/images`,
+    images_url: `${getServerUrl()}assets/images/`,
     articles_url: `${getServerUrl()}articles/`,
 };
 
@@ -93,7 +93,7 @@ module.exports = ImageCarousel;
 const { fetchjson, fetchtext } = require("./fetch");
 
 function getArticleBody(text) {
-    return text.replaceAll("\n", "<br/>").replaceAll("  ", "&nbsp;&nbsp;");
+    return text.replaceAll("\n", "<br/>");
 }
 
 function getArticleDate(date) {
@@ -269,25 +269,146 @@ class WebPage {
     constructor(args) {
         Object.assign(this, args);
     }
-
-    // setMeta() {
-    //     if (!this.meta) {
-    //         console.warn("Meta information missing")
-    //     }
-    // }
 }
 
 module.exports = WebPage;
 },{}],8:[function(require,module,exports){
 "use strict";
 
+const { images_url } = require("../../../../constants");
+
+const SKILL_THEMES = [
+    "Applications web",
+    "Service backend, serveur, API REST, bases de données",
+    "Sites web statiques, serveurs de fichiers",
+    "Développement frontend, interfaces",
+    "Conception et design UX / UI",
+    "Création graphique bitmap et vectoriel",
+    "Prototypes embarqués, IoT, Arduino",
+    "Développement logiciel desktop",
+    "Applications Android",
+];
+
+const SKILL_STACK = [
+    ["Javascript", "js.png"],
+    ["Node.js", "node.png"],
+    ["React.js", "react.png"],
+    ["Python", "python.png"],
+    ["C/C++", "c.png"],
+    ["Rust", "rust.png"],
+    ["MySQL", "mysql.png"],
+    ["PostgreSQL", "postgre.png"],
+    ["MongoDB", "mongodb.png"],
+    ["HTML", "html.png"],
+    ["CSS", "css.png"],
+    ["Sass", "sass.png"],
+    ["Docker", "docker.png"],
+    ["Linux", "linux.png"],
+    ["Nginx", "nginx.png"],
+    ["Apache", "apache.png"],
+];
+
+class ServiceSection {
+    render() {
+        return {
+            tag: "section",
+            class: "page-contents-center",
+            id: "service-section",
+            contents: [
+                {
+                    tag: "h3",
+                    contents:
+                        "<blue>Nos compétences</blue> pour votre besoin <blue>numérique</blue>",
+                },
+                {
+                    tag: "p",
+                    contents: `
+                    La demande numérique est omniprésente et de nombreuses entreprises ont besoin de bénéficier d'outils spécifiques réalisés sur mesure,
+                    applications web et mobiles, site statiques, logiciels, ERP, etc, mais n'ont pas forcément les compétences chez elles, 
+                    et n'ont pas non plus un besoin suffisamment grand pour embaucher une équipe de développement.
+                    <br /><br />
+                    <b><blue>Kuadrado</blue></b> propose de répondre à ce cas de figure pour les entreprises locales (Ardèche, Drôme, Rhône, Loire...) en étant leur <b>partenaire 
+                    en développement <blue>web et logiciel</blue></b>.
+                    `,
+                },
+                {
+                    tag: "p",
+                    class: "teaser",
+                    contents: [
+                        {
+                            tag: "strong",
+                            contents:
+                                "Des solutions <blue>sur mesure, légères, simples, maintenables, scalables et ecologiques</blue>",
+                        },
+                    ],
+                },
+                {
+                    tag: "div",
+                    class: "skills",
+                    contents: [
+                        {
+                            tag: "ul",
+                            class: "skill-themes",
+                            contents: SKILL_THEMES.map(item => {
+                                return { tag: "li", contents: item };
+                            }),
+                        },
+                        {
+                            tag: "ul",
+                            class: "skill-stack",
+                            contents: SKILL_STACK.map(item => {
+                                const [title, img] = item;
+                                return {
+                                    tag: "li",
+                                    contents: [
+                                        {
+                                            tag: "strong",
+                                            contents: title,
+                                        },
+                                        {
+                                            tag: "img",
+                                            src: `${images_url}tech_logos/${img}`,
+                                        },
+                                    ],
+                                };
+                            }),
+                        },
+                        {
+                            tag: "div",
+                            class: "call-us",
+                            contents: [
+                                {
+                                    tag: "h3",
+                                    contents: `Un <blue>projet à réaliser</blue> ?
+                                    <br/>Besoin d'informations, de conseils ou d'un <blue>devis</blue> ?`,
+                                },
+                                {
+                                    tag: "a",
+                                    href: "mailto:contact@kuadrado-software.fr",
+                                    contents: "contact@kuadrado-software.fr",
+                                },
+                                {
+                                    tag: "a",
+                                    href: "tel:+33475780872",
+                                    contents: "04 75 78 08 72",
+                                },
+                            ],
+                        },
+                    ],
+                },
+            ],
+        };
+    }
+}
+
+module.exports = ServiceSection;
+
+},{"../../../../constants":2}],9:[function(require,module,exports){
+"use strict";
+
 const { articles_url } = require("../../../../constants");
 const ImageCarousel = require("../../../generic-components/image-carousel");
-const {
-    loadArticles,
-    getArticleBody,
-    getArticleDate,
-} = require("../../../lib/article-utils");
+const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils");
 const objectHtmlRenderer = require("../../../lib/object-html-renderer");
 
 class SoftwareArticle {
@@ -381,6 +502,7 @@ class SoftwareArticle {
                                                 {
                                                     tag: "a",
                                                     href: technical.repository,
+                                                    target: "_blank",
                                                     contents: "Dépôt code source",
                                                 },
                                             ],
@@ -411,6 +533,7 @@ class SoftwareArticles {
             .then(articles => {
                 this.state.articles = articles;
                 this.refresh();
+                this.fixScroll();
             })
             .catch(e => console.log(e));
     }
@@ -419,7 +542,11 @@ class SoftwareArticles {
         return {
             tag: "article",
             class: "placeholder",
-            contents: [{ tag: "div" }, { tag: "div" }],
+            contents: [
+                { tag: "div", class: "title" },
+                { tag: "div", class: "body" },
+                { tag: "div", class: "details" },
+            ],
         };
     }
 
@@ -429,6 +556,16 @@ class SoftwareArticles {
         });
     }
 
+    fixScroll() {
+        if (window.location.href.includes("#")) {
+            window.scrollTo(
+                0,
+                document.getElementById(window.location.href.match(/#.+/)[0].replace("#", ""))
+                    .offsetTop
+            );
+        }
+    }
+
     render() {
         const { articles } = this.state;
         return {
@@ -445,11 +582,12 @@ class SoftwareArticles {
 
 module.exports = SoftwareArticles;
 
-},{"../../../../constants":2,"../../../generic-components/image-carousel":3,"../../../lib/article-utils":4,"../../../lib/object-html-renderer":6}],9:[function(require,module,exports){
+},{"../../../../constants":2,"../../../generic-components/image-carousel":3,"../../../lib/article-utils":4,"../../../lib/object-html-renderer":6}],10:[function(require,module,exports){
 "use strict";
 
 const { images_url } = require("../../../constants");
 const WebPage = require("../../lib/web-page");
+const ServiceSection = require("./components/service-section");
 const SoftwareArticles = require("./components/software-articles");
 
 class SoftwareDevelopment extends WebPage {
@@ -473,7 +611,7 @@ class SoftwareDevelopment extends WebPage {
                                         {
                                             tag: "img",
                                             alt: `image mechanic electronic`,
-                                            src: `${images_url}/meca_proc.svg`,
+                                            src: `${images_url}meca_proc.svg`,
                                         },
                                     ],
                                 },
@@ -486,7 +624,20 @@ class SoftwareDevelopment extends WebPage {
                         },
                     ],
                 },
+                {
+                    tag: "h2",
+                    id: "projects", //anchor
+                    contents: "Nos projets",
+                    class: "page-section-title",
+                },
                 new SoftwareArticles().render(),
+                {
+                    tag: "h2",
+                    id: "service", //anchor
+                    contents: "Prestation de services",
+                    class: "page-section-title",
+                },
+                new ServiceSection().render(),
             ],
         };
     }
@@ -494,7 +645,7 @@ class SoftwareDevelopment extends WebPage {
 
 module.exports = SoftwareDevelopment;
 
-},{"../../../constants":2,"../../lib/web-page":7,"./components/software-articles":8}],10:[function(require,module,exports){
+},{"../../../constants":2,"../../lib/web-page":7,"./components/service-section":8,"./components/software-articles":9}],11:[function(require,module,exports){
 "use strict";
 
 "use strict";
@@ -502,7 +653,7 @@ const runPage = require("../../run-page");
 const SoftwareDevelopment = require("./software-development");
 runPage(SoftwareDevelopment);
 
-},{"../../run-page":11,"./software-development":9}],11:[function(require,module,exports){
+},{"../../run-page":12,"./software-development":10}],12:[function(require,module,exports){
 "use strict";
 
 const objectHtmlRenderer = require("./lib/object-html-renderer");
@@ -514,14 +665,21 @@ module.exports = function runPage(PageComponent) {
     objectHtmlRenderer.renderCycle();
 };
 
-},{"./lib/object-html-renderer":6,"./template/template":13}],12:[function(require,module,exports){
+},{"./lib/object-html-renderer":6,"./template/template":14}],13:[function(require,module,exports){
 "use strict";
 
 const { images_url } = require("../../../constants");
 
 const NAV_MENU_ITEMS = [
     ["/games/", "Jeux"],
-    ["/software-development/", "Software"],
+    [
+        "/software-development/",
+        "Software",
+        [
+            ["/software-development/#projects", "Nos Projets"],
+            ["/software-development/#service", "Prestation de services"],
+        ],
+    ],
     [
         "/education/",
         "Pédagogie",
@@ -566,13 +724,13 @@ class NavBar {
                         {
                             tag: "img",
                             alt: "Logo Kuadrado",
-                            src: `${images_url}/logo_kuadrado.svg`,
+                            src: `${images_url}logo_kuadrado.svg`,
                         },
                         {
                             tag: "img",
                             alt: "Kuadrado Software",
                             class: "logo-text",
-                            src: `${images_url}/logo_kuadrado_txt.svg`,
+                            src: `${images_url}logo_kuadrado_txt.svg`,
                         },
                     ],
                 },
@@ -625,7 +783,7 @@ class NavBar {
 
 module.exports = NavBar;
 
-},{"../../../constants":2}],13:[function(require,module,exports){
+},{"../../../constants":2}],14:[function(require,module,exports){
 "use strict";
 
 const { in_construction } = require("../../config");
@@ -670,13 +828,13 @@ class Template {
                                 {
                                     tag: "img",
                                     alt: `logo Kuadrado`,
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "text-logo",
                                     alt: "Kuadrado Software",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
@@ -699,4 +857,4 @@ class Template {
 
 module.exports = Template;
 
-},{"../../config":1,"../../constants":2,"./components/navbar":12}]},{},[10]);
+},{"../../config":1,"../../constants":2,"./components/navbar":13}]},{},[11]);
diff --git a/public/style/pages/software-development/software-development.css b/public/style/pages/software-development/software-development.css
index ace551e1497a1403f43dfc91c0373ca409fe8416..7446ac3ca3680f9668eee838c85300195fcdfb25 100644
--- a/public/style/pages/software-development/software-development.css
+++ b/public/style/pages/software-development/software-development.css
@@ -1,9 +1,9 @@
 /* Error: Undefined variable.
  *   ,
- * 8 |             background-color: $dark_2;
+ * 9 |             background-color: $dark_2;
  *   |                               ^^^^^^^
  *   '
- *   src/pages/software-development/software-development.scss 8:31  root stylesheet */
+ *   src/pages/software-development/software-development.scss 9:31  root stylesheet */
 
 body::before {
   font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
@@ -13,5 +13,5 @@ body::before {
   padding: 1em;
   margin-bottom: 1em;
   border-bottom: 2px solid black;
-  content: "Error: Undefined variable.\a   \2577 \a 8 \2502              background-color: $dark_2;\a   \2502                                ^^^^^^^\a   \2575 \a   src/pages/software-development/software-development.scss 8:31  root stylesheet";
+  content: "Error: Undefined variable.\a   \2577 \a 9 \2502              background-color: $dark_2;\a   \2502                                ^^^^^^^\a   \2575 \a   src/pages/software-development/software-development.scss 9:31  root stylesheet";
 }
diff --git a/public/style/style.css b/public/style/style.css
index 86d8ebadc17bf3cc463660a87b2b2f3e3a7baa7c..4006985e3ad555c442d86e0aa6d6280d9618c5b2 100644
--- a/public/style/style.css
+++ b/public/style/style.css
@@ -336,6 +336,23 @@ main #page-container .page-contents-center {
   max-width: 100%;
   margin: 0 auto;
 }
+@media screen and (max-width: 1300px) {
+  main #page-container .page-contents-center {
+    padding: 20px 20px 0;
+  }
+}
+main #page-container h2.page-section-title {
+  color: #4baabb;
+  padding: 20px 0 10px;
+  width: 1300px;
+  max-width: 100%;
+  margin: 0 auto;
+}
+@media screen and (max-width: 1300px) {
+  main #page-container h2.page-section-title {
+    padding: 20px 20px 0;
+  }
+}
 main #page-container #home-page {
   display: flex;
   flex-direction: column;
@@ -842,7 +859,7 @@ main #page-container #games-page .game-articles article {
   display: grid;
   grid-template-columns: 0.7fr 1fr;
   gap: 0 20px;
-  margin: 20px;
+  margin: 20px 0;
 }
 main #page-container #games-page .game-articles article.game-article {
   grid-template-rows: repeat(6, auto);
@@ -966,10 +983,13 @@ main #page-container #games-page .game-articles article.placeholder * {
     grid-column: 1/span 2;
   }
 }
+main #page-container #software-page .software-articles {
+  margin: 0 auto 50px;
+}
 main #page-container #software-page .software-articles article.software-article {
   display: grid;
   grid-template-columns: 1fr 1fr;
-  margin: 30px 0;
+  margin: 0 0 30px;
   gap: 0 30px;
   background-color: #3c4144;
 }
@@ -1019,7 +1039,7 @@ main #page-container #software-page .software-articles article.software-article
 main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail {
   display: grid;
   grid-template-columns: 1fr auto;
-  padding: 10px 0;
+  padding: 5px 0;
 }
 main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail:not(:first-child) {
   border-top: 1px solid #6b7880;
@@ -1035,11 +1055,6 @@ main #page-container #software-page .software-articles article.software-article
 main #page-container #software-page .software-articles article.software-article .software-technical ul.technical-details .detail *:not(a) {
   color: #d4d9dd;
 }
-@media screen and (max-width: 1300px) {
-  main #page-container #software-page .software-articles article.software-article {
-    margin: 30px 20px;
-  }
-}
 @media screen and (max-width: 900px) {
   main #page-container #software-page .software-articles article.software-article {
     grid-template-columns: 1fr;
@@ -1056,9 +1071,165 @@ main #page-container #software-page .software-articles article.software-article
   }
 }
 main #page-container #software-page .software-articles article.placeholder {
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  margin: 30px;
+}
+main #page-container #software-page .software-articles article.placeholder * {
   background-color: #d4d9dd;
+}
+main #page-container #software-page .software-articles article.placeholder .title {
+  height: 60px;
+}
+main #page-container #software-page .software-articles article.placeholder .body {
   height: 400px;
-  margin: 30px;
+}
+main #page-container #software-page .software-articles article.placeholder .details {
+  height: 200px;
+}
+main #page-container #software-page #service-section h3 {
+  margin: 0 0 20px;
+}
+main #page-container #software-page #service-section .skills {
+  display: flex;
+  justify-content: space-between;
+  flex-wrap: wrap;
+  gap: 20px;
+  margin: 20px 0;
+}
+main #page-container #software-page #service-section .skills ul {
+  display: grid;
+  gap: 1px;
+  max-width: 100%;
+}
+main #page-container #software-page #service-section .skills ul li {
+  box-shadow: 0 0 2px #96a5ae;
+}
+main #page-container #software-page #service-section .skills ul.skill-themes {
+  width: 600px;
+  grid-template-columns: repeat(3, 1fr);
+  background-color: #3c4144;
+}
+@media screen and (max-width: 560px) {
+  main #page-container #software-page #service-section .skills ul.skill-themes {
+    grid-template-columns: 1fr 1fr;
+    width: 100%;
+  }
+}
+@media screen and (max-width: 480px) {
+  main #page-container #software-page #service-section .skills ul.skill-themes {
+    grid-template-columns: 1fr;
+  }
+}
+main #page-container #software-page #service-section .skills ul.skill-themes li {
+  font-weight: bold;
+  color: #d4d9dd;
+  font-size: 18px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: row;
+  padding: 10px;
+  text-align: center;
+}
+main #page-container #software-page #service-section .skills ul.skill-stack {
+  width: 400px;
+  grid-template-columns: repeat(4, 1fr);
+}
+main #page-container #software-page #service-section .skills ul.skill-stack li {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: row;
+  flex-direction: column;
+  position: relative;
+  padding: 10px;
+}
+main #page-container #software-page #service-section .skills ul.skill-stack li strong {
+  visibility: hidden;
+  max-height: 0;
+  height: 70px;
+  padding: 0 20px;
+  transition: max-height 0.3s;
+  position: absolute;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: row;
+}
+main #page-container #software-page #service-section .skills ul.skill-stack li img {
+  width: 100%;
+}
+@media screen and (min-width: 780px) {
+  main #page-container #software-page #service-section .skills ul.skill-stack li:hover strong {
+    visibility: visible;
+    max-height: 80px;
+    background-color: #fffc;
+    font-size: 18px;
+  }
+}
+@media screen and (max-width: 780px) {
+  main #page-container #software-page #service-section .skills ul.skill-stack li strong {
+    visibility: visible;
+    position: relative;
+    max-height: unset;
+    height: unset;
+    padding: 0;
+  }
+}
+@media screen and (max-width: 480px) {
+  main #page-container #software-page #service-section .skills ul.skill-stack {
+    grid-template-columns: repeat(3, 1fr);
+  }
+}
+main #page-container #software-page #service-section .teaser {
+  background-image: url("/assets/images/wallpaper_binary.png");
+  padding: 40px 30px;
+  text-align: center;
+  font-size: 18px;
+}
+main #page-container #software-page #service-section .teaser strong {
+  color: #d4d9dd;
+}
+main #page-container #software-page #service-section .teaser blue {
+  color: #72e3f0;
+}
+main #page-container #software-page #service-section .call-us {
+  display: grid;
+  grid-template-columns: 1fr 1fr;
+  width: 100%;
+  gap: 10px 0;
+  margin: 40px 0;
+}
+main #page-container #software-page #service-section .call-us * {
+  font-weight: bold;
+}
+main #page-container #software-page #service-section .call-us h3 {
+  grid-column: 1/span 2;
+  text-align: center;
+}
+main #page-container #software-page #service-section .call-us a {
+  background-color: #3c4144;
+  font-size: 20px;
+  text-align: center;
+  padding: 20px;
+}
+@media screen and (max-width: 780px) {
+  main #page-container #software-page #service-section .call-us {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    flex-direction: row;
+    flex-direction: column;
+    gap: 0;
+  }
+  main #page-container #software-page #service-section .call-us h3 {
+    margin: 0 0 10px;
+  }
+  main #page-container #software-page #service-section .call-us a {
+    width: 100%;
+  }
 }
 main footer {
   display: flex;
diff --git a/src/home-page-components/theme-card.js b/src/home-page-components/theme-card.js
index c9a03342928f24714577b7311d35d757408e1785..c71643b28d8b437524c30712fb5d3f90d9952002 100644
--- a/src/home-page-components/theme-card.js
+++ b/src/home-page-components/theme-card.js
@@ -16,7 +16,7 @@ class ThemeCard {
                 {
                     tag: "div",
                     class: "card-img",
-                    contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}/${this.props.img}` }],
+                    contents: [{ tag: "img", alt:`thematic image ${this.props.img.replace(/\.[A-Za-z]+/, "")}`,src: `${images_url}${this.props.img}` }],
                 },
                 {
                     tag: "div",
diff --git a/src/homepage.js b/src/homepage.js
index 377b60acc9d2d2032bcbefd41ab5695b8cb6ad1d..051edb022e8c6345a255fde063f1f77b32ff0509 100644
--- a/src/homepage.js
+++ b/src/homepage.js
@@ -25,13 +25,13 @@ class HomePage {
                                 {
                                     tag: "img",
                                     alt: "logo Kuadrado",
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "logo-text",
                                     alt: "Kuadrado",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
diff --git a/src/lib/article-utils.js b/src/lib/article-utils.js
index ed31a353eaceccfe19055be5f4d3d2d82c3f49f0..3a7d83f773806cc6779d6bfef87fd438972badf8 100644
--- a/src/lib/article-utils.js
+++ b/src/lib/article-utils.js
@@ -3,7 +3,7 @@
 const { fetchjson, fetchtext } = require("./fetch");
 
 function getArticleBody(text) {
-    return text.replaceAll("\n", "<br/>").replaceAll("  ", "&nbsp;&nbsp;");
+    return text.replaceAll("\n", "<br/>");
 }
 
 function getArticleDate(date) {
diff --git a/src/lib/web-page.js b/src/lib/web-page.js
index 022fd3bfdb091b5a072679f592b95e33e7632520..b58f4c0a88f85c2b45ca6220c6ed4651488dbfb1 100644
--- a/src/lib/web-page.js
+++ b/src/lib/web-page.js
@@ -4,12 +4,6 @@ class WebPage {
     constructor(args) {
         Object.assign(this, args);
     }
-
-    // setMeta() {
-    //     if (!this.meta) {
-    //         console.warn("Meta information missing")
-    //     }
-    // }
 }
 
 module.exports = WebPage;
\ No newline at end of file
diff --git a/src/pages/education/components/game-studio-club.js b/src/pages/education/components/game-studio-club.js
index 1b9849105d5ac4e15ae1bfa1c900c8b213d1dd18..3c3fffecc0a50a953c378664916727ad7af9b8fb 100644
--- a/src/pages/education/components/game-studio-club.js
+++ b/src/pages/education/components/game-studio-club.js
@@ -151,7 +151,8 @@ class GameStudioClub {
                                             contents: "Contact",
                                         },
                                         {
-                                            tag: "span",
+                                            tag: "a",
+                                            href: "tel:+33475780872",
                                             contents: "04 75 78 08 72",
                                         },
                                         {
@@ -183,7 +184,7 @@ class GameStudioClub {
                                                 {
                                                     tag: "img",
                                                     alt: `learning theme image ${li.title}`,
-                                                    src: `${images_url}/${li.image}`,
+                                                    src: `${images_url}${li.image}`,
                                                 },
                                                 {
                                                     tag: "div",
diff --git a/src/pages/education/components/popularization.js b/src/pages/education/components/popularization.js
index d09b59ba59a7ce8790ab1cd4d5463af610c96e08..e0420350a69d525b84cd38e32ca101237238b137 100644
--- a/src/pages/education/components/popularization.js
+++ b/src/pages/education/components/popularization.js
@@ -101,7 +101,8 @@ class Popularization {
                                             contents: "Contact",
                                         },
                                         {
-                                            tag: "span",
+                                            tag: "a",
+                                            href: "tel:+33475780872",
                                             contents: "04 75 78 08 72",
                                         },
                                         {
@@ -133,7 +134,7 @@ class Popularization {
                                                 {
                                                     tag: "img",
                                                     alt: `learning theme image ${li.title}`,
-                                                    src: `${images_url}/${li.image}`,
+                                                    src: `${images_url}${li.image}`,
                                                 },
                                                 {
                                                     tag: "div",
diff --git a/src/pages/education/education.js b/src/pages/education/education.js
index d088914c71d87b92cac70c6780170596a3429151..92af28cd10b49453d6634586d9f0475ee16fdc2e 100644
--- a/src/pages/education/education.js
+++ b/src/pages/education/education.js
@@ -27,7 +27,7 @@ class EducationPage extends WebPage {
                                         {
                                             tag: "img",
                                             alt: "image brain",
-                                            src: `${images_url}/brain.svg`,
+                                            src: `${images_url}brain.svg`,
                                         },
                                     ],
                                 },
diff --git a/src/pages/games/games.js b/src/pages/games/games.js
index 246ae03c5e8c9038758cea324cd11e1c5bc45436..a10e131198697240df4f9d18c93ee5227031fa21 100644
--- a/src/pages/games/games.js
+++ b/src/pages/games/games.js
@@ -25,7 +25,7 @@ class GamesPage extends WebPage {
                                         {
                                             tag: "img",
                                             alt: "image game controller",
-                                            src: `${images_url}/game_controller.svg`,
+                                            src: `${images_url}game_controller.svg`,
                                         },
                                     ],
                                 },
diff --git a/src/pages/games/games.scss b/src/pages/games/games.scss
index fc261174edf9c2677d3dbd08a04bfaadd6fec88e..df569d7f318b8b392511f5c7b53c9c923237295f 100644
--- a/src/pages/games/games.scss
+++ b/src/pages/games/games.scss
@@ -4,7 +4,7 @@
             display: grid;
             grid-template-columns: 0.7fr 1fr;
             gap: 0 20px;
-            margin: 20px;
+            margin: 20px 0;
             &.game-article {
                 grid-template-rows: repeat(6, auto);
                 background-color: $dark_2;
diff --git a/src/pages/software-development/components/service-section.js b/src/pages/software-development/components/service-section.js
new file mode 100644
index 0000000000000000000000000000000000000000..7500ac0a0e33b1f06286f548c8541cb164b82ae5
--- /dev/null
+++ b/src/pages/software-development/components/service-section.js
@@ -0,0 +1,129 @@
+"use strict";
+
+const { images_url } = require("../../../../constants");
+
+const SKILL_THEMES = [
+    "Applications web",
+    "Service backend, serveur, API REST, bases de données",
+    "Sites web statiques, serveurs de fichiers",
+    "Développement frontend, interfaces",
+    "Conception et design UX / UI",
+    "Création graphique bitmap et vectoriel",
+    "Prototypes embarqués, IoT, Arduino",
+    "Développement logiciel desktop",
+    "Applications Android",
+];
+
+const SKILL_STACK = [
+    ["Javascript", "js.png"],
+    ["Node.js", "node.png"],
+    ["React.js", "react.png"],
+    ["Python", "python.png"],
+    ["C/C++", "c.png"],
+    ["Rust", "rust.png"],
+    ["MySQL", "mysql.png"],
+    ["PostgreSQL", "postgre.png"],
+    ["MongoDB", "mongodb.png"],
+    ["HTML", "html.png"],
+    ["CSS", "css.png"],
+    ["Sass", "sass.png"],
+    ["Docker", "docker.png"],
+    ["Linux", "linux.png"],
+    ["Nginx", "nginx.png"],
+    ["Apache", "apache.png"],
+];
+
+class ServiceSection {
+    render() {
+        return {
+            tag: "section",
+            class: "page-contents-center",
+            id: "service-section",
+            contents: [
+                {
+                    tag: "h3",
+                    contents:
+                        "<blue>Nos compétences</blue> pour votre besoin <blue>numérique</blue>",
+                },
+                {
+                    tag: "p",
+                    contents: `
+                    La demande numérique est omniprésente et de nombreuses entreprises ont besoin de bénéficier d'outils spécifiques réalisés sur mesure,
+                    applications web et mobiles, site statiques, logiciels, ERP, etc, mais n'ont pas forcément les compétences chez elles, 
+                    et n'ont pas non plus un besoin suffisamment grand pour embaucher une équipe de développement.
+                    <br /><br />
+                    <b><blue>Kuadrado</blue></b> propose de répondre à ce cas de figure pour les entreprises locales (Ardèche, Drôme, Rhône, Loire...) en étant leur <b>partenaire 
+                    en développement <blue>web et logiciel</blue></b>.
+                    `,
+                },
+                {
+                    tag: "p",
+                    class: "teaser",
+                    contents: [
+                        {
+                            tag: "strong",
+                            contents:
+                                "Des solutions <blue>sur mesure, légères, simples, maintenables, scalables et ecologiques</blue>",
+                        },
+                    ],
+                },
+                {
+                    tag: "div",
+                    class: "skills",
+                    contents: [
+                        {
+                            tag: "ul",
+                            class: "skill-themes",
+                            contents: SKILL_THEMES.map(item => {
+                                return { tag: "li", contents: item };
+                            }),
+                        },
+                        {
+                            tag: "ul",
+                            class: "skill-stack",
+                            contents: SKILL_STACK.map(item => {
+                                const [title, img] = item;
+                                return {
+                                    tag: "li",
+                                    contents: [
+                                        {
+                                            tag: "strong",
+                                            contents: title,
+                                        },
+                                        {
+                                            tag: "img",
+                                            src: `${images_url}tech_logos/${img}`,
+                                        },
+                                    ],
+                                };
+                            }),
+                        },
+                        {
+                            tag: "div",
+                            class: "call-us",
+                            contents: [
+                                {
+                                    tag: "h3",
+                                    contents: `Un <blue>projet à réaliser</blue> ?
+                                    <br/>Besoin d'informations, de conseils ou d'un <blue>devis</blue> ?`,
+                                },
+                                {
+                                    tag: "a",
+                                    href: "mailto:contact@kuadrado-software.fr",
+                                    contents: "contact@kuadrado-software.fr",
+                                },
+                                {
+                                    tag: "a",
+                                    href: "tel:+33475780872",
+                                    contents: "04 75 78 08 72",
+                                },
+                            ],
+                        },
+                    ],
+                },
+            ],
+        };
+    }
+}
+
+module.exports = ServiceSection;
diff --git a/src/pages/software-development/components/software-articles.js b/src/pages/software-development/components/software-articles.js
index a90420c694279ad9b57d9a2fe5d7dd2287dc2cf3..41d27f643ecf00f431b160e861cd9316c2714bff 100644
--- a/src/pages/software-development/components/software-articles.js
+++ b/src/pages/software-development/components/software-articles.js
@@ -2,11 +2,7 @@
 
 const { articles_url } = require("../../../../constants");
 const ImageCarousel = require("../../../generic-components/image-carousel");
-const {
-    loadArticles,
-    getArticleBody,
-    getArticleDate,
-} = require("../../../lib/article-utils");
+const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils");
 const objectHtmlRenderer = require("../../../lib/object-html-renderer");
 
 class SoftwareArticle {
@@ -100,6 +96,7 @@ class SoftwareArticle {
                                                 {
                                                     tag: "a",
                                                     href: technical.repository,
+                                                    target: "_blank",
                                                     contents: "Dépôt code source",
                                                 },
                                             ],
@@ -130,6 +127,7 @@ class SoftwareArticles {
             .then(articles => {
                 this.state.articles = articles;
                 this.refresh();
+                this.fixScroll();
             })
             .catch(e => console.log(e));
     }
@@ -138,7 +136,11 @@ class SoftwareArticles {
         return {
             tag: "article",
             class: "placeholder",
-            contents: [{ tag: "div" }, { tag: "div" }],
+            contents: [
+                { tag: "div", class: "title" },
+                { tag: "div", class: "body" },
+                { tag: "div", class: "details" },
+            ],
         };
     }
 
@@ -148,6 +150,16 @@ class SoftwareArticles {
         });
     }
 
+    fixScroll() {
+        if (window.location.href.includes("#")) {
+            window.scrollTo(
+                0,
+                document.getElementById(window.location.href.match(/#.+/)[0].replace("#", ""))
+                    .offsetTop
+            );
+        }
+    }
+
     render() {
         const { articles } = this.state;
         return {
diff --git a/src/pages/software-development/software-development.js b/src/pages/software-development/software-development.js
index 3032680c7456988eee77aa644113f0d155ee5d2e..321a7cc1b4d26afb9ac6a430a28cb820cef1a5e9 100644
--- a/src/pages/software-development/software-development.js
+++ b/src/pages/software-development/software-development.js
@@ -2,6 +2,7 @@
 
 const { images_url } = require("../../../constants");
 const WebPage = require("../../lib/web-page");
+const ServiceSection = require("./components/service-section");
 const SoftwareArticles = require("./components/software-articles");
 
 class SoftwareDevelopment extends WebPage {
@@ -25,7 +26,7 @@ class SoftwareDevelopment extends WebPage {
                                         {
                                             tag: "img",
                                             alt: `image mechanic electronic`,
-                                            src: `${images_url}/meca_proc.svg`,
+                                            src: `${images_url}meca_proc.svg`,
                                         },
                                     ],
                                 },
@@ -38,7 +39,20 @@ class SoftwareDevelopment extends WebPage {
                         },
                     ],
                 },
+                {
+                    tag: "h2",
+                    id: "projects", //anchor
+                    contents: "Nos projets",
+                    class: "page-section-title",
+                },
                 new SoftwareArticles().render(),
+                {
+                    tag: "h2",
+                    id: "service", //anchor
+                    contents: "Prestation de services",
+                    class: "page-section-title",
+                },
+                new ServiceSection().render(),
             ],
         };
     }
diff --git a/src/pages/software-development/software-development.scss b/src/pages/software-development/software-development.scss
index 10f208409a3d448baef42eea29b163e3b1b635f2..64bdd26b0ffe88ae496c0cacad7cfbde3005252b 100644
--- a/src/pages/software-development/software-development.scss
+++ b/src/pages/software-development/software-development.scss
@@ -1,9 +1,10 @@
 #software-page {
     .software-articles {
+        margin: 0 auto 50px;
         article.software-article {
             display: grid;
             grid-template-columns: 1fr 1fr;
-            margin: 30px 0;
+            margin: 0 0 30px;
             gap: 0 30px;
             background-color: $dark_2;
             & > * {
@@ -55,7 +56,7 @@
                         &:not(:first-child) {
                             border-top: 1px solid $medium_grey;
                         }
-                        padding: 10px 0;
+                        padding: 5px 0;
                         label {
                             font-weight: bold;
                         }
@@ -70,10 +71,6 @@
                     }
                 }
             }
-
-            @media screen and (max-width: $page_contents_center_width) {
-                margin: 30px 20px;
-            }
             @media screen and (max-width: $screen_l) {
                 grid-template-columns: 1fr;
                 .software-title {
@@ -89,9 +86,148 @@
             }
         }
         article.placeholder {
-            background-color: $light_0;
-            height: 400px;
+            display: flex;
+            flex-direction: column;
+            gap: 10px;
             margin: 30px;
+            * {
+                background-color: $light_0;
+            }
+            .title {
+                height: 60px;
+            }
+            .body {
+                height: 400px;
+            }
+            .details {
+                height: 200px;
+            }
+        }
+    }
+    #service-section {
+        h3 {
+            margin: 0 0 20px;
+        }
+        .skills {
+            display: flex;
+            justify-content: space-between;
+            flex-wrap: wrap;
+            gap: 20px;
+            margin: 20px 0;
+            ul {
+                display: grid;
+                gap: 1px;
+                max-width: 100%;
+                li {
+                    box-shadow: 0 0 2px $light_1;
+                }
+                &.skill-themes {
+                    width: 600px;
+                    grid-template-columns: repeat(3, 1fr);
+                    @media screen and (max-width: $screen_s) {
+                        grid-template-columns: 1fr 1fr;
+                        width: 100%;
+                    }
+                    @media screen and (max-width: $screen_xs) {
+                        grid-template-columns: 1fr;
+                    }
+                    background-color: $dark_2;
+                    li {
+                        font-weight: bold;
+                        color: $light_0;
+                        font-size: 18px;
+                        @include flex-center;
+                        padding: 10px;
+                        text-align: center;
+                    }
+                }
+                &.skill-stack {
+                    width: 400px;
+                    grid-template-columns: repeat(4, 1fr);
+                    li {
+                        @include flex-center-col;
+                        position: relative;
+                        padding: 10px;
+                        strong {
+                            visibility: hidden;
+                            max-height: 0;
+                            height: 70px;
+                            padding: 0 20px;
+                            transition: max-height 0.3s;
+                            position: absolute;
+                            @include flex-center;
+                        }
+                        img {
+                            width: 100%;
+                        }
+                        @media screen and (min-width: $screen_m) {
+                            &:hover {
+                                strong {
+                                    visibility: visible;
+                                    max-height: 80px;
+                                    background-color: #fffc;
+                                    font-size: 18px;
+                                }
+                            }
+                        }
+
+                        @media screen and (max-width: $screen_m) {
+                            strong {
+                                visibility: visible;
+                                position: relative;
+                                max-height: unset;
+                                height: unset;
+                                padding: 0;
+                            }
+                        }
+                    }
+                    @media screen and (max-width: $screen_xs) {
+                        grid-template-columns: repeat(3, 1fr);
+                    }
+                }
+            }
+        }
+        .teaser {
+            background-image: url("/assets/images/wallpaper_binary.png");
+            padding: 40px 30px;
+            text-align: center;
+            font-size: 18px;
+            strong {
+                color: $light_0;
+            }
+            blue {
+                color: $blue_3;
+            }
+        }
+        .call-us {
+            * {
+                font-weight: bold;
+            }
+            display: grid;
+            grid-template-columns: 1fr 1fr;
+            width: 100%;
+            gap: 10px 0;
+            margin: 40px 0;
+            h3 {
+                grid-column: 1 / span 2;
+                text-align: center;
+            }
+            a {
+                background-color: $dark_2;
+                font-size: 20px;
+                text-align: center;
+                padding: 20px;
+            }
+            @media screen and (max-width: $screen_m) {
+                @include flex-center-col;
+                gap: 0;
+                h3 {
+                    margin: 0 0 10px;
+                }
+                a {
+                    width: 100%;
+                }
+            }
         }
     }
 }
diff --git a/src/style.scss b/src/style.scss
index d7681c7cad656c5fb1b29aada664364695c354c2..621f723d103048d7d8ab602559b0ace6ca175032 100644
--- a/src/style.scss
+++ b/src/style.scss
@@ -340,9 +340,12 @@ main {
             }
         }
         .page-contents-center {
-            width: $page_contents_center_width;
-            max-width: 100%;
-            margin: 0 auto;
+            @include page-contents-center;
+        }
+        h2.page-section-title {
+            color: $blue_2;
+            padding: 20px 0 10px;
+            @include page-contents-center;
         }
         @import "./homepage.scss";
         @import "./pages/education/education.scss";
diff --git a/src/template/components/navbar.js b/src/template/components/navbar.js
index 06ebafd0411dfb2341ef0a459a2b1f01993a86cf..d13bde2aeb505cdafa806ef16e61d48fc04c1c5a 100644
--- a/src/template/components/navbar.js
+++ b/src/template/components/navbar.js
@@ -4,7 +4,14 @@ const { images_url } = require("../../../constants");
 
 const NAV_MENU_ITEMS = [
     ["/games/", "Jeux"],
-    ["/software-development/", "Software"],
+    [
+        "/software-development/",
+        "Software",
+        [
+            ["/software-development/#projects", "Nos Projets"],
+            ["/software-development/#service", "Prestation de services"],
+        ],
+    ],
     [
         "/education/",
         "Pédagogie",
@@ -49,13 +56,13 @@ class NavBar {
                         {
                             tag: "img",
                             alt: "Logo Kuadrado",
-                            src: `${images_url}/logo_kuadrado.svg`,
+                            src: `${images_url}logo_kuadrado.svg`,
                         },
                         {
                             tag: "img",
                             alt: "Kuadrado Software",
                             class: "logo-text",
-                            src: `${images_url}/logo_kuadrado_txt.svg`,
+                            src: `${images_url}logo_kuadrado_txt.svg`,
                         },
                     ],
                 },
diff --git a/src/template/template.js b/src/template/template.js
index 3b009c0e188e40025187583ea8ccdb579d909f3b..fc416522c808c2d2aa42ad05bd34466a4384620c 100644
--- a/src/template/template.js
+++ b/src/template/template.js
@@ -42,13 +42,13 @@ class Template {
                                 {
                                     tag: "img",
                                     alt: `logo Kuadrado`,
-                                    src: `${images_url}/logo_kuadrado.svg`,
+                                    src: `${images_url}logo_kuadrado.svg`,
                                 },
                                 {
                                     tag: "img",
                                     class: "text-logo",
                                     alt: "Kuadrado Software",
-                                    src: `${images_url}/logo_kuadrado_txt.svg`,
+                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                 },
                             ],
                         },
diff --git a/src/theme.scss b/src/theme.scss
index 359933a56abfd6926f87f64b66a3d6e4122ccadf..8c3add6763df3b5e1488dccd1fa8c260f6502a90 100644
--- a/src/theme.scss
+++ b/src/theme.scss
@@ -40,3 +40,12 @@ $page_contents_center_width: 1300px;
     @include flex-center;
     flex-direction: column;
 }
+
+@mixin page-contents-center {
+    width: $page_contents_center_width;
+    max-width: 100%;
+    margin: 0 auto;
+    @media screen and (max-width: $page_contents_center_width) {
+        padding: 20px 20px 0;
+    }
+}