Compare commits
32 Commits
Author | SHA1 | Date | |
---|---|---|---|
029ff239cc | |||
42323d94d8 | |||
2cbe906d47 | |||
f8dea737d4 | |||
4233361d65 | |||
4d2c993ba2 | |||
1497fa19d0 | |||
486115eb1b | |||
215fcc9f91 | |||
1b93f54a76 | |||
d3c71353cc | |||
5d26fa8c33 | |||
b22d130631 | |||
813db4de78 | |||
3b0eb9ec46 | |||
3b84480a31 | |||
250e27c92e | |||
3b88ff42f3 | |||
7a9d498d96 | |||
685006f629 | |||
e05e54fae7 | |||
b81a6092f5 | |||
9cc7c7f27c | |||
6c909a8374 | |||
b828322da1 | |||
95f8aa6fcd | |||
09853639cd | |||
759376ca13 | |||
3e7e82c8b5 | |||
d2ed34fe2b | |||
0473960c1a | |||
75d0af185c |
@ -26,4 +26,5 @@ jobs:
|
||||
push: true
|
||||
tags: |
|
||||
${{ vars.REGISTRY }}/lfk/docs:latest
|
||||
${{ vars.REGISTRY }}/lfk/docs:main-${{ gitea.run_number }}
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
@ -2,7 +2,7 @@ FROM hugomods/hugo:exts AS build
|
||||
WORKDIR /app
|
||||
|
||||
COPY . /app/
|
||||
COPY .git /app/.git
|
||||
# COPY .git /app/.git
|
||||
RUN hugo
|
||||
|
||||
FROM hugomods/hugo:nginx
|
||||
|
17
config.yaml
@ -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:
|
||||
@ -61,24 +61,31 @@ menu:
|
||||
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
|
||||
- name: Sourcecode
|
||||
weight: 7
|
||||
weight: 9
|
||||
url: "https://git.odit.services/lfk"
|
||||
params:
|
||||
icon: gitea
|
||||
|
||||
params:
|
||||
description: Dokumentation für das Lauf für Kaya! Läufersystem.
|
||||
displayUpdatedDate: true
|
||||
navbar:
|
||||
displayTitle: true
|
||||
displayLogo: true
|
||||
|
@ -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>
|
||||
@ -49,6 +50,12 @@ layout: hextra-home
|
||||
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."
|
||||
|
@ -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>
|
||||
@ -49,6 +50,12 @@ layout: hextra-home
|
||||
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."
|
||||
|
@ -6,6 +6,7 @@ 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.
|
||||
|
@ -6,6 +6,7 @@ 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.
|
||||
|
@ -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!
|
||||
|
@ -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!
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -3,6 +3,7 @@ title: Manage Users
|
||||
weight: 3
|
||||
prev: /admin/quickstart
|
||||
next: /admin/usergroups
|
||||
lang: en
|
||||
---
|
||||
|
||||
As an admin, you can create users.
|
||||
|
@ -6,6 +6,7 @@ prev: /
|
||||
next: /beamershow/config
|
||||
cascade:
|
||||
type: docs
|
||||
lang: de
|
||||
---
|
||||
|
||||
Die Beamershow zeigt live Statistiken zum aktuellen Event an.
|
||||
|
@ -6,6 +6,7 @@ prev: /
|
||||
next: /beamershow/config
|
||||
cascade:
|
||||
type: docs
|
||||
lang: en
|
||||
---
|
||||
|
||||
The beamer show displays live statistics for the current event.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Beamershow Konfig
|
||||
weight: 1
|
||||
prev: /beamershow
|
||||
lang: de
|
||||
---
|
||||
|
||||
## Start
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Beamershow Config
|
||||
weight: 1
|
||||
prev: /beamershow
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Start
|
||||
|
80
content/blog/2025-04-25_newfeatures.de.md
Normal 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>
|
||||
|
||||

|
||||
|
||||
## 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.
|
70
content/blog/2025-04-25_newfeatures.en.md
Normal 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.
|
33
content/blog/2025-04-28_anonymous-donations.de.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
33
content/blog/2025-04-28_anonymous-donations.en.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
73
content/blog/2025-05-19_newfeatures.de.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||

|
||||
|
||||
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.
|
||||

|
73
content/blog/2025-05-19_newfeatures.en.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||

|
||||
|
||||
## 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).
|
||||

|
||||
|
||||
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.
|
||||

