Sechs Erweiterungen sind zusammengekommen — Logo im Code, Freigabe je Gruppe, Domain-Check, Dublettenpruefung, Filter nach Art und die Kurzhilfe zu den Domains. Dafuer eine neue Minor-Version. Zwei Stellen waren schlicht falsch und wiegen schwerer als jede Luecke: Anleitung und Funktionsuebersicht behaupteten beide noch, statische Codes wuerden "nicht gespeichert" — ueberholt seit 1.5.0. Ebenso die Aussage, nur "Website" sei ausprogrammiert; das gilt seit 1.1.0 fuer alle fuenfzehn. Danach die Luecken: Jedes der sechs Features steht jetzt in allen drei Dokumenten, die es betrifft. Die Bedienungsanleitung hatte keines davon. Die Roadmap verliert die zwei gebauten Punkte und bekommt einen neuen aus der Umsetzung: Die Gestaltung eines gespeicherten Codes laesst sich ueberhaupt nicht aendern, ein Logo also nur ueber die Schnittstelle nachruesten. Die Kurzhilfe verwies unter "Nachpruefen" noch auf curl, obwohl seit #7 der Pruefen-Knopf danebensteht.
151 lines
6.4 KiB
Markdown
151 lines
6.4 KiB
Markdown
# Roadmap
|
|
|
|
Was gebaut ist, was als Nächstes kommt und was danach denkbar wäre. Die
|
|
Aufwände sind grobe Einschätzungen, keine Zusagen.
|
|
|
|
---
|
|
|
|
## Gebaut
|
|
|
|
Der vollständige Verlauf mit Versionsnummern steht im
|
|
[Changelog](../CHANGELOG.md) — und in der Anwendung selbst unter
|
|
**Version und Änderungen**, erreichbar über die Versionsnummer in der
|
|
Fußzeile.
|
|
|
|
Kurz gefasst: Version 1.0.0 (13.08.2026) brachte das Grundgerüst mit dem Typ
|
|
Website, 1.1.0 alle fünfzehn Typen samt Anmeldung, Gruppen und Domains,
|
|
1.2.0 Single Sign-on und die Sicherheitsdurchsicht, 1.3.0 Erscheinungsbild
|
|
und Dark Mode, 1.4.0 sprechende Kurz-Links, 1.5.0 benennbare statische Codes,
|
|
1.6.0 den Versionshinweis und 1.7.0 sechs Erweiterungen auf einmal — Logo im
|
|
Code, Freigabe je Gruppe, Domain-Check, Dublettenprüfung, Filter nach Art und
|
|
die Kurzhilfe zu den Domains.
|
|
|
|
Damit sind zwei Punkte erledigt, die hier lange unter „Als Nächstes“ standen:
|
|
**QR-Typen je Gruppe freigeben** und **Logo im QR-Code**.
|
|
|
|
---
|
|
|
|
## Als Nächstes
|
|
|
|
In dieser Reihenfolge. Die Einschätzungen sind grobe Hausnummern für eine
|
|
Person, die den Code kennt.
|
|
|
|
### 1. Statistik über die Zeit · mittel
|
|
|
|
Der Zähler weiß heute nur, wie oft und wann zuletzt. Gebraucht wird der
|
|
Verlauf: Wie lief die Kampagne in den ersten Tagen, wann ist Ruhe
|
|
eingekehrt?
|
|
|
|
Geplant: eine Tabelle mit einer Zeile je Code und Tag, dazu ein Diagramm in
|
|
der Codeansicht und die Zahlen der letzten 7, 30 und 365 Tage.
|
|
|
|
Bewusst **ohne** Herkunft, Gerät oder Verweisseite. Ein reiner Tageszähler
|
|
sagt nichts über einzelne Menschen aus und braucht deshalb weder Einwilligung
|
|
noch Löschfristen. Wer mehr will, muss sich mit beidem befassen — das ist eine
|
|
andere Entscheidung als „ein Diagramm wäre schön“.
|
|
|
|
### 2. Papierkorb statt Löschen · klein
|
|
|
|
Heute ist ein gedruckter Code nach einem Fehlklick unwiederbringlich tot,
|
|
samt seiner Dateien und Rückmeldungen.
|
|
|
|
Geplant: Gelöschte Codes 30 Tage aufheben und dann endgültig entfernen. In
|
|
„Meine Codes“ ein Reiter „Papierkorb“ mit Wiederherstellen. Solange ein Code
|
|
im Papierkorb liegt, bleibt sein Slug belegt — sonst könnte ihn ein neuer Code
|
|
bekommen und die gedruckten Codes zeigten plötzlich woandershin.
|
|
|
|
### 3. Ablaufdatum und Zeitsteuerung · mittel
|
|
|
|
Ein Code, der ab einem Datum woandershin führt oder abläuft — für
|
|
Veranstaltungen, Aktionen und Aushänge mit Verfallsdatum.
|
|
|
|
Geplant, in zwei Stufen:
|
|
|
|
- **Ablauf:** ab einem Zeitpunkt zeigt der Code eine erklärende Seite statt
|
|
des Ziels. Wichtig ist der Text — wer davorsteht, soll erfahren, dass die
|
|
Aktion vorbei ist, nicht dass „etwas nicht gefunden“ wurde.
|
|
- **Zeitplan:** mehrere Ziele mit Gültigkeitsfenstern, damit derselbe
|
|
Aufsteller montags auf die Mittagskarte und samstags auf die Veranstaltung
|
|
zeigt.
|
|
|
|
Zu bedenken: Zeitzonen und die Frage, was beim Bearbeiten mit vergangenen
|
|
Fenstern geschieht.
|
|
|
|
### 4. Gestaltung eines gespeicherten Codes ändern · klein
|
|
|
|
Aufgefallen beim Einbau des Logos: In „Meine Codes“ lässt sich die Gestaltung
|
|
eines abgelegten Codes gar nicht mehr anfassen — weder Farben noch Größe noch
|
|
Logo. Wer ein Logo nachrüsten will, kommt nur über die Schnittstelle daran.
|
|
|
|
Bei einem **dynamischen** Code ist das unnötig streng: Das gedruckte Bild
|
|
bleibt zwar, wie es ist, aber der erneute Download soll ja gerade die neue
|
|
Gestaltung tragen. Geplant: derselbe Gestaltungsbereich wie im Generator, im
|
|
Bearbeiten-Dialog.
|
|
|
|
Bei einem **statischen** Code bleibt es beim Nein — er ist ein Schnappschuss,
|
|
und eine geänderte Gestaltung ergäbe ein anderes Bild als das gedruckte.
|
|
|
|
---
|
|
|
|
## Später denkbar
|
|
|
|
**Das Fenster der Ersteinrichtung schließen** · klein
|
|
Heute wird das erste Konto ohne jede Legitimation angelegt und ist gleich
|
|
Administrator. Wer die Anwendung öffentlich stellt, bevor er sein Konto
|
|
angelegt hat, kann sie an einen Fremden verlieren. Vorschlag: ein einmaliges
|
|
Token, das beim ersten Start ins Protokoll geschrieben wird und für die
|
|
Ersteinrichtung nötig ist. Klein im Aufwand — und das Erste, was zu tun ist,
|
|
falls die Anwendung je aus dem eigenen Netz herausgeht. Siehe
|
|
[sicherheit.md](sicherheit.md).
|
|
|
|
**Codes exportieren** · klein
|
|
Eine CSV aller Codes einer Gruppe mit Name, Kurz-URL, Ziel und Scans — für
|
|
die Übergabe an eine Druckerei oder die Ablage.
|
|
|
|
**Codes duplizieren** · klein
|
|
„Wie dieser, aber mit anderem Ziel“ — bei vielen ähnlichen Projekten spart
|
|
das jedes Mal ein paar Minuten.
|
|
|
|
**Stapelverarbeitung** · mittel
|
|
Eine CSV hochladen und daraus 200 Codes erzeugen, als ZIP zurück. Sinnvoll,
|
|
sobald jedes Produkt oder jeder Tisch einen eigenen Code bekommt.
|
|
|
|
**Gruppen aus dem Verzeichnis übernehmen** · mittel
|
|
Die OIDC-Anbindung übernimmt heute bewusst nur die Identität. Eine Zuordnung
|
|
von Verzeichnisgruppen zu Gruppen dieser Anwendung ist möglich, braucht aber
|
|
eine klare Regel dafür, was mit von Hand vergebenen Rollen geschieht — sonst
|
|
verliert jemand beim nächsten Anmelden stillschweigend seine Rechte.
|
|
|
|
**Passwortgeschützte Landingpages** · mittel
|
|
Für Unterlagen, die nicht jeder sehen soll, der den Aushang fotografiert.
|
|
Heute ist die Empfehlung klar: Vertrauliches gehört nicht hinter einen
|
|
offenen QR-Code.
|
|
|
|
**Dateien außerhalb der Datenbank** · mittel
|
|
Heute liegen Uploads in PostgreSQL, damit es bei einem Volumen bleibt. Wer
|
|
sehr viele oder sehr große Dateien ablegt, will sie irgendwann auf einem
|
|
Objektspeicher (S3) haben. Der Wechsel betrifft nur `src/lib/uploads.ts` und
|
|
die Auslieferungsroute — aber auch die Sicherungsstrategie.
|
|
|
|
**Erscheinungsbild je Gruppe** · groß
|
|
Seit dem 16.08. lassen sich Name, Logo, Favicon und Farbe für die ganze
|
|
Installation einstellen. Der nächste Schritt wäre, das je Gruppe zu erlauben
|
|
und die Landingpages mit dem Logo der jeweiligen Gruppe zu versehen — damit
|
|
eine gescannte Seite nach der Firma aussieht, der sie gehört. Technisch
|
|
überschaubar, gestalterisch eine eigene Aufgabe; es braucht Grenzen, damit
|
|
nichts Unlesbares entsteht.
|
|
|
|
**Mehrsprachige Oberfläche** · groß
|
|
Die Anwendung ist durchgehend deutsch, auch in den Fehlermeldungen und den
|
|
Landingpages. Eine zweite Sprache berührt jede Datei.
|
|
|
|
---
|
|
|
|
## Wie ein neuer Typ dazukommt
|
|
|
|
Falls doch noch einer fehlt: Er besteht aus einem Modul in
|
|
`src/lib/qr/types/`, einer Formular-Komponente, je einem Registry-Eintrag und
|
|
— wenn er eine eigene Seite braucht — einer Landingpage. Am übrigen Code
|
|
ändert sich nichts. Näheres im [README](../README.md), Abschnitt „Einen
|
|
weiteren Typ ergänzen“.
|