Compare commits

52 Commits

Author SHA1 Message Date
029ff239cc feat(blog): add new features and improvements for LfK! 2025
All checks were successful
Build latest image / build-container (push) Successful in 1m29s
2025-05-17 17:07:03 +02:00
42323d94d8 fix: Added missing language tag
All checks were successful
Build latest image / build-container (push) Successful in 1m29s
2025-04-28 20:15:23 +02:00
2cbe906d47 docs(blog): Added new blog post 2025-04-28 20:15:12 +02:00
f8dea737d4 feat(blog): add videos & img
All checks were successful
Build latest image / build-container (push) Successful in 1m21s
2025-04-25 16:03:47 +02:00
4233361d65 chore: Added language codes
All checks were successful
Build latest image / build-container (push) Successful in 1m30s
2025-04-25 14:46:24 +02:00
4d2c993ba2 fix(setup): correct property type in registry modification command
All checks were successful
Build latest image / build-container (push) Successful in 1m28s
2025-04-25 14:37:36 +02:00
1497fa19d0 docs(kiosk): Disable widgets
All checks were successful
Build latest image / build-container (push) Successful in 1m26s
2025-04-25 14:33:22 +02:00
486115eb1b docs(kiosk): Added script to disable windows shortcuts
All checks were successful
Build latest image / build-container (push) Successful in 1m27s
2025-04-25 14:29:17 +02:00
215fcc9f91 docs(kiosk): update setup instructions to disable sleep and hibernation
All checks were successful
Build latest image / build-container (push) Successful in 1m33s
2025-04-25 14:24:19 +02:00
1b93f54a76 Merge branch 'main' of git.odit.services:lfk/docs
All checks were successful
Build latest image / build-container (push) Successful in 1m28s
2025-04-25 13:29:22 +02:00
d3c71353cc docs(kiosk): Added footer/header setup step 2025-04-25 13:29:18 +02:00
5d26fa8c33 fix(blog): typos
All checks were successful
Build latest image / build-container (push) Successful in 1m28s
2025-04-25 13:27:01 +02:00
b22d130631 fix(blog): Typo in filename
All checks were successful
Build latest image / build-container (push) Successful in 1m35s
2025-04-25 11:33:19 +02:00
813db4de78 fix(config): update menu structure and adjust weights for blog and search 2025-04-25 11:32:03 +02:00
3b0eb9ec46 docs(blog): fix typo in Kiosk feature description 2025-04-25 11:31:57 +02:00
3b84480a31 docs(blog): add new features and improvements blog posts in German and English 2025-04-25 11:31:03 +02:00
250e27c92e fix(kiosk): typo
All checks were successful
Build latest image / build-container (push) Successful in 1m33s
2025-04-15 17:39:03 +02:00
3b88ff42f3 docs(kiosk): Update kiosk setup instructions to use HTTPS and disable sleep settings
All checks were successful
Build latest image / build-container (push) Successful in 1m46s
2025-04-14 17:38:18 +02:00
7a9d498d96 docs(orgs): Add warning about not deleting the "Citizen" organization
All checks were successful
Build latest image / build-container (push) Successful in 1m23s
2025-04-14 17:09:16 +02:00
685006f629 docs(orgs): Add warning about not deleting the "Citizen" organization 2025-04-14 17:07:12 +02:00
e05e54fae7 docs(kiosk): Add navigation link and correct escape key instruction
All checks were successful
Build latest image / build-container (push) Successful in 1m18s
2025-04-12 18:19:23 +02:00
b81a6092f5 docs(kiosk): Add configuration instructions for kiosk setup 2025-04-12 18:19:19 +02:00
9cc7c7f27c docs(kiosk): Add instructions for using the kiosk with preferred browsers
All checks were successful
Build latest image / build-container (push) Successful in 1m24s
2025-04-12 18:13:47 +02:00
6c909a8374 docs(kiosk): Added with/without printer instructions 2025-04-12 18:10:00 +02:00
b828322da1 docs(kiosk): Updated escape sequence
All checks were successful
Build latest image / build-container (push) Successful in 1m20s
2025-04-12 17:50:53 +02:00
95f8aa6fcd docs(kiosk): Added printer hints 2025-04-12 17:50:36 +02:00
09853639cd docs: Added kiosk to menu and homepage
All checks were successful
Build latest image / build-container (push) Successful in 1m25s
2025-04-12 17:48:12 +02:00
759376ca13 docs(kiosk): Added sleep hints 2025-04-12 17:45:32 +02:00
3e7e82c8b5 docs(kiosk): Added kiosk setup docs
All checks were successful
Build latest image / build-container (push) Successful in 1m26s
2025-04-12 17:31:41 +02:00
d2ed34fe2b Merge branch 'main' of git.odit.services:lfk/docs
All checks were successful
Build latest image / build-container (push) Successful in 1m27s
2025-04-08 19:36:04 +02:00
0473960c1a feat(ci): Added build-number based tag 2025-04-08 19:35:48 +02:00
75d0af185c ci: drop displayUpdatedDate for now
All checks were successful
Build latest image / build-container (push) Successful in 2m31s
Build release images / build-container (push) Successful in 2m42s
2025-03-28 17:09:01 +01:00
810be2c0cd ci: build tagged releases
Some checks failed
Build release images / build-container (push) Failing after 13s
Build latest image / build-container (push) Failing after 12s
2025-03-28 16:52:44 +01:00
ab6ce62649 fix/typo): user email confirmation
Some checks failed
Build latest image / build-container (push) Failing after 13s
2025-03-28 16:48:19 +01:00
112e7dbe7a feat: lfk brand font 2025-03-28 16:48:00 +01:00
0032df1862 feat(docker): Include .git directory in Docker image for version control
Some checks failed
Build latest image / build-container (push) Failing after 13s
2025-03-22 22:59:47 +01:00
8fbd031e46 fix(workflow): Set fetch-depth to 0 for full history in GitHub Actions
Some checks failed
Build latest image / build-container (push) Failing after 58s
2025-03-22 22:57:23 +01:00
5ecba1d65c Merge branch 'main' of git.odit.services:lfk/docs
Some checks failed
Build latest image / build-container (push) Failing after 1m4s
2025-03-22 22:51:35 +01:00
3c0738f11f feat(workflow): Add GitHub Actions workflow for building latest Docker image 2025-03-22 22:51:27 +01:00
7338080c32 fix(typo): Scanning Stations 2025-02-14 14:19:35 +01:00
ca8373e383 fix(navbar): Revert logo size 2025-01-18 08:35:20 +01:00
3cad9e2a56 feat: Enable updated at and editing urls 2025-01-18 08:33:11 +01:00
c6bcf572cf style: Added icons 2025-01-18 08:24:16 +01:00
e03f3dd205 refactor(footer): Switch to custom footer template 2025-01-18 08:09:00 +01:00
3e13e1a5f1 style(container): Update Dockerfile syntax for build stage 2025-01-16 22:55:24 +01:00
16bf581c60 fix(scanstation): Broken links 2025-01-16 22:54:15 +01:00
f3ebeba9a7 fix(content): Broken links 2025-01-16 22:52:39 +01:00
96eb208937 fix: Broken Links 2025-01-16 22:50:04 +01:00
f44dfbfbb9 style(footer): Updated footer 2025-01-16 22:39:07 +01:00
49f2a1715b chore: Remove legacy docs 2025-01-16 22:28:56 +01:00
e22fb71daa refactor(container): Switch to base images from dockerhub 2025-01-16 22:14:43 +01:00
3fea70ce17 feat(container): Docker ignore 2025-01-16 22:13:09 +01:00
168 changed files with 1248 additions and 1967 deletions

2
.dockerignore Normal file
View File