|
11
content/blog/_index.de.md
Normal 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
@ -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>
|
23
content/kiosk/_index.de.md
Normal 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.
|
23
content/kiosk/_index.en.md
Normal 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.
|
28
content/kiosk/config.de.md
Normal 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 %}}
|
28
content/kiosk/config.en.md
Normal 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
@ -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
@ -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/>
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Scannerstation Konfig
|
||||
weight: 3
|
||||
prev: /scanstation/install
|
||||
lang: de
|
||||
---
|
||||
|
||||
## Start
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Scanner Station Configuration
|
||||
weight: 3
|
||||
prev: /scanstation/install
|
||||
lang: en
|
||||
---
|
||||
|
||||
## Start
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Scannerkonfiguration
|
||||
weight: 31
|
||||
prev: /scanstation/config
|
||||
lang: de
|
||||
---
|
||||
|
||||
{{< callout type="warning" >}}
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Scanner Configuration
|
||||
weight: 32
|
||||
prev: /scanstation/config
|
||||
lang: en
|
||||
---
|
||||
|
||||
{{< callout type="warning" >}}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -3,6 +3,7 @@ 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](../admin) Bereich.
|
||||
|
@ -3,6 +3,7 @@ linkTitle: "Nutzerdokumentation"
|
||||
title: Einleitung
|
||||
cascade:
|
||||
type: docs
|
||||
lang: en
|
||||
---
|
||||
|
||||
This part of the documentation describes the interaction with the system for normal users.
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Sponsorings
|
||||
weight: 9
|
||||
lang: de
|
||||
---
|
||||
|
||||
Sponsorings können entweder Festbetragsspenden oder Kilometerspenden sein.
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Donations
|
||||
weight: 9
|
||||
lang: en
|
||||
---
|
||||
|
||||
Sponsorships can either be fixed amount donations or kilometer donations.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
@ -1,8 +1,12 @@
|
||||
---
|
||||
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).
|
||||
{{< /callout >}}
|
||||
|
@ -1,8 +1,13 @@
|
||||
---
|
||||
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).
|
||||
{{< /callout >}}
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Läufer:innen
|
||||
weight: 6
|
||||
lang: de
|
||||
---
|
||||
|
||||
Läufer sind das Herzstück des Läufersystems.
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Runners
|
||||
weight: 6
|
||||
lang: en
|
||||
---
|
||||
|
||||
Runners are the heart of the runner system.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Scannerstationen
|
||||
weight: 13
|
||||
lang: de
|
||||
---
|
||||
|
||||
{{< callout type="info" >}}
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Scanner Stations
|
||||
weight: 13
|
||||
lang: en
|
||||
---
|
||||
|
||||
{{< callout type="info" >}}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Nutzer:innen
|
||||
weight: 2
|
||||
lang: de
|
||||
---
|
||||
|
||||
{{< callout type="info" >}}
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Users
|
||||
weight: 2
|
||||
lang: en
|
||||
---
|
||||
|
||||
{{< callout type="info" >}}
|
||||
|
@ -2,6 +2,7 @@ user: User
|
||||
admin: Administrators
|
||||
selfservice: Selfservice
|
||||
scanstation: Scanning Stations
|
||||
kiosk: Kiosk
|
||||
beamershow: Beamer Show
|
||||
search: Search
|
||||
editThisPage: "Edit this page →"
|
||||
|
BIN
static/files/psexec.exe
Normal file
BIN
static/images/blog/2025-04-28_anonymous-donations_add.png
Normal file
After Width: | Height: | Size: 316 KiB |
BIN
static/images/blog/2025-04-28_anonymous-donations_overview.png
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
static/images/blog/2025-05-19_feedback_admin.png
Normal file
After Width: | Height: | Size: 270 KiB |
BIN
static/images/blog/2025-05-19_feedback_form.png
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
static/images/blog/2025-05-19_mobile_scanclient.png
Normal file
After Width: | Height: | Size: 234 KiB |
BIN
static/images/blog/2025-05-19_replace_card.png
Normal file
After Width: | Height: | Size: 243 KiB |
BIN
static/images/blog/2025-05-19_sponsoring_quick_add.png
Normal file
After Width: | Height: | Size: 253 KiB |
BIN
static/images/cardassign.mp4
Normal file
BIN
static/images/kiosk.jpg
Normal file
After Width: | Height: | Size: 3.1 MiB |