diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a39c26046fb41d8bbbdfb51b589852422a02be34..cf2d70f2bf056c040b0cde4d897682893aa703d9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -109,7 +109,7 @@ upload:spec:
 #  script:
 #    - release-cli -v
 #    - echo "Releasing new API version"
-#    - release-cli create --name "$CI_COMMIT_TAG" --description './CHANGELOG.md'
+#    - release-cli create --name "$CI_COMMIT_TAG" --description './docs/changelog.md'
 #      --tag-name $CI_COMMIT_TAG
 #      --assets-link '{"name":"combined-$CI_COMMIT_TAG","url":"https://fitko.uber.space/$CI_COMMIT_TAG/zustelldienst.yml"}'
 
diff --git a/README.md b/README.md
index 551487805a98151428e29dea2469cf460d2cbc2c..fcb767a115254002fc7b05c7b4781f2504a94bcc 100644
--- a/README.md
+++ b/README.md
@@ -2,32 +2,56 @@
 
 Für die Spezifikation der FIT-Connect-Schnittstellen gelten die folgenden Architekturregeln.
 
+
+## Versionierung
+
+TBD
+
 ## OpenAPI
 
 - Wir verwenden OpenAPI 3.0
-- Die Spezifikation wird bis zur `beta7` als JSON und ab `beta8` als YAML geschreiben
+- Die Spezifikation ist als YAML geschrieben
 - Wir verwenden keine Versionsnummern in Dateinamen, da das Repo als Ganzes versioniert wird
+- Die Spezifikation wird mit Semantic-Versioning versioniert
+
+## Projektstruktur
+
+### Dokumentation
+
+- 📁`static`
+- 📁`docs`
+- 📁`src`
+- 📁`versioned_sidebars`
+- 📁`versioned_docs`
+- 📄`versions.json`
+- 📄`package.json`
+- 📄`yarn.lock`
+- 📄`prettier.config.js`
+- 📄`docusaurus.config.js`
+- 📄`babel.config.js`
+- 📄`sidebars.js`
+
+### Metadatenschema
+
+- 📁`static`
+
+
+### FIT-Connect OpenAPI Spezifikation
 
-## Verzeichnisse
+- 📁`spec`
+- 📄`validate.sh`
+- 📄`bundle.sh`
 
-Das Projektverzeichnis ist wie folgt aufgebaut:
 
-- 📁`assets`
-  - 📁`images` - Bilder
-  - 📁`postman` - Postman-Collection und -Enviroment dazu
-- 📁`docs` - Öffentliche Dokumentation zu den APIs
-- 📁`models` - Modelle, die von mehreren (beiden) APIs verwendet werden
-- 📁`reference` - Die APIs
-- 📄`LICENSE`
 
 ## Bezeichner
 
-- Die Bezeichner werden camelCase geschreiben und beginnen mit einem Kleinbuchstaben
+- Die Bezeichner werden camelCase geschrieben und beginnen mit einem Kleinbuchstaben
 - Eine ID (Identifikator) wird als `Id` nicht `ID` geschrieben
 
 ## Pfade
 
-Multiple Resoucen werden im Pfad durch eine Collection-Resource und einer nachfolgenden ID aufgenommen
+Multiple Ressourcen werden im Pfad durch eine Collection-Resource und einer nachfolgenden ID aufgenommen
 
 Beispiel: `/applications/{applicationId}`
 