@@ -0,0 +1,2 @@
*lock
public/**

View File

@@ -0,0 +1,30 @@
name: Build latest image
on:
push:
branches:
- main
jobs:
build-container:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to registry
uses: docker/login-action@v3
with:
registry: registry.odit.services
username: ${{ vars.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: |
${{ vars.REGISTRY }}/lfk/docs:latest
${{ vars.REGISTRY }}/lfk/docs:main-${{ gitea.run_number }}
platforms: linux/amd64,linux/arm64

View File

@@ -0,0 +1,27 @@
name: Build release images
on:
push:
tags:
- "*.*.*"
jobs:
build-container:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to registry
uses: docker/login-action@v3
with:
registry: registry.odit.services
username: ${{ vars.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: |
${{ vars.REGISTRY }}/lfk/docs:${{ github.ref_name }}
platforms: linux/amd64,linux/arm64

View File

@@ -1,8 +1,9 @@
FROM registry.odit.services/hub/hugomods/hugo:exts as build
FROM hugomods/hugo:exts AS build
WORKDIR /app
COPY . /app/
# COPY .git /app/.git
RUN hugo
FROM registry.odit.services/hub/hugomods/hugo:nginx
FROM hugomods/hugo:nginx
COPY --from=build /app/public /site

11
assets/css/custom.css Normal file
View File

@@ -0,0 +1,11 @@
@font-face {
font-family: "Athiti";
src: url("/fonts/athiti.ttf");
}
html,
:host {
font-family: "Athiti";
}
.content {
font-family: "Athiti";
}

View File

@@ -7,7 +7,6 @@ module:
- path: github.com/imfing/hextra
enableRobotsTXT: true
enableGitInfo: true
hasCJKLanguage: true
outputs:
@@ -16,6 +15,7 @@ outputs:
section: [HTML, RSS]
markup:
defaultMarkdownHandler: goldmark
highlight:
noClasses: false
goldmark:
@@ -58,42 +58,42 @@ menu:
pageRef: /selfservice
weight: 3
- identifier: scanstation
name: Scanerstationen
name: Scannerstationen
pageRef: /scanstation
weight: 4
- identifier: kiosk
name: Kiosk
pageRef: /kiosk
weight: 5
- identifier: beamershow
name: Beamershow
pageRef: /beamershow
weight: 5
weight: 6
- identifier: blog
name: Blog/Updates
pageRef: /blog/
weight: 6
- name: Suche
identifier: search
weight: 6
weight: 8
params:
type: search
# sidebar:
# - identifier: more
# name: Mehr
# params:
# type: separator
# weight: 2
# - identifier: source
# name: "Source Code"
# url: "https://git.odit.services/lfk"
- name: Sourcecode
weight: 9
url: "https://git.odit.services/lfk"
params:
icon: gitea
params:
description: Dokumentation für das Lauf für Kaya! Läufersystem.
navbar:
displayTitle: true
displayLogo: true
logo:
path: logo.png
dark: logo.png
# width: 40
# height: 20
# link: /
width: wide
path: logo.svg
dark: logo.svg
link: /
width: normal
page:
width: normal
theme:
@@ -101,22 +101,22 @@ params:
displayToggle: true
footer:
enable: true
displayCopyright: false
displayCopyright: true
displayPoweredBy: false
width: normal
search:
enable: true
type: flexsearch
flexsearch:
# index page by: content | summary | heading | title
index: content
# full | forward | reverse | strict
# https://github.com/nextapps-de/flexsearch/#tokenizer-prefix-search
tokenize: forward
highlight:
copy:
enable: true
display: hover
comments:
enable: false
enable: false
editURL:
enable: true
base: "https://git.odit.services/lfk/docs/_edit/main/content"

View File

@@ -1,6 +1,7 @@
---
title: Die Dokumentation für das LfK! Läufersystem
layout: hextra-home
lang: de
---
{{< hextra/hero-badge >}}
<div class="hx-w-2 hx-h-2 hx-rounded-full hx-bg-primary-400"></div>
@@ -21,5 +22,44 @@ layout: hextra-home
</div>
<div class="hx-mb-6">
{{< hextra/hero-button text="Schnellstart für Nutzer 👉" link="user" >}}
</div>
{{< hextra/hero-button text="Schnellstart für Nutzer 👉" link="./user" >}}
</div>
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="Anwenderdoku"
subtitle="Orgs, Teams und Läufer:innen anlegen, verwalten und mehr."
style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
link="./user"
>}}
{{< hextra/feature-card
title="Admindoku"
subtitle="Installation, Konfiguration und Bedienung des Läufersystems."
style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
link="./admin"
>}}
{{< hextra/feature-card
title="Selfservice"
subtitle="Portal für Bürger- und Firmenläufer:innen."
style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
link="./selfservice"
>}}
{{< hextra/feature-card
title="Scannerstationen"
subtitle="Karten scannen, Kilometer und erfassen. Bedienung, Hardware und Software."
style="background: radial-gradient(ellipse at 50% 80%,rgba(59,221,210,0.15),hsla(0,0%,100%,0));"
link="./scanstation"
>}}
{{< hextra/feature-card
title="Kiosk"
subtitle="Anmeldekiosk für den Bürgerlauf vor Ort."
style="background: radial-gradient(ellipse at 50% 80%,rgba(53,142,74,0.15),hsla(0,0%,100%,0));"
link="./kiosk"
>}}
{{< hextra/feature-card
title="Beamershow"
subtitle="Aktuelle Statistiken und Toplisten zum Event."
style="background: radial-gradient(ellipse at 50% 80%,rgba(97,254,97,0.15),hsla(0,0%,100%,0));"
link="./beamershow"
>}}
{{< /hextra/feature-grid >}}

View File

@@ -1,6 +1,7 @@
---
title: The Documentation for the LfK! Runner System
layout: hextra-home
lang: en
---
{{< hextra/hero-badge >}}
<div class="hx-w-2 hx-h-2 hx-rounded-full hx-bg-primary-400"></div>
@@ -10,16 +11,55 @@ layout: hextra-home
<div class="hx-mt-6 hx-mb-6">
{{< hextra/hero-headline >}}
Documentation of the LfK! Runner System.
Documentation of the LfK! Runner System.
{{< /hextra/hero-headline >}}
</div>
<div class="hx-mb-12">
{{< hextra/hero-subtitle >}}
Here you will find all the information you need to install, configure, and use the LfK! Runner System.
Here you will find all the information you need to install, configure, and use the LfK! Runner System.
{{< /hextra/hero-subtitle >}}
</div>
<div class="hx-mb-6">
{{< hextra/hero-button text="Quickstart for Users 👉" link="user" >}}
</div>
{{< hextra/hero-button text="Quickstart for Users 👉" link="./user" >}}
</div>
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="User Documentation"
subtitle="Create and manage orgs, teams, runners and mire."
style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
link="./user"
>}}
{{< hextra/feature-card
title="Admin Documentation"
subtitle="Installation, configuration, and operation of the runner system."
style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
link="./admin"
>}}
{{< hextra/feature-card
title="Self-service"
subtitle="Portal for citizen and company runners."
style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
link="./selfservice"
>}}
{{< hextra/feature-card
title="Scanner Stations"
subtitle="Scan cards, record kilometers. How-to, hardware, and software."
style="background: radial-gradient(ellipse at 50% 80%,rgba(59,221,210,0.15),hsla(0,0%,100%,0));"
link="./scanstation"
>}}
{{< hextra/feature-card
title="Kiosk"
subtitle="Self-service kiosk for the citizen run on site."
style="background: radial-gradient(ellipse at 50% 80%,rgba(53,142,74,0.15),hsla(0,0%,100%,0));"
link="./kiosk"
>}}
{{< hextra/feature-card
title="Beamer Show"
subtitle="Current statistics and top lists for the event."
style="background: radial-gradient(ellipse at 50% 80%,rgba(97,254,97,0.15),hsla(0,0%,100%,0));"
link="./beamershow"
>}}
{{< /hextra/feature-grid >}}

View File

@@ -6,10 +6,11 @@ prev: /
next: /admin/quickstart
cascade:
type: docs
lang: de
---
Dieser Teil der Dokumentation befasst sich mit der Installation, Konfiguration und Bedienung des Läufersystems für normale Admins.
Solltest du an der Bedienung für normale Nutzer interessiert sein schau doch mal in den [Nutzerbereich](/user).
Solltest du an der Bedienung für normale Nutzer interessiert sein schau doch mal in den [Nutzerbereich](../../user).
## Services

View File

@@ -6,10 +6,11 @@ prev: /
next: /admin/quickstart
cascade:
type: docs
lang: en
---
This part of the documentation deals with the installation, configuration, and operation of the runner system for regular admins.
If you are interested in the operation for regular users, take a look at the [User Area](/user).
If you are interested in the operation for regular users, take a look at the [User Area](../../user).
## Services

View File

@@ -3,6 +3,7 @@ title: Schnellstart für Admins
weight: 2
prev: /admin
next: /admin/users
lang: de
---
Du willst das System schnell aufsetzen und testen? Dann bist du hier genau richtig!

View File

@@ -3,6 +3,7 @@ title: Quick Start for Admins
weight: 2
prev: /admin
next: /admin/users
lang: en
---
Do you want to set up and test the system quickly? Then you are in the right place!

View File

@@ -3,6 +3,7 @@ title: Benutzergruppen verwalten
weight: 4
prev: /admin/quickstart
next: /admin/usergroups
lang: de
---
Als Admin kannst du Benutzergruppen anlegen und Benutzer:innen in diese Einsortieren.

View File

@@ -3,6 +3,7 @@ title: Manage User Groups
weight: 4
prev: /admin/quickstart
next: /admin/usergroups
lang: en
---
As an admin, you can create user groups and assign users to them.

View File

@@ -3,6 +3,7 @@ title: Benutzer:innen verwalten
weight: 3
prev: /admin/quickstart
next: /admin/usergroups
lang: de
---
Als Admin kannst du Benutzer:innen anlegen.

View File

@@ -3,6 +3,7 @@ title: Manage Users
weight: 3
prev: /admin/quickstart
next: /admin/usergroups
lang: en
---
As an admin, you can create users.

View File

@@ -6,6 +6,7 @@ prev: /
next: /beamershow/config
cascade:
type: docs
lang: de
---
Die Beamershow zeigt live Statistiken zum aktuellen Event an.

View File

@@ -6,6 +6,7 @@ prev: /
next: /beamershow/config
cascade:
type: docs
lang: en
---
The beamer show displays live statistics for the current event.

View File

@@ -2,6 +2,7 @@
title: Beamershow Konfig
weight: 1
prev: /beamershow
lang: de
---
## Start

View File

@@ -2,6 +2,7 @@
title: Beamershow Config
weight: 1
prev: /beamershow
lang: en
---
## Start

View File

@@ -0,0 +1,80 @@
---
title: Neue Funktionen und Verbesserungen
date: 2025-04-25
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Kiosk
- Frontend
- Dokumente
excludeSearch: true
description: "In den letzten Wochen haben wir an mehreren neuen Funktionen und Verbesserungen der Plattform gearbeitet. Dieser Beitrag gibt einen Überblick über die wichtigsten Änderungen."
lang: de
---
In den letzten Wochen haben wir an mehreren neuen Funktionen und Verbesserungen der Plattform gearbeitet.
Dieser Beitrag gibt einen Überblick über die wichtigsten Änderungen.
## Kiosk
### LfK! 2023 - Kiosk 0.6
Vor zwei Jahren haben wir das Kiosk-Feature eingeführt, um Läufer:innen die Anmeldung am Veranstaltungstag vor Ort zu ermöglichen.
Es handelte sich um ein recht einfaches Formular, in das Vor- und Nachname eingetragen werden konnten.
Nach dem Absenden wurde die Läufer-ID auf dem Bildschirm zusammen mit einem scannbaren Barcode angezeigt dieser wurde jedoch nur von den Helfern genutzt, die Karten an die neu registrierten Läufer:innen ausgaben.
Der Kiosk löste genau ein Problem: Die Namen der Läufer:innen mussten nicht mehr mühsam buchstabiert und manuell eingetippt (und nach dem unvermeidlichen Tippfehler erneut eingegeben) werden.
### Der neue Kiosk (1.2)
Der Hauptkritikpunkt am alten Kiosk war, dass die Kartenzuordnung für über der Kiosk registrierte Läufer:innen weiterhin umständlich war.
Man benötigte eine 1:1-Zuordnung von Kiosk-PCs zu Helfern, die Karten an die neu registrierten Läufer:innen ausgaben, was den Durchsatz des Kiosks begrenzte.
Der neue Kiosk ist als vollständige self-service Lösung konzipiert und ermöglicht einen höheren Durchsatz.
Um diese Ziele zu erreichen, haben wir folgende Funktionen eingeführt:
- **Anmeldung mit E-Mail**: Läufer:innen können bei der Anmeldung am Kiosk optional ihre E-Mail-Adresse angeben. Dadurch können sie das Self-Service-Portal nutzen, um ihre Anmeldedaten und Rundenzeiten einzusehen.
- **Self-Service QR-Code-Generierung**: Statt eines nichtssagenden Barcodes erzeugt der Kiosk nach der Anmeldung nun einen QR-Code. Dieser kann von den Läufer:innen gescannt werden, um das Self-Service-Portal zu öffnen und ihre Anmeldedaten einzusehen.
- **Bestätigungsdruck**: Ist das Kiosk mit einem Bondrucker verbunden, wird automatisch ein Bestätigungsbeleg mit den Anmeldedaten und dem QR-Code ausgedruckt. Der QR-Code kann von den Läufer:innen gescannt werden, um das Self-Service-Portal zu öffnen und ihre Anmeldedaten sowie Rundenzeiten einzusehen. Er kann auch von den Helfern zur Kartenzuordnung genutzt werden (siehe unten).
Dieses Video demonstriert die neuen Kiosk-Funktionen:
<video width="320" height="240" controls>
<source src="/images/kiosk.mp4" type="video/mp4">
</video>
![LfK! Kiosk Bon](/images/kiosk.jpg)
## Frontend
### Schnelle Läufer ↔️ Karten Zuordnung
Wir haben eine neue Ansicht im Admin-Panel implementiert, die es Helfern und Admins ermöglicht, schnell Karten an Läufer:innen zuzuordnen, die sich über der Kiosk registriert haben.
Diese Ansicht besteht hauptsächlich aus einem webbasierten QR-Code/Barcode-Scanner, der die vom Kiosk, den Bestätigungsbelegen und dem Self-Service-Portal generierten QR-Codes erkennt.
Sobald ein gültiger Code gescannt wurde, wechselt der Scanner in den Karten-Zuordnungsmodus und der Helfer muss nur noch den Barcode einer Karte vorhalten.
Dieses kurze Video zeigt die neue Karten-Zuordnungsfunktion:
<video width="320" height="240" controls>
<source src="/images/cardassign.mp4" type="video/mp4">
</video>
## Dokumente
### Performance-Verbesserungen
Der Dokumentenserver wurde komplett in Go neu geschrieben, um die Performance und Zuverlässigkeit zu verbessern.
Dies ist ein rein technischer Aspekt der Plattform und hat keine Auswirkungen auf die Nutzererfahrung.
### QR-Codes auf den Urkunden
Die Läuferurkunden enthalten nun zwei QR-Codes am unteren Rand der zweiten Seite:
- **Self-Service-Portal**: Der erste QR-Code führt zum Self-Service-Portal, in dem Läufer:innen ihre Anmeldedaten und Rundenzeiten einsehen können.
- **Zahlung**: Der zweite QR-Code ist ein EPC-Zahlungscode, der mit den meisten Banking-Apps gescannt werden kann und Empfänger, Verwendungszweck und Betrag für die mit dem Läufer verbundenen Spenden automatisch ausfüllt.
## Allgemein
- **Anmelde-Tracking**: Das Backend zeichnet nun die Anmeldequelle jeder Läufer:in auf. Dies wurde hauptsächlich implementiert, um die Nutzung des Kiosks und des Self-Service-Portals zu verfolgen.

View File

@@ -0,0 +1,70 @@
---
title: New Features and Improvements
date: 2025-04-25
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Kiosk
- Frontend
- Documents
excludeSearch: true
description: "Over the last few weeks we have been working on several new features and improvements to the platform. This post provides an overview of the most important changes."
lang: en
---
Over the last few weeks we have been working on several new features and improvements to the platform.
This post provides an overview of the most important changes.
## Kiosk
### LfK! 2023 - Kiosk 0.6
Two years ago, we introduced the Kiosk feature to allow runners to sign up in person on the day of the event.
It was a pretty basic form that allowed runners to enter their first name and last name.
After hitting enter the runner's ID was shown on the screen alongside a scannable barcode - but this was only used for the kisok attendees that assigned cards to the newly registered runners.
The kiosk fixed exactly one problem: Not needing to ask runners to spell their names out loud and having to type them in manually (and re-type them after the inevitable typo).
### The new kiosk (1.2)
The main pain point of the old kiosk was that it was still a hastle assign a card to a runner that registered via the kiosk.
You still needed a 1:1 assignment of kiosk pcs to helpers that assigned cards to the newly registered runners, limiting the throughput of the kiosk.
The new kiosk is designed to be completely self-service and allow for higher throughput.
To achieve these goals we have introduced the following features:
- **Signup with email**: Runners can optionally provide their email address when signing up via the kiosk. This allows them to use the runner self-service portal to view their registration details and lap times.
- **Self-service QR-Code generation**: Instead of some none-descript barcode the kiosk now generates a QR-Code after signup. This QR-Code can be scanned by the runner to open the self-service portal and view their registration details.
- **Confirmation printing**: If your kiosk hardware is connected to a receipt printer the kiosk automatically prints a confirmation slip with the runner's registration details and QR-Code. The QR-Code can be scanned by the runner to open the self-service portal and view their registration details and lap times. It can also be used by the helpers to assign a card to the runner (see below).
This video demonstrates the new kiosk features: TODO: Video
## Frontend
### Fast runner ↔️ card assignment
We implemented a new view in the admin panel that allows helpers and admins to quickly assign cards to runners that registered via the kiosk.
This view mainly consists of a web-based QR-Code/barcode scanner that can recognize the QR-Codes generated by the kiosk, confirmation slips and the self-service portal.
As soon as a valid code is scanned the scanner switches to card assignment mode and the helper just has to present a card's barcode to the scanner.
This short video demonstrates the new card assignment feature: TODO: Video
## Documents
### Performance improvements
The document server has been rewritten from scratch in go to improve performance and reliability.
This is just a technical aspect of the platform and does not change the user experience.
### QR-Codes on the certificates
The runner certificates now include two QR-Codes on the bottom of the second page:
- **Self-service portal**: The first QR-Code links to the self-service portal where runners can view their registration details and lap times.
- **Payment**: The second QR-Code is an EPC payment code that can be scanned via any banking app and automatically fills in the payment recipient, purpose and amount for the donations assoicated with the runner.
## General
- **Sign up tracking**: The backend now tracks the signup source of each runner. This was mainly implemented to allow us to track the usage of the kiosk and self-service portal.

View File

@@ -0,0 +1,33 @@
---
title: Anonyme Spenden
date: 2025-04-28
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Backend
- Frontend
- Spenden
excludeSearch: true
description: "Auf vielfachen Wunsch unserer selbst, haben wir eine neue Funktion zur Plattform hinzugefügt: Anonyme Spenden!"
lang: de
---
Bei den letzten Veranstaltungen haben wir gelegentlich Anfragen von Läufern erhalten, eine feste Summe anonym spenden zu können.
Das bedeutet, dass die Spende nicht mit einem bestimmten Läufer oder Spender verknüpft ist, aber dennoch in der Spendenstatistik angezeigt wird.
Meistens wurde dies bisher dadurch erreicht, dass Bargeld direkt an den Veranstalter übergeben wurde und dieses Geld dann nicht in die Spendenstatistik eingeflossen ist.
Dank [backend@1.4.0](https://git.odit.services/lfk/backend/releases/tag/1.4.0), [lib@1.2.5](https://www.npmjs.com/package/@odit/lfk-client-js/v/1.2.5) und [frontend@1.12.1](https://git.odit.services/lfk/frontend/releases/tag/1.12.1) gehört das nun der Vergangenheit an!
Wir haben eine neue Funktion zur Plattform hinzugefügt, mit der anonyme Spenden erstellt werden können.
Diese Funktion ist im Admin-Panel verfügbar und ermöglicht es, im Bereich „Spenden“ anonyme Spenden zu erfassen.
Einfach eine neue Spende hinzufügen, den Typ „Anonyme Spende“ auswählen und den gespendeten Betrag eintragen.
![Spende hinzufügen](/images/blog/2025-04-28_anonymous-donations_add.png)
Die Spende wird dann in der Spendenstatistik angezeigt, ist aber nicht mit einem bestimmten Läufer oder Spender verknüpft.
Sie erscheint außerdem in der Spendenübersicht im Admin-Panel und kann wie jede andere Spende gelöscht werden.
![Anonyme Spende in der Übersicht](/images/blog/2025-04-28_anonymous-donations_overview.png)

View File

@@ -0,0 +1,33 @@
---
title: Anonymous Donations
date: 2025-04-28
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Backend
- Frontend
- Donations
excludeSearch: true
description: "As requested by no one but ourselves we have added a new feature to the platform: Anonymous donations!"
lang: en
---
During the last events we sometimes received requests from runners to be able to donate a fixed anonymously.
This means that the donation is not linked to a specific runner or donor but will still be shown in the donation statistics.
Most of the time this was achived by just handing over cash to the event organizer and the cash not getting counted in the donation statistics.
This is now a thing of the past thanks to [backend@1.4.0](https://git.odit.services/lfk/backend/releases/tag/1.4.0), [lib@1.2.5](https://www.npmjs.com/package/@odit/lfk-client-js/v/1.2.5) and [frontend@1.12.1](https://git.odit.services/lfk/frontend/releases/tag/1.12.1)!
We have added a new feature to the platform that allows you to create anonymous donations.
This feature is available in the admin panel and allows you to create anonymous donations in the "Donations" section.
Just add a new donation, select the Type "Anonymous Donation" and enter the donated amount.
![Add donation](/images/blog/2025-04-28_anonymous-donations_add.png)
The donation will then be shown in the donation statistics but will not be linked to a specific runner or donor.
It will also be shown in the donation overview in the admin panel and can be deleted like any other donation.
![Anonymous donation in the overview](/images/blog/2025-04-28_anonymous-donations_overview.png)

View File

@@ -0,0 +1,73 @@
---
title: Neues vor dem LfK! 2025
date: 2025-05-17
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Frontend
- Feedback
- Tools
excludeSearch: true
description: "Kurz vor dem LfK! 2025 sind noch einige neue Funktionen und Verbesserungen auf der Plattform verfügbar. Dieser Beitrag gibt einen Überblick über die wichtigsten Änderungen."
lang: de
---
In unter einer Woche findet der LfK! 2025 statt und wir haben noch einige neue Funktionen und Verbesserungen auf der Plattform implementiert.
Dieser Beitrag gibt einen Überblick über die wichtigsten Änderungen.
## Frontend
Vor kurzem kam im Frontend für Admins die [Schnelle Kartenzuweisung](../2025-04-25_newfeatures#schnelle-läufer--karten-zuordnung) hinzu, die es ermöglicht, Karten schnell und einfach zuzuweisen.
Nach der guten Erfahrung mit diesem neuen Feature, haben wir noch ein paar weitere Tools ergänzt, die Admins und Helfern die Arbeit erleichtern sollen.
### Karten ersetzen
Gerade am Vormittag des Events kommt es häufig vor, dass Karten verloren gehen oder beschädigt werden.
Um die Arbeit der Helfer:innen zu erleichtern, haben wir ein neues Feature implementiert, das es ermöglicht, Karten schnell zu ersetzen.
Dabei kann die Läufer:in per ID oder Name gesucht werden und anschließend die Karte ersetzt werden, indem die neue Karte via Barcodescanner oder Smartphone-Kamera gescannt wird.
![Karte ersetzen](/images/blog/2025-05-19_replace_card.png)
### Mobiler Scanclient
Traditionell werden die Läuferkarten am Verantstaltungstag mit Hand-Barcode-Scannern gescannt, um die Rundenzeiten zu erfassen.
Dies ist auch immernoch die beste Methode, um die Rundenzeiten zu erfassen, da die Hand-Scanner eine hohe Scanrate haben und auch bei schlechten Lichtverhältnissen gut funktionieren.
Allerdings ist es nicht immer möglich, Hand-Scanner zu verwenden, z.B. wenn die Helfer:innen keine Hand-Scanner haben oder die Hand-Scanner nicht funktionieren.
Daher haben wir einen neuen mobilen Scanclient entwickelt, der es ermöglicht, Rundenzeiten mit einem Smartphone zu scannen.
Der Mobile Scanclient nutzt die Kamera des Smartphones, um Barcodes zu scannen und die Rundenzeiten zu erfassen.
![Mobiler Scanclient](/images/blog/2025-05-19_mobile_scanclient.png)
### Sponsoring-Schnellanlage
Tradition werden wenige Tage vor dem Event die Sponsoring-Verträge der Teilnehmer:innen eingesammelt und manuell über das Frontend eingepflegt.
Dabei musste bisher in zwei Ansichten gearbeitet werden:
1. In der Spnsoren-Übersicht, um Sponsoren zu suchen und/oder zu erstellen.
2. In der Sponsoring-Übersicht, um die Sponsorings zu ersten und zu bearbeiten.
In der neuen Schnelleingabe können Sponsoren und Sponsoring-Verträge in einer Ansicht erstellt werden. Dazu müssen nur folgende Schritte durchgeführt werden:
1. Läufer:in suchen (nach Name oder ID)
2. Sponsor Suchen oder neu erstellen
3. Betrag pro Kilometer eingeben
4. Sponsoring erstellen
![Neue Sponsoring-Schnelleingabe](/images/blog/2025-05-19_sponsoring_quick_add.png)
## Feedback
Wir wollten dieses Jahr beim LfK! 2025 QR-Codes aufhängen, über die uns Teilnehmer:innen Feedback geben können. Dafür haben wir verschiedene Tools ausprobiert und waren aber mit keinem wirklich zufrieden.
Was macht der gute Programmierer in so einem Fall? Er baut sich sein eigenes Tool! Und genau das haben wir getan.
Das neue Tool nimmt Feedback von Teilnehmer:innen entgegen, wobei eine Sterne-Wertung und ein Kommentar (+ optional die eigene E-Mail Adresse) abgegeben werden können.
![Feedback Form](/images/blog/2025-05-19_feedback_form.png)
In einem eigenen Admin-Bereich können die abgegebenen Bewertungen und Kommentare eingesehen und verwaltet werden.
Dabei gibt es neben ein paar Statistiken auch eine rudimentäre Sentiment-Analyse, die die abgegebenen Kommentare in positiv, neutral und negativ einteilt.
![Feedback Admin](/images/blog/2025-05-19_feedback_admin.png)

View File

@@ -0,0 +1,73 @@
---
title: News before LfK! 2025
date: 2025-05-17
authors:
- name: ODIT.Services
link: https://odit.services
image: https://odit.services/img/profile-pic-no_bg.webp
tags:
- Release
- Frontend
- Feedback
- Tools
excludeSearch: true
description: "Shortly before LfK! 2025, several new features and improvements have been added to the platform. This post provides an overview of the most important changes."
lang: en
---
In less than a week, LfK! 2025 will take place, and we have implemented several new features and improvements on the platform.
This post provides an overview of the most important changes.
## Frontend
Recently, we added the [Quick Card Assignment](../2025-04-25_newfeatures#quick-runner--card-assignment) feature to the admin frontend, which makes it possible to assign cards quickly and easily.
After the positive experience with this new feature, we have added a few more tools to make the work of admins and helpers easier.
### Card Replacement
Especially on the morning of the event, cards often get lost or damaged.
To make the work of helpers easier, we have implemented a new feature that allows for quick card replacement.
The runner can be searched by ID or name, and then the card can be replaced by scanning the new card using a barcode scanner or smartphone camera.
![Replace Card](/images/blog/2025-05-19_replace_card.png)
### Mobile Scan Client
Traditionally, runner cards are scanned with handheld barcode scanners on the event day to record lap times.
This is still the best method to capture lap times, as handheld scanners have a high scan rate and work well even in poor lighting conditions.
However, it's not always possible to use handheld scanners, e.g., when helpers don't have handheld scanners or the scanners don't work.
Therefore, we have developed a new mobile scan client that allows for recording lap times with a smartphone.
The mobile scan client uses the smartphone's camera to scan barcodes and record lap times.
![Mobile Scan Client](/images/blog/2025-05-19_mobile_scanclient.png)
### Quick Sponsorship Creation
Traditionally, a few days before the event, participants' sponsorship contracts are collected and manually entered through the frontend.
Until now, this required working in two different views:
1. In the sponsors overview to search for and/or create sponsors.
2. In the sponsorship overview to create and edit sponsorships.
In the new quick entry form, sponsors and sponsorship contracts can be created in a single view. To do this, only the following steps need to be completed:
1. Search for a runner (by name or ID)
2. Search for or create a new sponsor
3. Enter the amount per kilometer
4. Create the sponsorship
![New Quick Sponsorship Creation](/images/blog/2025-05-19_sponsoring_quick_add.png)
## Feedback
This year at LfK! 2025, we wanted to post QR codes that participants could use to give us feedback. We tried various tools for this but weren't really satisfied with any of them.
What does a good programmer do in such a case? He builds his own tool! And that's exactly what we did.
The new tool accepts feedback from participants, allowing them to give a star rating and a comment (+ optionally their own email address).
![Feedback Form](/images/blog/2025-05-19_feedback_form.png)
In a dedicated admin area, the submitted ratings and comments can be viewed and managed.
In addition to some statistics, there is also a rudimentary sentiment analysis that categorizes the submitted comments as positive, neutral, or negative.
![Feedback Admin](/images/blog/2025-05-19_feedback_admin.png)

11
content/blog/_index.de.md Normal file
View File

@@ -0,0 +1,11 @@
---
title: "Blog"
lang: de
---
<div style="text-align: center; margin-top: 1em;">
{{< hextra/hero-badge link="index.xml" >}}
<span>RSS Feed</span>
{{< icon name="rss" attributes="height=14" >}}
{{< /hextra/hero-badge >}}
</div>

11
content/blog/_index.en.md Normal file
View File

@@ -0,0 +1,11 @@
---
title: "Blog"
lang: en
---
<div style="text-align: center; margin-top: 1em;">
{{< hextra/hero-badge link="index.xml" >}}
<span>RSS Feed</span>
{{< icon name="rss" attributes="height=14" >}}
{{< /hextra/hero-badge >}}
</div>

View File

@@ -0,0 +1,23 @@
---
linkTitle: "Kiosk"
title: Kiosk
weight: 1
prev: /
next: /kiosk/setup
cascade:
type: docs
lang: de
---
Der Kiosk kann verwendet werden, um sich vor Ort für die Veranstaltung anzumelden.
Es handelt sich um eine Webanwendung, die auf jedem Gerät mit einem Webbrowser genutzt werden kann, ist jedoch hauptsächlich für die Verwendung mit dedizierter Hardware (z.B. Tablets) vorgesehen.
Der Kiosk ist für den Einsatz im öffentlichen Raum konzipiert und sollte daher einfach zu bedienen sein und keine besonderen Kenntnisse oder Schulungen erfordern.
## Bevorzugte Hardware
Wir empfehlen Hardware, die über einen Touchscreen und eine Tastatur verfügt.
Dies ermöglicht eine einfache Dateneingabe und macht den Kiosk benutzerfreundlicher.
Die Hardware sollte außerdem robust sein und starker Beanspruchung standhalten können, da sie während der Veranstaltung von vielen Personen genutzt wird.
Bonuspunkte, wenn das System einen Belegdrucker enthält, der es ermöglicht, Anmeldebelege direkt vom Kiosk auszudrucken.
Diese Belege enthalten einen QR-Code, der bei der Anmeldung gescannt werden kann, um den Benutzer zu registrieren, und vom Benutzer, um auf unser Self-Service-Portal zuzugreifen.

View File

@@ -0,0 +1,23 @@
---
linkTitle: "Kiosk"
title: Kiosk
weight: 1
prev: /
next: /kiosk/setup
cascade:
type: docs
lang: en
---
The kiosk can be used to sign up to the event on site.
It's a web application that can be used on any device with a web browser, but is primarily intended for use with dedicated hardware (e.g. tablets).
The kiosk is designed to be used in a public space, so it should be easy to use and not require any special knowledge or training.
## Prefered Hardware
We recomend hardware that has a touchscreen and a keyboard.
This allows for easy input of data and makes the kiosk more user-friendly.
The hardware should also be durable and able to withstand heavy use, as it will be used by many people during the event.
Bonus points if the system includes a receipt printer, this allows for registration receipts to be printed directly from the kiosk.
These receipts include a QR code that can be scanned at signup to register the user and by the user to access our self-service portal.

View File

@@ -0,0 +1,28 @@
---
title: Konfiguration
weight: 3
prev: /kiosk/setup
lang: de
---
Wie du den Kiosk nach der Einrichtung konfigurierst.
{{% steps %}}
### Benutzer erstellen
Erstelle einen neuen Benutzer im System - vorzugsweise mit dem Namen `kiosk`.
Weitere Informationen zum Erstellen eines Benutzers findest du in der [Admindokumentation](../admin/users).
### Berechtigungen zuweisen
Der Benutzer benötigt folgende Berechtigungen:
- `RUNNER:CREATE`
Weitere Informationen zum Zuweisen von Berechtigungen findest du in der [Admindokumentation](../admin/users).
### Anmelden
Melde dich auf deinem Kiosk-Gerät mit dem Benutzer an, den du im vorherigen Schritt erstellt hast.
{{% /steps %}}

View File

@@ -0,0 +1,28 @@
---
title: Configuration
weight: 3
prev: /kiosk/setup
lang: en
---
How to configure the kiosk after setup.
{{% steps %}}
### Create user
Create a new user in the system - preferably with the name `kiosk`.
Please refer to the [admin docs](../admin/users) for more information on how to create a user.
### Assign permissions
The user needs the following permissions:
- `RUNNER:CREATE`
Please refer to the [admin docs](../admin/users) for more information on how to assign permissions.
### Login
Login in on your kiosk device with the user you created in the previous step.
{{% /steps %}}

184
content/kiosk/setup.de.md Normal file
View File

@@ -0,0 +1,184 @@
---
title: Kiosk Einrichtung
weight: 2
prev: /kiosk
next: /kiosk/config
lang: de
---
So richten Sie den Kiosk für die Veranstaltung ein.
## Mit Windows Assigned Access
{{< callout type="info" >}}
Dies wurde nur auf Windows 11 Pro und Enterprise getestet.
{{< /callout >}}
### Voraussetzungen
- Windows 11 Pro oder Enterprise
- Nur ein konfigurierter Drucker oder Belegdrucker als Standarddrucker eingerichtet - du kannst die Druckfunktion deaktivieren, aber mit Drucker ist die Benutzererfahrung besser
- Administratorzugriff auf das System
### Einrichtung
1. Laden Sie [psexec](/files/psexec.exe) herunter
2. Öffnen Sie eine PowerShell mit Administratorrechten
3. Wechseln Sie zum Download-Ordner `cd C:\Users\<Benutzername>\Downloads`
4. Führe den psexec-Befehl aus: `.\psexec.exe -i -s powershell.exe`
5. Führe das folgende Skript aus
{{< tabs items="Mit Drucker, Ohne Drucker" >}}
{{< tab >}}
```powershell
$assignedAccessConfiguration = @"
<?xml version="1.0" encoding="utf-8"?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config" xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config" xmlns:v4="http://schemas.microsoft.com/AssignedAccess/2021/config">
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<KioskModeApp v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" v4:ClassicAppArguments="--kiosk https://kiosk.lauf-fuer-kaya.de/?print=true --kiosk-printing --edge-kiosk-type=fullscreen" />
<v4:BreakoutSequence Key="Ctrl+E" />
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Lfk Kiosk" />
<DefaultProfile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
</Configs>
</AssignedAccessConfiguration>
"@
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = [System.Net.WebUtility]::HtmlEncode($assignedAccessConfiguration)
Set-CimInstance -CimInstance $obj
```
{{< /tab >}}
{{< tab >}}
```powershell
$assignedAccessConfiguration = @"
<?xml version="1.0" encoding="utf-8"?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config" xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config" xmlns:v4="http://schemas.microsoft.com/AssignedAccess/2021/config">
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<KioskModeApp v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" v4:ClassicAppArguments="--kiosk https://kiosk.lauf-fuer-kaya.de/ --kiosk-printing --edge-kiosk-type=fullscreen" />
<v4:BreakoutSequence Key="Ctrl+E" />
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Lfk Kiosk" />
<DefaultProfile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
</Configs>
</AssignedAccessConfiguration>
"@
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = [System.Net.WebUtility]::HtmlEncode($assignedAccessConfiguration)
Set-CimInstance -CimInstance $obj
```
{{< /tab >}}
{{< /tabs >}}
6. Ruhezustand und Windows Tastenkombinationen deaktivieren
```powershell
$NullKey = [byte[]]($null,$null)
$LeftWindows = [byte[]](0x5b,0xe0)
$RightWindows = [byte[]](0x5c,0xe0)
$RemapCount = 2
$ReMap = [byte[]](
[Byte[]]::new(8) +
[BitConverter]::GetBytes(1+$RemapCount) +
$NullKey + $LeftWindows +
$NullKey + $RightWindows +
[Byte[]]::new(4)
)
$Splat = @{
'Path' = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
'Name' = 'ScanCode Map'
'Value' = $Remap
'Force' = $True
}
New-ItemProperty @Splat
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh"
$Name = "AllowNewsAndInterests"
$Value = 0
If (-not (Test-Path $RegistryPath)) {
New-Item -Path $RegistryPath -Force | Out-Null
}
New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null
powercfg.exe -x -monitor-timeout-ac 0
powercfg.exe -x -monitor-timeout-dc 0
powercfg.exe -x -disk-timeout-ac 0
powercfg.exe -x -disk-timeout-dc 0
powercfg.exe -x -standby-timeout-ac 0
powercfg.exe -x -standby-timeout-dc 0
powercfg.exe -x -hibernate-timeout-ac 0
powercfg.exe -x -hibernate-timeout-dc 0
```
7. Nur für den Druck: Druck ohne Metadaten einrichten:
1. Lade die [Administrativen Richtlinienvorlagen für Edge](https://www.microsoft.com/de-de/edge/business/download) herunter (Neueste Version herunterladen -> Windows 64-bit -> Windows 64-bit-Richtlinie herunterladen)
2. Kopiere den Inhalt der ZIP-Datei aus dem `.cab`-Archiv nach `C:\Windows\PolicyDefinitions`.
3. Öffne den Gruppenrichtlinien-Editor (GPEdit) und navigiere zu `Computerkonfiguration -> Administrative Vorlagen -> Microsoft Edge -> Drucken`
4. Öffne die Richtlinie `Kopf- und Fußzeilen drucken`, setze sie auf `Deaktiviert` und klicke auf `OK`.
8. Neustarten via `shutdown -r -t 0` oder die Windows Benutzeroberfläche.
### Deinstallation
1. Um den Kiosk-Modus zu verlassen, drücken Sie `Strg+E`
2. Öffnen Sie eine PowerShell mit Administratorrechten
3. Wechseln Sie zum Desktop-Ordner (C:\Users\<Benutzername>\Desktop)
4. Führen Sie den psexec-Befehl aus: `psexec.exe -i -s powershell.exe`
5. Führen Sie das folgende Skript aus
```powershell
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = $null
Set-CimInstance -CimInstance $obj
$Splat = @{
'Path' = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
'Name' = 'ScanCode Map'
'Force' = $True
}
Remove-ItemProperty @Splat
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh"
$Name = "AllowNewsAndInterests"
If (Test-Path -Path $RegistryPath) {
If (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) {
Remove-ItemProperty -Path $RegistryPath -Name $Name -Force | Out-Null
}
}
```
## Mit deinem bevorzugten Browser
{{< callout type="warning" >}}
Die Möglichkeit, den Browser zu verlassen und/oder DevTools zu öffnen, könnte standardmäßig verfügbar sein.
Bitte prüfe, ob dein Browser einen Kiosk-Modus unterstützt und wie du ihn einrichten kannst.
{{< /callout >}}
{{< callout type="warning" >}}
Dein Browser unterstützt möglicherweise nicht das Drucken ohne Dialog.
Bitte prüfe, ob dein Browser diese Funktion unterstützt und wie du sie einrichten kannst.
{{< /callout >}}
Öffne einfach den Link in deinem bevorzugten Browser und nutze den Kiosk-Modus deines Browsers:
- Mit automatischem Druck: <https://kiosk.lauf-fuer-kaya.de/?print=true>
- Ohne automatischen Druck: <https://kiosk.lauf-fuer-kaya.de/>

186
content/kiosk/setup.en.md Normal file
View File

@@ -0,0 +1,186 @@
---
title: Kiosk Setup
weight: 2
prev: /kiosk
next: /kiosk/config
lang: en
---
How to set up the kiosk for the event.
## With Windows Assigned Access
{{< callout type="info" >}}
This is only tested on windows 11 pro and enterprise.
{{< /callout >}}
### Prerequesites
- Windows 11 Pro or Enterprise
- Only one configured printer or receipt printer configured as default printer - you can disable printing but it's cooler to have it
- Admin access to the system
### Setup
1. Download [psexec](/files/psexec.exe)
2. Open a admin windows PowerShell prompt
3. Cd to Downloads `cd C:\Users\<Username>\Downloads`
4. Run the psexec command: `.\psexec.exe -i -s powershell.exe`
5. Run the following script
{{< tabs items="With printing, Without printing" >}}
{{< tab >}}
```powershell
$assignedAccessConfiguration = @"
<?xml version="1.0" encoding="utf-8"?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config" xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config" xmlns:v4="http://schemas.microsoft.com/AssignedAccess/2021/config">
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<KioskModeApp v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" v4:ClassicAppArguments="--kiosk https://kiosk.lauf-fuer-kaya.de/?print=true --kiosk-printing --edge-kiosk-type=fullscreen" />
<v4:BreakoutSequence Key="Ctrl+E" />
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Lfk Kiosk" />
<DefaultProfile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
</Configs>
</AssignedAccessConfiguration>
"@
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = [System.Net.WebUtility]::HtmlEncode($assignedAccessConfiguration)
Set-CimInstance -CimInstance $obj
```
{{< /tab >}}
{{< tab >}}
```powershell
$assignedAccessConfiguration = @"
<?xml version="1.0" encoding="utf-8"?>
<AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config" xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config" xmlns:v4="http://schemas.microsoft.com/AssignedAccess/2021/config">
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<KioskModeApp v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" v4:ClassicAppArguments="--kiosk https://kiosk.lauf-fuer-kaya.de/ --kiosk-printing --edge-kiosk-type=fullscreen" />
<v4:BreakoutSequence Key="Ctrl+E" />
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Lfk Kiosk" />
<DefaultProfile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
</Configs>
</AssignedAccessConfiguration>
"@
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = [System.Net.WebUtility]::HtmlEncode($assignedAccessConfiguration)
Set-CimInstance -CimInstance $obj
```
{{< /tab >}}
{{< /tabs >}}
6. Disable sleep and hibernation alongside the windows button:
```powershell
$NullKey = [byte[]]($null,$null)
$LeftWindows = [byte[]](0x5b,0xe0)
$RightWindows = [byte[]](0x5c,0xe0)
$RemapCount = 2
$ReMap = [byte[]](
[Byte[]]::new(8) +
[BitConverter]::GetBytes(1+$RemapCount) +
$NullKey + $LeftWindows +
$NullKey + $RightWindows +
[Byte[]]::new(4)
)
$Splat = @{
'Path' = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
'Name' = 'ScanCode Map'
'Value' = $Remap
'Force' = $True
}
New-ItemProperty @Splat
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh"
$Name = "AllowNewsAndInterests"
$Value = 0
If (-not (Test-Path $RegistryPath)) {
New-Item -Path $RegistryPath -Force | Out-Null
}
New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -Type DWORD -Force | Out-Null
powercfg.exe -x -monitor-timeout-ac 0
powercfg.exe -x -monitor-timeout-dc 0
powercfg.exe -x -disk-timeout-ac 0
powercfg.exe -x -disk-timeout-dc 0
powercfg.exe -x -standby-timeout-ac 0
powercfg.exe -x -standby-timeout-dc 0
powercfg.exe -x -hibernate-timeout-ac 0
powercfg.exe -x -hibernate-timeout-dc 0
```
7. For print only: Setup printing without metadata:
1. Download the [Administrative Policy Templates for Edge](https://www.microsoft.com/en-en/edge/business/download) (Download the latest -> Windows 64-bit -> Download Windows 64-bit Policy)
2. Copy the Contents of the zip inside the `.cab` to `C:\Windows\PolicyDefinitions`.
3. Open GPEdit and navigate to `Computer Configuration -> Administrative Templates -> Microsoft Edge -> Printing`
4. Open the `Print headers and footers` policy, set it to `Disabled` and click `OK`.
8. Reboot via `shutdown -r -t 0` or the windows GUI.
### Teardown
1. To escape the experience press `Ctrl+E`
2. Open a admin windows PowerShell prompt
3. Cd to Desktop (C:\Users\<Username>\Desktop
4. Run the psexec command: `psexec.exe -i -s powershell.exe`
5. Run the following script
```powershell
$namespaceName="root\cimv2\mdm\dmmap"
$className="MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = $null
Set-CimInstance -CimInstance $obj
$Splat = @{
'Path' = 'HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout'
'Name' = 'ScanCode Map'
'Force' = $True
}
Remove-ItemProperty @Splat
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh"
$Name = "AllowNewsAndInterests"
If (Test-Path -Path $RegistryPath) {
If (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) {
Remove-ItemProperty -Path $RegistryPath -Name $Name -Force | Out-Null
}
}
```
## With your favourite browser
{{< callout type="warning" >}}
The ability to exit the browser and/or open devtools may be available by default.
Please check if your browser supports a kiosk mode and how to set it up.
{{< /callout >}}
{{< callout type="warning" >}}
Your browser might not support printing without a dialog.
Please check if your browser supports this feature and how to set it up.
{{< /callout >}}
Just open the link in your favourite browser and use the kiosk mode of your browser:
- With auto-printing: <https://kiosk.lauf-fuer-kaya.de/?print=true>
- Without auto-printing: <https://kiosk.lauf-fuer-kaya.de/>

View File

@@ -6,6 +6,7 @@ prev: /
next: /scanstation/install
cascade:
type: docs
lang: de
---
Die Scannerstation ist die Kombination aus Hardware und Software, die dazu genutzt wird Läuferkarten zu scannen und damit gelaufene Distanzen im System zu erfassen.

View File

@@ -6,6 +6,7 @@ prev: /
next: /scanstation/install
cascade:
type: docs
lang: en
---
The scanner station is the combination of hardware and software used to scan runner cards and record the distances run in the system.

View File

@@ -2,6 +2,7 @@
title: Scannerstation Konfig
weight: 3
prev: /scanstation/install
lang: de
---
## Start
@@ -16,7 +17,7 @@ Hier musst du die URL deines LfK-Backends eintragen (z.B.: `https://lauf-fuer-ka
### Client-Token
Als nächstes musst du noch einen Client Token gefragt.
Die Anlage ist unter [Token anlegen](/user/scanstation) beschrieben.
Die Anlage ist unter [Token anlegen](../../user/scanstations) beschrieben.
### Bestätigen

View File

@@ -2,6 +2,7 @@
title: Scanner Station Configuration
weight: 3
prev: /scanstation/install
lang: en
---
## Start
@@ -16,7 +17,7 @@ Here you need to enter the URL of your LfK backend (e.g., `https://lauf-fuer-kay
### Client Token
Next, you will be asked for a Client Token.
The setup is described under [Create Token](/user/scanstation).
The setup is described under [Create Token](../../user/scanstations).
### Confirm

View File

@@ -2,6 +2,7 @@
title: Scannerkonfiguration
weight: 31
prev: /scanstation/config
lang: de
---
{{< callout type="warning" >}}

View File

@@ -2,6 +2,7 @@
title: Scanner Configuration
weight: 32
prev: /scanstation/config
lang: en
---
{{< callout type="warning" >}}

View File

@@ -2,6 +2,7 @@
title: Hardwareempfehlungen
weight: 4
prev: /scanstation/config
lang: de
---
Known-good Hardware, die wir für die Scannerstationen empfehlen können.

View File

@@ -2,6 +2,7 @@
title: Hardware Recommendations
weight: 4
prev: /scanstation/config
lang: en
---
Known-good hardware that we can recommend for the scanning stations.

View File

@@ -3,6 +3,7 @@ title: Scannerstation Installation
weight: 2
prev: /scanstation
next: /scanstation/config
lang: de
---
Es gibt aktuell zwei Varianten, um die Scanclient Software zu installieren/nutzen.

View File

@@ -3,6 +3,7 @@ title: Scannerstation Installation
weight: 2
prev: /scanstation
next: /scanstation/config
lang: en
---
There are currently two ways to install/use the Scanclient software.

View File

@@ -6,6 +6,7 @@ prev: /
next: /selfservice/orgs
cascade:
type: docs
lang: de
---
Der Selfservice bietet Läufer:innen sich selbst für den Lauf zu registrieren und ihre eigenen Daten einzusehen.

View File

@@ -6,6 +6,7 @@ prev: /
next: /selfservice/orgs
cascade:
type: docs
lang: en
---
The self-service allows runners to register themselves for the run and view their own data.

View File

@@ -2,8 +2,13 @@
title: Selfservice für Organisationen
weight: 1
prev: /selfservice
lang: de
---
{{< callout type="warning" >}}
Für den Bürgerlauf gibt es die Org "Citizen" (ID 1), die nicht gelöscht werden sollte.
{{< /callout >}}
Läufer:innen von Firmen und andere Institutionen können sich über den Selfservice für den Lauf registrieren.
So werden sie automatisch im System angelegt und bekommen per Mail einen Link zugesendet, mit dem sie ihre persönlichen Daten und Rundenzeiten ansehen können.

View File

@@ -2,7 +2,11 @@
title: Selfservice for organizations
weight: 1
prev: /selfservice
lang: en
---
{{< callout type="warning" >}}
The org "Citizen" (ID 1) is reserved for the citizen run event and should not be deleted.
{{< /callout >}}
Runners from companies and other institutions can register for the run through the self-service. They will be automatically added to the system and receive a link via email to view their personal data and lap times.

View File

@@ -3,9 +3,10 @@ linkTitle: "Nutzerdokumentation"
title: Einleitung
cascade:
type: docs
lang: de
---
Dieser Teil der Dokumentation befasst sich mit der Bedienung des Läufersystems für normale Nutzer:innen.
Solltest du an der Installation oder Konfiguration interessiert sein schau doch mal in den [Admin](/admins) Bereich.
Solltest du an der Installation oder Konfiguration interessiert sein schau doch mal in den [Admin](../admin) Bereich.
## FAQ

View File

@@ -3,10 +3,11 @@ linkTitle: "Nutzerdokumentation"
title: Einleitung
cascade:
type: docs
lang: en
---
This part of the documentation describes the interaction with the system for normal users.
If you're interested in installing, configuring or administrating the system take a look at the [admin section](/admin).
If you're interested in installing, configuring or administrating the system take a look at the [admin section](../admin).
## FAQ

View File

@@ -1,6 +1,7 @@
---
title: Läuferkarten
weight: 9
lang: de
---
Läuferkarten dienen dazu [Trackscans](../scans) für [Läufer:innen](../runners) durch [Scannerstationen](../scanstations) zu erzeugen

View File

@@ -1,6 +1,7 @@
---
title: Runner Cards
weight: 9
lang: en
---
Runner cards are used to generate [Trackscans](../scans) for [Runners](../runners) through [Scanner Stations](../scanstations).

View File

@@ -1,6 +1,7 @@
---
title: Kontakte
weight: 5
lang: de
---
Kontakte dienen dem Customer Relation Management (CRM) und können beliebig vielen [Teams](../teams) und [Orgs](../teams) zugeordnet werden.

View File

@@ -1,6 +1,7 @@
---
title: Contacts
weight: 5
lang: en
---
Contacts are used for Customer Relation Management (CRM) and can be assigned to any number of [Teams](../teams) and [Orgs](../teams).

View File

@@ -1,6 +1,7 @@
---
title: Sponsoring-Erklärungen
weight: 10
lang: de
---
Das System kann für beliebige [Läufer:innen](../runners), [Teams](../teams) oder ganze [Organisationen](../orgs) Sponsoring-Erklärungen generieren.

View File

@@ -1,6 +1,7 @@
---
title: Sponsorship Declarations
weight: 10
lang: en
---
The system can generate sponsorship declarations for any [runners](../runners), [teams](../teams), or entire [organizations](../orgs).

View File

@@ -1,6 +1,7 @@
---
title: Sponsorings
weight: 9
lang: de
---
Sponsorings können entweder Festbetragsspenden oder Kilometerspenden sein.

View File

@@ -1,6 +1,7 @@
---
title: Donations
weight: 9
lang: en
---
Sponsorships can either be fixed amount donations or kilometer donations.

View File

@@ -1,6 +1,7 @@
---
title: Sponsor:innen
weight: 8
lang: de
---
Sponsor:innen sind die Spender, die mit einen Festbetrag oder eine Kilometerspende den Lauf für Kaya! unterstützen.

View File

@@ -1,6 +1,7 @@
---
title: Donors
weight: 8
lang: en
---
Sponsors are the donors who support the Run for Kaya! with a fixed amount or a per-kilometer donation.

View File

@@ -1,6 +1,7 @@
---
title: Läuferimport
weight: 7
lang: de
---
Um das Eintragen von Läufer:innen ins System zu erleichtern können Läufer aus Excel-Tabellen(CSV, XLSX) importiert werden.

View File

@@ -1,6 +1,7 @@
---
title: Runner Import
weight: 7
lang: en
---
To facilitate the entry of runners into the system, runners can be imported from Excel spreadsheets (CSV, XLSX).

View File

@@ -1,10 +1,14 @@
---
title: Organisationen
weight: 3
lang: de
---
{{< callout type="warning" >}}
Du solltest die Organisation "Citizen" (ID 1 standardmäßig) nicht löschen.
Sie wird für den [Selfservice](../../selfservice) benötigt.
{{< /callout >}}
{{< callout type="info" >}}
Solltest du dich für den Selfservice für Orgs interessieren findest du die Dokumentation zu [hier](/selfservice/orgs).
Solltest du dich für den Selfservice für Orgs interessieren findest du die Dokumentation zu [hier](../../selfservice/orgs).
{{< /callout >}}
Läuferorganisationen sind das Herzstück des Gruppensystems für Läufer.

View File

@@ -1,10 +1,15 @@
---
title: Organizations
weight: 3
lang: en
---
{{< callout type="warning" >}}
You are not allowed to delete the organization "Citizen" (ID 1 by default).
It is required by the [selfservice](../../selfservice)
{{< /callout >}}
{{< callout type="info" >}}
If you are interested in the self-service for organizations, you can find the documentation [here](/selfservice/orgs).
If you are interested in the self-service for organizations, you can find the documentation [here](../../selfservice/orgs).
{{< /callout >}}
Runner organizations are the heart of the group system for runners.

View File

@@ -1,6 +1,7 @@
---
title: Läufer:innen
weight: 6
lang: de
---
Läufer sind das Herzstück des Läufersystems.

View File

@@ -1,6 +1,7 @@
---
title: Runners
weight: 6
lang: en
---
Runners are the heart of the runner system.

View File

@@ -1,6 +1,7 @@
---
title: Scans
weight: 12
lang: de
---
Scans sind das Herzstück der Kilometerzählung - sie verbinden [Läufer:innen](../runners) mit zurückgeleter Distantz.

View File

@@ -1,6 +1,7 @@
---
title: Scans
weight: 12
lang: en
---
Scans are the heart of kilometer tracking - they connect [runners](../runners) with the distance covered.

View File

@@ -1,10 +1,11 @@
---
title: Scannerstationen
weight: 13
lang: de
---
{{< callout type="info" >}}
Die Doku zur Nutzung der [Scannerstationen gibt es hier](/scanstation)
Die Doku zur Nutzung der [Scannerstationen gibt es hier](../../scanstation)
{{< /callout >}}
Scannerstationen sind erstellen Scans für Läuferkarten auf [Tracks](../tracks).

View File

@@ -1,10 +1,11 @@
---
title: Scanner Stations
weight: 13
lang: en
---
{{< callout type="info" >}}
The documentation for using the [scanner stations can be found here](/scanstation)
The documentation for using the [scanner stations can be found here](../../scanstation)
{{< /callout >}}
Scanner stations create scans for runner cards on [Tracks](../tracks).

View File

@@ -1,6 +1,7 @@
---
title: Teams
weight: 4
lang: de
---
Läuferteams sind die Untergruppen des Gruppensystems für Läufer:innen.
Ein Team kann eine Klasse, Abteilung, Gruppe oder ähnliches sein.

View File

@@ -1,6 +1,7 @@
---
title: Teams
weight: 4
lang: en
---
Runner teams are the subgroups of the group system for runners.
A team can be a class, department, group, or similar.

View File

@@ -1,6 +1,7 @@
---
title: Tracks
weight: 11
lang: de
---
Die Tracks sind im System hinterlegte Laufstrecken, auf basis derer die Distanzen für Scans berechnet werden.

View File

@@ -1,6 +1,7 @@
---
title: Tracks
weight: 11
lang: en
---
Tracks are predefined running routes in the system, based on which distances for scans are calculated.

View File

@@ -1,11 +1,12 @@
---
title: Nutzer:innen
weight: 2
lang: de
---
{{< callout type="info" >}}
Administratoren können Nutzer:innen im System anlegen und verwalten.
Mehr Informationen dazu findest du im [Admin](/admin) Bereich.
Mehr Informationen dazu findest du im [Admin](../../admin) Bereich.
{{< /callout >}}
## Passwort vergessen
@@ -23,7 +24,8 @@ Deine E-Mail Adresse eingeben.
### E-Mail bestätigen
Du bekommst eine Mail, du sie hast auf den Link in der Mail klicken
Du bekommst eine Mail.
In dieser klickst du einfach auf den Link.
### Neues Passwort setzen

View File

@@ -1,11 +1,12 @@
---
title: Users
weight: 2
lang: en
---
{{< callout type="info" >}}
Administrators can create and manage users in the system.
You can find more information in the [Admin](/admin) section.
You can find more information in the [Admin](../../admin) section.
{{< /callout >}}
## Forgot Password

3
data/icons.yaml Normal file

File diff suppressed because one or more lines are too long

2
i18n/de.yaml Normal file
View File

@@ -0,0 +1,2 @@
editThisPage: "Diese Seite bearbeiten →"
copyright: 'Erstellt von <a href="https://odit.services/?ref=lfk-docs" target="_blank" rel="noreferrer" style="color:magenta !important; font-weight: bold;">ODIT.Services</a> mit ❤️, <a href="https://gohugo.io/" rel="noreferrer" target="_blank" style="color: rgb(63, 198, 250); font-weight: bold;">Hugo</a> und <a href="https://github.com/imfing/hextra" rel="noreferrer" target="_blank" style="color: rgb(51, 186, 145); font-weight: bold;">dem Hextra Theme</a><br>Entwickelt für den <a href="https://lauf-fuer-kaya.de" target="_blank" rel="noreferrer" style="color: #ebb951; font-weight: bold;">Lauf für Kaya! Spendenlauf</a> <br><a href="https://lauf-fuer-kaya.de/impressum" target="_blank" rel="noreferrer">Impressum</a> | <a href="https://lauf-fuer-kaya.de/datenschutz" target="_blank" rel="noreferrer">Datenschutz</a>'

View File

@@ -1,6 +1,9 @@
user: User
admin: Administrators
selfservice: Selfservice
scanstation: Scaning Stations
scanstation: Scanning Stations
kiosk: Kiosk
beamershow: Beamer Show
search: Search
search: Search
editThisPage: "Edit this page →"
copyright: 'Made by <a href="https://odit.services/?ref=lfk-docs" target="_blank" rel="noreferrer" style="color:magenta !important; font-weight: bold;">ODIT.Services</a> with ❤️, <a href="https://gohugo.io/" rel="noreferrer" target="_blank" style="color: rgb(63, 198, 250); font-weight: bold;">Hugo</a> and <a href="https://github.com/imfing/hextra" rel="noreferrer" target="_blank" style="color: rgb(51, 186, 145); font-weight: bold;">the Hextra theme</a><br>Developed for the <a href="https://lauf-fuer-kaya.de" target="_blank" rel="noreferrer" style="color: #ebb951; font-weight: bold;">Lauf für Kaya! charity run</a> <br><a href="https://lauf-fuer-kaya.de/impressum" target="_blank" rel="noreferrer">Imprint</a> | <a href="https://lauf-fuer-kaya.de/datenschutz" target="_blank" rel="noreferrer">Privacy</a>'

View File

@@ -1,4 +0,0 @@
<div style="text-align: center; width: 100%;"></div>
Made by <a href="https://odit.services/?ref=lfk-docs" target="_blank" rel="noreferrer">ODIT.Services</a> with ❤️ <br>
Developed for <a href="https://lauf-fuer-kaya.de" target="_blank" rel="noreferrer">Lauf für Kaya</a> | <a href="https://lauf-fuer-kaya.de/impressum" target="_blank" rel="noreferrer">Imprint</a> | <a href="https://lauf-fuer-kaya.de/datenschutz" target="_blank" rel="noreferrer">Privacy</a>
</div>

View File

@@ -0,0 +1,49 @@
{{- $enableFooterSwitches := .Scratch.Get "enableFooterSwitches" | default false -}}
{{- $displayThemeToggle := site.Params.theme.displayToggle | default true -}}
{{- $footerSwitchesVisible := and $enableFooterSwitches (or hugo.IsMultilingual $displayThemeToggle) -}}
{{- $copyrightSectionVisible := or (.Site.Params.footer.displayPoweredBy | default true) .Site.Params.footer.displayCopyright -}}
{{- $copyright := (T "copyright") | default "© 2024 Hextra." -}}
{{- $poweredBy := (T "poweredBy") | default "Powered by Hextra" -}}
{{- $footerWidth := "hx-max-w-screen-xl" -}}
{{- with .Site.Params.footer.width -}}
{{ if eq . "wide" -}}
{{ $footerWidth = "hx-max-w-[90rem]" -}}
{{ else if eq . "full" -}}
{{ $footerWidth = "max-w-full" -}}
{{ end -}}
{{- end -}}
<footer class="hextra-footer hx-bg-gray-100 hx-pb-[env(safe-area-inset-bottom)] dark:hx-bg-neutral-900 print:hx-bg-transparent">
{{- if $footerSwitchesVisible -}}
<div class="hx-mx-auto hx-flex hx-gap-2 hx-py-2 hx-px-4 {{ $footerWidth }}">
{{- partial "language-switch.html" (dict "context" .) -}}
{{- with $displayThemeToggle }}{{ partial "theme-toggle.html" }}{{ end -}}
</div>
{{- if or hugo.IsMultilingual $displayThemeToggle -}}
<hr class="dark:hx-border-neutral-800" />
{{- end -}}
{{- end -}}
{{- if $copyrightSectionVisible -}}
<div
class="{{ $footerWidth }} hx-mx-auto hx-flex hx-justify-center hx-py-1 hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-right),1.5rem)] hx-text-gray-600 dark:hx-text-gray-400 md:hx-justify-start"
>
<div class="hx-flex hx-w-full hx-flex-col sm:hx-items-start">
{{- if .Site.Params.footer.displayCopyright }}<div class="hx-mt-1 hx-text-xs">{{ $copyright | markdownify }}</div>{{- end -}}
</div>
</div>
{{- end -}}
</footer>
{{- define "theme-credit" -}}
<a class="hx-flex hx-text-sm hx-items-center hx-gap-1 hx-text-current" target="_blank" rel="noopener noreferrer" title="Hextra GitHub Homepage" href="https://github.com/imfing/hextra">
<span>
{{- . | markdownify -}}
{{- if strings.Contains . "Hextra" -}}
{{- partial "utils/icon.html" (dict "name" "hextra" "attributes" `height=1em class="hx-inline-block ltr:hx-ml-1 rtl:hx-mr-1 hx-align-[-2.5px]"`) -}}
{{- end -}}
</span>
</a>
{{- end -}}

View File

@@ -1,33 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
argocd-image-updater.argoproj.io/image-list: docs=registry.odit.services/lfk/docs:latest
argocd-image-updater.argoproj.io/write-back-method: argocd
argocd-image-updater.argoproj.io/update-strategy: digest
argocd-image-updater.argoproj.io/docs.pull-secret: pullsecret:argocd/registry-odit-services
name: docs-lfk-de
namespace: argocd
spec:
project: lfk
source:
repoURL: "git@git.odit.services:lfk/docs.git"
path: .argo
targetRevision: main
destination:
name: odit-h2
namespace: lfk
syncPolicy:
automated:
prune: true
selfHeal: true
allowEmpty: false
syncOptions:
- PruneLast=true
- CreateNamespace=true
retry:
limit: 5
backoff:
duration: 20s
factor: 2
maxDuration: 7m

View File

@@ -1,14 +0,0 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: docs-lfk-de-cert
namespace: lfk
spec:
commonName: docs.lauf-fuer-kaya.de
secretName: docs-lfk-de-cert
dnsNames:
- docs.lauf-fuer-kaya.de
issuerRef:
name: letsencrypt-prod-dns
kind: ClusterIssuer

View File

@@ -1,58 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: docs-lfk-de
namespace: lfk
labels:
app: docs-lfk-de
spec:
replicas: 1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: docs-lfk-de
template:
metadata:
labels:
app: docs-lfk-de
spec:
containers:
- name: docs-lfk-de
image: registry.odit.services/lfk/docs:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: web
resources:
requests:
cpu: 50m
memory: 10Mi
limits:
cpu: 100m
memory: 128Mi
readinessProbe:
httpGet:
path: /health/
port: 80
initialDelaySeconds: 5
periodSeconds: 3
successThreshold: 4
livenessProbe:
httpGet:
path: /health/
port: 80
initialDelaySeconds: 5
periodSeconds: 3
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 10"]
imagePullSecrets:
- name: registry-odit-services
restartPolicy: Always

View File

@@ -1,12 +0,0 @@
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
name: docs-lfk-de-dns
namespace: lfk
spec:
endpoints:
- dnsName: docs.lauf-fuer-kaya.de
recordTTL: 180
recordType: CNAME
targets:
- k.odit.services

View File

@@ -1,17 +0,0 @@
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: docs-lfk-de
namespace: lfk
spec:
entryPoints:
- websecure
routes:
- match: Host(`docs.lauf-fuer-kaya.de`)
kind: Rule
services:
- name: docs-lfk-de
port: 80
tls:
secretName: docs-lfk-de-cert

View File

@@ -1,7 +0,0 @@
namespace: lfk
resources:
- deployment.yaml
- service.yaml
- ingress.yaml
- cert.yaml
- dns.yaml

View File

@@ -1,15 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: docs-lfk-de
namespace: lfk
labels:
app: docs-lfk-de
spec:
ports:
- port: 80
name: web
selector:
app: docs-lfk-de
type: ClusterIP

View File

@@ -1,140 +0,0 @@
# ---> VisualStudioCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/i18n-ally-custom-framework.yml
*.code-workspace
# Local History for Visual Studio Code
.history/
# ---> Node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
yarn.lock
package-lock.json
build
*.sqlite
*.sqlite-jurnal
/docs
lib
/oss-attribution
*.tmp

142
legacy/.gitignore vendored
View File

@@ -1,142 +0,0 @@
# ---> VisualStudioCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/i18n-ally-custom-framework.yml
*.code-workspace
# Local History for Visual Studio Code
.history/
# ---> Node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
yarn.lock
package-lock.json
build
*.sqlite
*.sqlite-jurnal
/docs
lib
/oss-attribution
*.tmp
pnpm-lock.yaml
.argo/secret.yaml

View File

@@ -1,12 +0,0 @@
pids
logs
node_modules
npm-debug.log
coverage/
run
dist
.DS_Store
.nyc_output
.basement
config.local.js
basement_dist

View File

@@ -1,20 +0,0 @@
steps:
- name: build latest
image: woodpeckerci/plugin-docker-buildx
settings:
repo: registry.odit.services/lfk/docs
tags:
- latest
registry: registry.odit.services
platforms: linux/amd64,linux/arm64
cache_from: registry.odit.services/lfk/docs:latest
username:
from_secret: odit-registry-builder-username
password:
from_secret: odit-registry-builder-password
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
when:
branch: main
event: push

View File

@@ -1,14 +0,0 @@
FROM registry.odit.services/hub/library/node:16-alpine3.16 AS build
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
WORKDIR /app
COPY package.json *.config.cjs *.config.js ./
RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@7.29.3
RUN pnpm i
COPY . ./
RUN pnpm build
# final image
FROM registry.odit.services/library/nginx-brotli:latest
COPY --from=build /app/src/.vuepress/dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf

View File

@@ -1,34 +0,0 @@
# @lfk/documentation
The documentation for the LfK! 'Läufersystem'.
Powered by Vuepress.
The main language for the content is German (since our primary target audience is the Lauf für Kaya! Team at a local German school).
## Quickstart 🐳
> Use this to run the documentation server via docker.
1. Clone the repo or copy the docker-compose.yml
2. Cd into the folder containing the docker-compose.yml
2. Run docker-compose: `docker-compose up -d`
3. Visit http://127.0.0.1:8080/ to check if the server is running
## Dev Setup 🛠
> Local dev setup for previewing changes.
1. Install Dependencies
```bash
yarn
```
2. Start the server
```bash
yarn dev
```
## Recommended Editor
[Visual Studio Code](https://code.visualstudio.com/)
### Recommended Extensions
* will be automatically recommended via ./vscode/extensions.json

View File

@@ -1,6 +0,0 @@
version: "3.3"
services:
httpd:
build: .
ports:
- 8080:80

View File

@@ -1,113 +0,0 @@
# vuepress-plugin-flexsearch
**Author**: Ahmad Mostafa
**Repo**: https://github.com/z3by/vuepress-plugin-flexsearch
**License**: MIT
**Description**: Next-Generation full text search library for Vuepress
## License Text
MIT License
Copyright (c) 2020 Ahmad Mostafa
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# vuepress-theme-default-prefers-color-scheme
**Author**: tolking <qw13131wang@gmail.com>
**Repo**: https://github.com/tolking/vuepress-theme-default-prefers-color-scheme
**License**: MIT
**Description**: add prefers-color-scheme for vuepress default theme
## License Text
The MIT License (MIT)
Copyright 2019 tolking <qw13131wang@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# @odit/license-exporter
**Author**: ODIT.Services
**Repo**: https://git.odit.services/odit/license-exporter
**License**: MIT
**Description**: A simple license crawler for crediting open source work
## License Text
MIT License Copyright (c) 2020 ODIT.Services (info@odit.services)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# vuepress
**Author**: Evan You
**Repo**: https://github.com/vuejs/vuepress
**License**: MIT
**Description**: Minimalistic doc generator with Vue component based layout system
## License Text
The MIT License (MIT)
Copyright (c) 2018-present, Yuxi (Evan) You
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,47 +0,0 @@
events {
}
http {
include mime.types;
sendfile on;
server {
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html;
}
# --- Brotli
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
# --- GZIP
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types application/javascript
application/rss+xml
application/vnd.ms-fontobject
application/x-font
application/x-font-opentype
application/x-font-otf
application/x-font-truetype
application/x-font-ttf
application/x-javascript
application/xhtml+xml
application/xml
font/opentype
font/otf
font/ttf
image/svg+xml
image/x-icon
text/css
text/javascript
text/plain
text/xml;
}
}

View File

@@ -1,44 +0,0 @@
{
"name": "@odit/lfk-docs",
"version": "0.0.1",
"description": "The documentation for the LfK! 'Läufersystem'.",
"main": "index.js",
"author": {
"name": "ODIT.Services",
"email": "info@odit.services",
"url": "https://odit.services"
},
"contributors": [
{
"name": "Philipp Dormann",
"email": "philipp@philippdormann.de",
"url": "https://philippdormann.de"
},
{
"name": "Nicolai Ort",
"email": "info@nicolai-ort.com",
"url": "https://nicolai-ort.com"
}
],
"repository": {
"type": "git",
"url": "git@git.odit.services:lfk/docs.git"
},
"scripts": {
"dev": "vuepress dev src",
"build": "vuepress build src",
"licenses:export": "license-exporter --markdown"
},
"license": "CC-BY-NC-SA-4.0",
"devDependencies": {
"@odit/license-exporter": "0.0.12",
"vuepress": "1.9.9"
},
"dependencies": {
"vuepress-plugin-flexsearch": "0.3.0",
"vuepress-theme-default-prefers-color-scheme": "2.0.0"
},
"volta": {
"node": "16.15.1"
}
}

View File

@@ -1,15 +0,0 @@
<template>
<p class="demo">
{{ msg }}
</p>
</template>
<script>
export default {
data () {
return {
msg: 'Hello this is <Foo-Bar>'
}
}
}
</script>

View File

@@ -1,3 +0,0 @@
<template>
<p class="demo">This is another component</p>
</template>

Some files were not shown because too many files have changed in this diff Show More