Version 1.3.0
This commit is contained in:
+19
-8
@@ -4,16 +4,27 @@ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.
|
||||
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
|
||||
Versionierung nach [Semantic Versioning](https://semver.org/lang/de/).
|
||||
|
||||
## [Unreleased] – 1.3.0 (in Arbeit, Branch `feature/v1.3`)
|
||||
## [1.3.0] – 2026-07-18
|
||||
|
||||
### Geplant
|
||||
- Mehrsprachigkeit (mind. Deutsch, Englisch, Polnisch) für die
|
||||
öffentliche Speisekarte: automatische Übersetzung neu angelegter
|
||||
Einträge mit anschließender manueller Korrekturmöglichkeit
|
||||
### Hinzugefügt
|
||||
- Mehrsprachigkeit für die komplette Anwendung (Deutsch, Englisch,
|
||||
Polnisch): Sprachumschalter (Cookie-basiert, kein Neuladen der
|
||||
Seite nötig), sämtliche Oberflächentexte übersetzt
|
||||
- Gerichte, Bereiche, Allergene und Zusatzstoffe zusätzlich mit
|
||||
englischem/polnischem Namen; öffentliche Speisekarte zeigt je nach
|
||||
gewählter Sprache automatisch den passenden Namen (Fallback:
|
||||
Deutsch, falls keine Übersetzung hinterlegt ist)
|
||||
- Automatische Übersetzung per DeepL: Button „Automatisch übersetzen“
|
||||
beim Anlegen/Bearbeiten von Gerichten, Allergenen und Zusatzstoffen;
|
||||
Ergebnis bleibt danach manuell korrigierbar. Aktivierung über die
|
||||
neue Docker-Variable `DEEPL_API_KEY` – ohne Key bleibt der Button
|
||||
inaktiv, die Felder lassen sich weiterhin von Hand ausfüllen
|
||||
- Rezeptvorschläge im öffentlichen Bereich: nicht angemeldete
|
||||
Besucher können Gerichte vorschlagen (mit Dublettenprüfung gegen
|
||||
bestehende Gerichte); Kantinen-Team sichtet und übernimmt
|
||||
Vorschläge im internen Bereich
|
||||
Besucher können über „Rezept vorschlagen“ ein fehlendes Gericht
|
||||
vorschlagen (Name + optionale Beschreibung), inkl. Dublettenprüfung
|
||||
gegen bestehende Gerichte und einfachem Honeypot-Spamschutz
|
||||
- Neue Seite „Vorschläge“ im Kantinen-Bereich: eingereichte Vorschläge
|
||||
sichten, als Gericht übernehmen oder ablehnen
|
||||
|
||||
### Behoben
|
||||
- Passwort-wiederholen-Feld beim Bearbeiten eines Benutzers erschien
|
||||
|
||||
@@ -14,8 +14,8 @@ markieren die jeweiligen Versionsstände (`git tag`).
|
||||
|
||||
| Bereich | Funktionen |
|
||||
| --- | --- |
|
||||
| Öffentlich (ohne Login) | Wochenplan Mo–Fr mit den Bereichen Brotzeit (09:00–10:00), Mittagessen, Mittagessen vegetarisch und Suppe (je 11:30–13:30); Navigation vorherige/nächste Woche/Heute; auf schmalen Bildschirmen umschaltbare Tages-/Wochenansicht (Tag ist Standard); Logo zentriert über der Karte; Allergen-/Zusatzstoff-Kürzel je Gericht, Legende unterhalb der Karte |
|
||||
| Kantinen-Team (`/intern`) | Gerichte anlegen/bearbeiten/löschen (inkl. Live-Suche und Mehrfachauswahl zum Batch-Löschen) mit Allergenen/Zusatzstoffen je Gericht; Gerichte Tagen/Bereichen zuweisen (mehrere pro Zelle) und wieder entfernen; globale Allergen-/Zusatzstofflisten pflegen; eigenes Konto verwalten (Name, E-Mail, Passwort, Passkeys, Passwort-Anmeldung an/aus) |
|
||||
| Öffentlich (ohne Login) | Wochenplan Mo–Fr mit den Bereichen Brotzeit (09:00–10:00), Mittagessen, Mittagessen vegetarisch und Suppe (je 11:30–13:30); Navigation vorherige/nächste Woche/Heute; auf schmalen Bildschirmen umschaltbare Tages-/Wochenansicht (Tag ist Standard); Logo zentriert über der Karte; Allergen-/Zusatzstoff-Kürzel je Gericht, Legende unterhalb der Karte; Sprachumschalter Deutsch/Englisch/Polnisch; Rezeptvorschläge einreichen |
|
||||
| Kantinen-Team (`/intern`) | Gerichte anlegen/bearbeiten/löschen (inkl. Live-Suche, Mehrfachauswahl zum Batch-Löschen, englischem/polnischem Namen mit automatischer DeepL-Übersetzung) mit Allergenen/Zusatzstoffen je Gericht; Gerichte Tagen/Bereichen zuweisen (mehrere pro Zelle) und wieder entfernen; globale Allergen-/Zusatzstofflisten pflegen (ebenfalls mehrsprachig); eingereichte Rezeptvorschläge sichten, übernehmen oder ablehnen; eigenes Konto verwalten (Name, E-Mail, Passwort, Passkeys, Passwort-Anmeldung an/aus) |
|
||||
| Admin (`/admin`) | Kantinenmitarbeiter anlegen/bearbeiten/löschen (inkl. Passwort-Reset mit Wiederholung und Rollenvergabe); Farbgebung der Speisekarte anpassen; Logo und Favicon hochladen/entfernen |
|
||||
|
||||
Anmeldung mit E-Mail + Passwort oder alternativ per **Passkey**
|
||||
@@ -23,16 +23,28 @@ Anmeldung mit E-Mail + Passwort oder alternativ per **Passkey**
|
||||
Passwort-Anmeldung kann pro Konto deaktiviert werden, sobald mindestens
|
||||
ein Passkey registriert ist.
|
||||
|
||||
Die gesamte Oberfläche ist auf Deutsch, Englisch und Polnisch verfügbar
|
||||
(Sprachumschalter, Cookie-basiert). Gerichte, Bereiche, Allergene und
|
||||
Zusatzstoffe lassen sich zusätzlich auf Englisch/Polnisch benennen –
|
||||
mit optionaler automatischer Übersetzung über DeepL (siehe
|
||||
`DEEPL_API_KEY` unten) und jederzeit manuell korrigierbar.
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
app/ Next.js-Routen
|
||||
page.tsx Öffentliche Speisekarte
|
||||
login/ Login (Passwort + Passkey)
|
||||
vorschlag/ Öffentliches Rezeptvorschlag-Formular
|
||||
intern/ Kantinen-Bereich (Rolle: staff oder admin)
|
||||
vorschlaege/ Rezeptvorschläge sichten/übernehmen
|
||||
admin/ Verwaltung (Rolle: admin)
|
||||
api/admin/users/ Benutzerverwaltung (serverseitig, Service-Role-Key)
|
||||
api/translate/ DeepL-Anbindung (serverseitig)
|
||||
api/locale/ Sprach-Cookie setzen
|
||||
components/ Client-Komponenten (WeekEditor, DishManager, …)
|
||||
components/i18n/ Sprachkontext, Sprachumschalter
|
||||
lib/i18n/ Wörterbücher (de/en/pl), Locale-Helfer
|
||||
lib/supabase/ Supabase-Clients (Browser / Server / Admin)
|
||||
lib/ Typen, Datums-/Formatierungshelfer
|
||||
proxy.ts Session-Refresh + Schutz von /intern und /admin
|
||||
@@ -73,6 +85,7 @@ Beim Webserver/Hoster müssen genau diese drei Variablen hinterlegt werden
|
||||
| `SUPABASE_SERVICE_ROLE_KEY` | Service-Role-Key für die Benutzerverwaltung | **ja – niemals im Browser/Repo!** |
|
||||
| `APP_URL` | Öffentliche URL der App, z. B. `https://menu.example.de` (Origin-Check hinter Reverse-Proxy; zugleich Passkey-Domain) | nein |
|
||||
| `SITE_TITLE` | Titel im Browser-Tab und Überschrift ohne Logo, Default `Canteen Menu` | nein |
|
||||
| `DEEPL_API_KEY` | Optional: aktiviert „Automatisch übersetzen“ für Gerichte/Allergene/Zusatzstoffe (DeepL, kostenloser Free-Tier). Ohne Key funktioniert alles weiter, nur automatisch übersetzen ist deaktiviert | **ja – niemals im Browser/Repo!** |
|
||||
|
||||
Build & Start auf dem Server – **mit Docker** (empfohlen, Node.js und
|
||||
PostgreSQL müssen nicht installiert sein):
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "canteen-menu",
|
||||
"version": "1.2.0",
|
||||
"version": "1.3.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "canteen-menu",
|
||||
"version": "1.2.0",
|
||||
"version": "1.3.0",
|
||||
"dependencies": {
|
||||
"@supabase/ssr": "^0.12.3",
|
||||
"@supabase/supabase-js": "^2.110.7",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "canteen-menu",
|
||||
"version": "1.2.0",
|
||||
"version": "1.3.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev -H 0.0.0.0",
|
||||
|
||||
Reference in New Issue
Block a user