diff --git a/bundle-docs.sh b/bundle-docs.sh
deleted file mode 100755
index 61c8d1f0558ecca4807ff5faa74a53ce5ba555f6..0000000000000000000000000000000000000000
--- a/bundle-docs.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-mkdir -p dist
-
-# Concatenate all files (enforce newline between files)
-cut -b 1- docs/_* docs/{1..5}_* docs/Detailinformationen/*.md > dist/docs.bundled.md
-# Add additional newlines before each heading (to avoid issues when, e.g., a table is followed by a heading)
-sed -i 's/^#/\n\n#/g' dist/docs.bundled.md
diff --git a/CHANGELOG.md b/docs/changelog.md
similarity index 92%
rename from CHANGELOG.md
rename to docs/changelog.md
index 66e128d42db867c1d03393c243c5cfdaa401ffc0..884f2c1ba9e06a327bbb5ddf21a9b75e377ea548 100644
--- a/CHANGELOG.md
+++ b/docs/changelog.md
@@ -4,7 +4,9 @@ Das Format dieser Datei basiert auf [Keep a Changelog](https://keepachangelog.co
 
 ## [Unveröffentlicht] - ????-??-??
 
-> Diese Version beinhaltet **breaking changes**
+:::caution
+Diese Version beinhaltet **breaking changes**
+:::
 
 ### Allgemein
 
@@ -20,8 +22,9 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert:
 
 - Das Attribut `publicOrganization` entfällt, weil
   - nur Kontaktinformationen für den Fall von technischen Problemen erfasst und hierbei so wenig Informationen wie
-      möglich gespeichert werden sollen.
-  - Der Name der Organisation ist als Attribut für eine bessere Zuordnung zu `contactInformation` unter `legalName` gewandert.
+    möglich gespeichert werden sollen.
+  - Der Name der Organisation ist als Attribut für eine bessere Zuordnung zu `contactInformation` unter `legalName`
+    gewandert.
 - Das Attribut `technicalContact` wird umbenannt zu `contactInformation` und inhaltlich wie im Beispiel unten geändert
 - Die Attribute `callback` und `callbackURI` wurden zusammengeführt,
   - um die Struktur flacher zu gestalten,
@@ -30,10 +33,10 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert:
   - da ab Version 1 jede Kommunikation Ende-zu-Ende verschlüsselt sein muss.
 - Das Attribut `publicKey` wurde umbenannt zu `encryptionKid`. Weiterhin wurde ein Feld `keys` eingefügt.
   - `encryptionKid`: Die KeyId des Schlüssels der zur Verschlüsselung der an einen Zustellpunkt gesendeten Daten
-      verwendet wird. Der Schlüssel ist abrufbar im Attribut `keys`.
+    verwendet wird. Der Schlüssel ist abrufbar im Attribut `keys`.
   - `keys`: Hier befinden sich die öffentlichen Schlüssel des Zustellpunktes.
   - Der `signingKid` fehlt, da dieser an signierten Nachrichten mit angehängt wird und ebenso im Attribut `keys`
-      auffindbar ist.
+    auffindbar ist.
 - Ein Schema besteht nun aus einer `schemaURI` und optional einem Feld `mimeType`.
   - Wurde im Zuge der Vereinfachung so umgesetzt. URLs und URNs können in das Feld `schemaURI` eingetragen werden.
 
@@ -54,7 +57,6 @@ Der Aufbau & Umfang von Destination-Objekten hat sich geändert:
   "callback": "http://127.0.0.1:4010/voluptas",
   "keys": {
     "my-key-id": {
-      
     }
   },
   "encryptionKid": "my-key-id"
@@ -90,19 +92,21 @@ sauber routen kann, liefert er jetzt `{}` anstatt `{ "result": "success" }` zur
 
 ### Application Transfer
 
-- Die Grundstruktur einer Einreichung wurde angepasst, da der Großteil der Informationen nun verschlüsselt übertragen wird.
+- Die Grundstruktur einer Einreichung wurde angepasst, da der Großteil der Informationen nun verschlüsselt übertragen
+  wird.
 - Einige Endpunkte und HTTP-Methoden wurden angepasst, um den Ablauf kürzer, einfacher, stabiler und sicherer zu
   gestalten.
-- Metadaten einer Einreichung: Alle Metadaten einer Einreichung werden nun verschlüsselt im Attribut `encryptedMetadata` übertragen.
+- Metadaten einer Einreichung: Alle Metadaten einer Einreichung werden nun verschlüsselt im Attribut `encryptedMetadata`
+  übertragen.
 
 #### Create Application
 
-- Beim Anlegen einer Einreichung muss nun die Id der Destination (Zustellpunktes) mit angegeben werden, da sie nur bei der
-  Anlage der Einreichung notwendig ist und nicht bei den weiteren Aufrufen.
-- Struktur um eine Application anzulegen ist nun nur noch `{ destinationId: …, announcedContentStructure: … }`, da sich die
-  Gesamtstruktur geändert hat. In `announcedContentStructure` wird angegeben ob Fachdaten für diesen Einreichung hochgeladen
-  werden als auch eine Liste an UUIDs die für diesen Einreichung hochgeladen werden. Die Erstellung der UUIDs ist dem Client
-  überlassen.
+- Beim Anlegen einer Einreichung muss nun die Id der Destination (Zustellpunktes) mit angegeben werden, da sie nur bei
+  der Anlage der Einreichung notwendig ist und nicht bei den weiteren Aufrufen.
+- Struktur um eine Application anzulegen ist nun nur noch `{ destinationId: …, announcedContentStructure: … }`, da sich
+  die Gesamtstruktur geändert hat. In `announcedContentStructure` wird angegeben ob Fachdaten für diesen Einreichung
+  hochgeladen werden als auch eine Liste an UUIDs die für diesen Einreichung hochgeladen werden. Die Erstellung der
+  UUIDs ist dem Client überlassen.
 
 #### Add Document to Application
 
@@ -113,25 +117,26 @@ sauber routen kann, liefert er jetzt `{}` anstatt `{ "result": "success" }` zur
 
 #### Send Application
 
-- Send Application und Application Data hinzuzufügen ist nun in einem Endpunkt kombiniert, da kein Einreichung ohne Fachdaten
-  übertragen werden können soll.
-- Der Aufruf des Endpunktes und die Übertragung der verschlüsselten Fachdaten markiert den Einreichung dann auch als "final"
+- Send Application und Application Data hinzuzufügen ist nun in einem Endpunkt kombiniert, da kein Einreichung ohne
+  Fachdaten übertragen werden können soll.
+- Der Aufruf des Endpunktes und die Übertragung der verschlüsselten Fachdaten markiert den Einreichung dann auch als
+  "final"
   und löst die Übertragung an den Zustellpunkt aus.
 - Die Fachdaten sind nun verschlüsselt, wodurch der Content-Type nicht mehr application/json sonder application/jose ist
-- Der Response Status ist nicht mehr 200, sondern 202, da die Fachdaten akzeptiert wurden und der Einreichung abgeschickt
-  wird.
+- Der Response Status ist nicht mehr 200, sondern 202, da die Fachdaten akzeptiert wurden und der Einreichung
+  abgeschickt wird.
 
 #### Status Endpunkte
 
-- Der `upload-status` entfällt, da alle Informationen verschlüssselt sind und nun nicht bekannt ist, wie viele Dokumente
+- Der `upload-status` entfällt, da alle Informationen verschlüsselt sind und nun nicht bekannt ist, wie viele Dokumente
   einer Einreichung bereits hochgeladen wurden.
-- Die Informationen zum Status einer Einreichung und dessen Historie sind nun direkt im Einreichung hinterlegt und werden mit zur
-  Verfügung gestellt, wodurch keine separaten Endpunkte mehr notwendig sind.
+- Die Informationen zum Status einer Einreichung und dessen Historie sind nun direkt im Einreichung hinterlegt und
+  werden mit zur Verfügung gestellt, wodurch keine separaten Endpunkte mehr notwendig sind.
 
 ### Application Retrieval
 
-Wie oben schon angesprochen hat sich die Struktur einer Einreichung verändert, sodass ein Einreichung bei der Abholung wie folgt
-beispielhaft aufgebaut ist:
+Wie oben schon angesprochen hat sich die Struktur einer Einreichung verändert, sodass ein Einreichung bei der Abholung
+wie folgt beispielhaft aufgebaut ist:
 
 ```json
 {
@@ -282,8 +287,8 @@ Die Destination enthält nun einen JWK statt einem JWK Set.
 
 ### Dokumentation
 
-- [Fehlercodes](../5_Status-_und_Fehlercodes.md) dokumentiert
-- [Erste Schritte](../1_Getting_Started.md) überarbeitet
+- [Fehlercodes](status-and-error-codes.md) dokumentiert
+- [Erste Schritte](getting-started/overview.md) überarbeitet
 
 ### Umgesetzte Change Requests
 
diff --git a/sidebars.js b/sidebars.js
index 402eda615ed9056351cf7a1545da53f29f6bda57..802370d84c2dc6c56229b6645d8bc7e8f83d9279 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -13,6 +13,7 @@ module.exports = {
   defaultSidebar: [
     'overview',
     'roadmap',
+    'changelog',
     'account',
     'status-and-error-codes',
     {