diff --git a/frontend/package.json b/frontend/package.json
index 16c0f81..cafaa68 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -64,6 +64,7 @@
"js-cookie": "^3.0.1",
"luxon": "^3.1.1",
"mapbox-gl": "^2.11.0",
+ "mdsvex": "^0.10.6",
"minisearch": "^5.1.0",
"pikaso": "^2.7.4",
"plausible-tracker": "^0.3.8",
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index ca64bb9..8e83073 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -52,6 +52,7 @@ specifiers:
js-cookie: ^3.0.1
luxon: ^3.1.1
mapbox-gl: ^2.11.0
+ mdsvex: ^0.10.6
minisearch: ^5.1.0
pikaso: ^2.7.4
plausible-tracker: ^0.3.8
@@ -132,6 +133,7 @@ devDependencies:
js-cookie: 3.0.1
luxon: 3.1.1
mapbox-gl: 2.11.1
+ mdsvex: 0.10.6_svelte@3.55.0
minisearch: 5.1.0
pikaso: 2.7.4
plausible-tracker: 0.3.8
@@ -1429,6 +1431,13 @@ packages:
}
dev: true
+ /@types/unist/2.0.6:
+ resolution:
+ {
+ integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+ }
+ dev: true
+
/@typescript-eslint/eslint-plugin/5.46.1_qtjn2brzzhu6l3ntqnv7ocqkwu:
resolution:
{
@@ -3617,6 +3626,21 @@ packages:
}
dev: true
+ /mdsvex/0.10.6_svelte@3.55.0:
+ resolution:
+ {
+ integrity: sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA==
+ }
+ peerDependencies:
+ svelte: 3.x
+ dependencies:
+ '@types/unist': 2.0.6
+ prism-svelte: 0.4.7
+ prismjs: 1.29.0
+ svelte: 3.55.0
+ vfile-message: 2.0.4
+ dev: true
+
/memoize-one/6.0.0:
resolution:
{
@@ -4547,6 +4571,21 @@ packages:
hasBin: true
dev: true
+ /prism-svelte/0.4.7:
+ resolution:
+ {
+ integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==
+ }
+ dev: true
+
+ /prismjs/1.29.0:
+ resolution:
+ {
+ integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
+ }
+ engines: { node: '>=6' }
+ dev: true
+
/promise-queue/2.2.5:
resolution:
{
@@ -5387,6 +5426,15 @@ packages:
busboy: 1.6.0
dev: true
+ /unist-util-stringify-position/2.0.3:
+ resolution:
+ {
+ integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
+ }
+ dependencies:
+ '@types/unist': 2.0.6
+ dev: true
+
/update-browserslist-db/1.0.10_browserslist@4.21.4:
resolution:
{
@@ -5417,6 +5465,16 @@ packages:
}
dev: true
+ /vfile-message/2.0.4:
+ resolution:
+ {
+ integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
+ }
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-stringify-position: 2.0.3
+ dev: true
+
/vite-plugin-iso-import/1.0.0_vite@4.0.1:
resolution:
{
diff --git a/frontend/src/routes/docs/(markdown)/+layout.svelte b/frontend/src/routes/docs/(markdown)/+layout.svelte
new file mode 100644
index 0000000..5170ab5
--- /dev/null
+++ b/frontend/src/routes/docs/(markdown)/+layout.svelte
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/frontend/src/routes/docs/(markdown)/features/+page.svx b/frontend/src/routes/docs/(markdown)/features/+page.svx
new file mode 100644
index 0000000..6237b09
--- /dev/null
+++ b/frontend/src/routes/docs/(markdown)/features/+page.svx
@@ -0,0 +1,5 @@
+# Features
+
+
+- [Custom-Field](/docs/features/custom-field)
+- [Remote-Control](/docs/features/remote-control)
diff --git a/frontend/src/routes/docs/(markdown)/features/custom-field/+page.svx b/frontend/src/routes/docs/(markdown)/features/custom-field/+page.svx
new file mode 100644
index 0000000..6a33224
--- /dev/null
+++ b/frontend/src/routes/docs/(markdown)/features/custom-field/+page.svx
@@ -0,0 +1,24 @@
+
+
+# Custom Field
+
+## What is the Custom-Field?
+
+The Custom-Field is an input-field which can be enabled in the start-quiz modal. The custom-field has to be named, and
+then it will be displayed if a player wants to join.
+
+## Use Case
+
+Imagine you're a teacher, and you want to know the real names of your students, but you don't want everyone to see
+who is behind which username. That's where the custom-field comes into play. Players can enter their username and their
+real name and only the admin (you) can see which username belongs to which real name and which real names exist. The
+data can be obtained by downloading the quiz-results at the end. In the spreadsheet, you can then see all the data.
+
+## Notes
+
+- There is no validation at all. Users can also leave it empty, enter numbers and more.
+- The value gets saved for future use, so make sure to clear it before starting a new quiz.
diff --git a/frontend/src/routes/docs/(markdown)/features/remote-control/+page.svx b/frontend/src/routes/docs/(markdown)/features/remote-control/+page.svx
new file mode 100644
index 0000000..d913cc2
--- /dev/null
+++ b/frontend/src/routes/docs/(markdown)/features/remote-control/+page.svx
@@ -0,0 +1,15 @@
+
+
+# Remote Control
+
+Control the admin-screen from a different device!
+
+## Use Case
+
+Imagine mirroring the admin-screen to a projector and you want to show the quiz full-screen without the disruption of
+buttons, etc. That's where this feature comes in handy, since you can control the quiz from another device, e.g. your
+phone.
diff --git a/frontend/src/routes/docs/+page.svelte b/frontend/src/routes/docs/+page.svelte
index 7b52de0..b80a861 100644
--- a/frontend/src/routes/docs/+page.svelte
+++ b/frontend/src/routes/docs/+page.svelte
@@ -1,3 +1,9 @@
+
+