✅ Ziel Ein registrierter Nutzer kann: Sprachtexte in seiner Sprache vorschlagen oder verbessern Nicht sofort live ändern, sondern nur als Vorschlag, mit: Änderungszähler Option für Adminprüfung Optional: Moderation durch mehrere Nutzer 🔐 Konzeptionelle Lösung (in 3 Schichten)
- Authentifizierung (Anmeldung) Nutzer meldet sich an mit: E-Mail + Passwort Oder via OAuth (Google / GitHub etc.) Registrierung erforderlich Einmal angemeldet, bekommt er eine eindeutige ID (z. B. userId) Tools: Firebase Auth, Supabase Auth, Auth0 oder eigenes Backend mit JWT
- Sprachdaten-Vorschlags-System Sprachdatei (timeTexts.json) wird nicht direkt vom Client geändert. Stattdessen: User kann eine neue Version vorschlagen für einen Zeittext (z. B. „{hour} UHR“ → „{hour} STUNDE“) Diese Vorschläge werden im Backend gespeichert: { "userId": "abc123", "lang": "DE", "minuteKey": "0", "suggestion": ["ES", "IST", "{hour}", "UHR"], "timestamp": 1724623382, "status": "pending", // oder "approved", "rejected" "voteCount": 0 }
- Missbrauchsschutz Mechanismen gegen Unsinns-Vorschläge: Änderungszähler pro Nutzer (changesToday, totalSuggestions) Cooldown-Zeiten: z. B. max. 3 Vorschläge pro Stunde Review-Queue für Admins oder Power-User Voting-System (z. B. „Gefällt mir / nicht“ von anderen registrierten Nutzern) Automatische Sperre bei Spam oder Regelverstoß Optional: Nutzer-„Trust Score“ (mehr genehmigte Vorschläge = höhere Bewertung) 👨💻 Benutzeroberfläche UI-Funktionen für registrierte User: 🔒 Login/Logout 📝 Vorschlag bearbeiten (pro Zeitfenster: 00–55 Minuten in 5er-Schritten) 🗳 Vorschlagsverlauf mit Status 🔼 Abstimmen für andere Vorschläge 🧱 Mögliche technische Basis (Frontend/Backend) Bereich Lösungsvorschlag Authentifizierung Firebase Auth, Supabase, OAuth, JWT Speicherung Firestore / Supabase DB / MongoDB API-Backend Express.js, Fastify oder Firebase Functions Moderation Weboberfläche für Admins 🛡 Admin-Möglichkeiten Vorschläge ansehen und freischalten Missbrauch melden / Nutzer blockieren „Genehmigte Vorschläge“ in timeTexts.json übernehmen 🎯 Zusammenfassung: Workflow Nutzer meldet sich an Öffnet „Sprache bearbeiten“ Schlägt für z. B. 25 Minuten (timeTexts["25"]) neuen Worttext vor Vorschlag wird gespeichert als pending Admin oder Moderator kann ihn genehmigen Danach fließt er in die Anzeige ein