diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..13566b81
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..03d9549e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml
new file mode 100644
index 00000000..541945bb
--- /dev/null
+++ b/.idea/jsLinters/eslint.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..f2453adf
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 00000000..9ef07ebe
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/symfony-boilerplate.iml b/.idea/symfony-boilerplate.iml
new file mode 100644
index 00000000..2841119c
--- /dev/null
+++ b/.idea/symfony-boilerplate.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 00000000..b2d6de30
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,20 @@
+# Dependencies
+/node_modules
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
+
+# Misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/docs/01_getting_started.md b/docs/01_getting_started.md
deleted file mode 100644
index 14a3ddb8..00000000
--- a/docs/01_getting_started.md
+++ /dev/null
@@ -1,17 +0,0 @@
-// prepare dev env
-```
-cp docker-compose.override.yml.template docker-compose.override.yml
-cp .env.dist .env
-```
-
-// start project
-```
-DOCKER_BUILDKIT=1 docker-compose up -d --build\n
-```
-
-// update /etc/hosts
-```
-127.0.0.1 boilerplatev2.localhost
-```
-
-
diff --git a/docs/CICD.md b/docs/CICD.md
deleted file mode 100644
index 358f48fb..00000000
--- a/docs/CICD.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Prod Deployment
-@see [here](../gitlab-ci/gitlab-ci-tags-prod.yml)
-
-This happen only when tag are pushed with format x.x.x
-
-A production image is pushed to the tag then the gitlabci deploy it on the server
-
-In gitlab, a variable named PROD_SSH_PRIVATE_KEY shall be added. It shall be encoded as base64
-The public key shall be added into the server
-
-```
-TMPDIR="$(mktemp -d)" && ssh-keygen -t ed25519 -q -N "" -C "gitlab@git.thecodingmachine.com" -f "${TMPDIR}/id_ed25519" && echo -e "Private as base64 :\n$(cat "${TMPDIR}/id_ed25519" | base64)\nPublic :\n$(cat "${TMPDIR}/id_ed25519.pub")" && rm -f "${TMPDIR}/id_ed25519"* && rmdir "${TMPDIR}"
-```
-
-As best practice, add the public key into gitlab variable so it is not lost
-
-## Prepare a demo server
-
-Theses steps are basis steps, it should be good enough for a demonstration environnement
-
-```
-cd /
-sudo mkdir tcm_deployment
-sudo chown ubuntu:ubuntu tcm_deployment
-cd tcm_deployment/
-ssh-keygen -t ed25519
-cat ~/.ssh/id_ed25519.pub
-```
-
-Ajouter la clé dans Settings > repository > deploy key
-
-Install docker dependencies
-```
-cd /tcm_deployment
-git clone git@git.thecodingmachine.com:tcm-projects/analysec-app.git
-sudo apt-get update
-sudo apt-get install ca-certificates curl gnupg lsb-release
-sudo mkdir -p /etc/apt/keyrings
-curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
- $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-sudo apt-get update
-sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
-sudo docker run hello-world
-sudo apt install docker-compose
-sudo apt install make
-cp .env.dist .env
-cp docker-compose.override.yml.template docker-compose.override.yml
-
-sudo groupadd docker
-sudo usermod -aG docker $USER
-```
-
-To finish, Create a deploy token (NOT a key) named gitlab-deploy-token
-
-After that, add the server IP into the gitlab-ci.yml
-
-Then, on GIT tag, it should deploy
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..aaba2fa1
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,41 @@
+# Website
+
+This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
+
+### Installation
+
+```
+$ yarn
+```
+
+### Local Development
+
+```
+$ yarn start
+```
+
+This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
+
+### Build
+
+```
+$ yarn build
+```
+
+This command generates static content into the `build` directory and can be served using any static contents hosting service.
+
+### Deployment
+
+Using SSH:
+
+```
+$ USE_SSH=true yarn deploy
+```
+
+Not using SSH:
+
+```
+$ GIT_USER= yarn deploy
+```
+
+If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
diff --git a/docs/babel.config.js b/docs/babel.config.js
new file mode 100644
index 00000000..e00595da
--- /dev/null
+++ b/docs/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+};
diff --git a/docs/docs/01_getting-started/_category_.json b/docs/docs/01_getting-started/_category_.json
new file mode 100644
index 00000000..3562d433
--- /dev/null
+++ b/docs/docs/01_getting-started/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Getting Started",
+ "position": 1
+}
diff --git a/docs/docs/01_getting-started/install.md b/docs/docs/01_getting-started/install.md
new file mode 100644
index 00000000..a850b1f2
--- /dev/null
+++ b/docs/docs/01_getting-started/install.md
@@ -0,0 +1,39 @@
+---
+sidebar_position: 1
+---
+# Create your project
+
+## Initialize your project with the boilerplate's code base
+
+1. From and existing git repo (should be empty at that time), register boilerplate's remote
+```bash title="terminal"
+git remote add boilerplate https://github.com/thecodingmachine/symfony-boilerplate.git
+```
+
+2. Pull the source code from a release to your current branch
+```bash title="terminal"
+git pull boilerplate v2
+```
+:::tip
+Keep this remote if you want to stay up to date with new versions !
+:::
+
+## Customize with your project's specifics
+Now it's time to adapt the boilerplate to your project...
+
+**1. Set your app's name**
+
+At least you'll want to update the `APP_NAME` variable in the `.env.dist` file to match your project's name (EG. my-awsome-app).
+
+**2. Update README.md**
+
+You might want to update the README file, to describe your app's purpose, and define the coding standards you want to define.
+
+## Push the initial codebase
+
+Now you can push the boilerplate's code and start implementing !
+
+```bash title="terminal"
+git commit -am "Initial commit of the boilerplate's code base"
+git push origin main
+```
diff --git a/docs/docs/01_getting-started/overview.md b/docs/docs/01_getting-started/overview.md
new file mode 100644
index 00000000..4bba659e
--- /dev/null
+++ b/docs/docs/01_getting-started/overview.md
@@ -0,0 +1 @@
+# Overview
\ No newline at end of file
diff --git a/docs/docs/02_docker-compose.md b/docs/docs/02_docker-compose.md
new file mode 100644
index 00000000..04835bb6
--- /dev/null
+++ b/docs/docs/02_docker-compose.md
@@ -0,0 +1,4 @@
+---
+sidebar_position: 2
+---
+# Development environment
\ No newline at end of file
diff --git a/docs/docs/markdown-features.mdx b/docs/docs/markdown-features.mdx
new file mode 100644
index 00000000..0337f34d
--- /dev/null
+++ b/docs/docs/markdown-features.mdx
@@ -0,0 +1,150 @@
+---
+sidebar_position: 4
+---
+
+# Markdown Features
+
+Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
+
+## Front Matter
+
+Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
+
+```text title="my-doc.md"
+// highlight-start
+---
+id: my-doc-id
+title: My document title
+description: My document description
+slug: /my-custom-url
+---
+// highlight-end
+
+## Markdown heading
+
+Markdown text with [links](./hello.md)
+```
+
+## Links
+
+Regular Markdown links are supported, using url paths or relative file paths.
+
+```md
+Let's see how to [Create a page](/create-a-page).
+```
+
+```md
+Let's see how to [Create a page](./create-a-page.md).
+```
+
+**Result:** Let's see how to [Create a page](./create-a-page.md).
+
+## Images
+
+Regular Markdown images are supported.
+
+You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
+
+```md
+
+```
+
+
+
+You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
+
+```md
+
+```
+
+## Code Blocks
+
+Markdown code blocks are supported with Syntax highlighting.
+
+ ```jsx title="src/components/HelloDocusaurus.js"
+ function HelloDocusaurus() {
+ return (
+