chore: clean up codebase for production readiness
Mirror to GitHub / mirror (push) Successful in 44s
Test and Lint / backend-test (push) Successful in 1m42s
Test and Lint / frontend-test (push) Has been cancelled
Version and Release / version-bump (push) Has been cancelled
Version and Release / trigger-drone (push) Has been cancelled

- Remove all console.log/debug statements from production code
- Add NODE_ENV checks for development-only logging
- Remove test scripts (test-feedback, test-image-security, test-backup-*, test-restore)
- Remove one-time fix scripts (fix-temp-photos, fix-migration-state, mark-migration-applied)
- Remove sensitive files (.env.backup, ADMIN_CREDENTIALS.txt)
- Update package.json to remove references to deleted scripts
- Replace console statements with logger utility in backend
- Secure error boundaries to not expose stack traces in production

This makes the codebase production-ready with no debug output or test scripts.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
This commit is contained in:
2025-08-24 23:19:30 +02:00
co-authored by Claude
parent 827eb4819b
commit 1b4b497fdf
144 changed files with 12279 additions and 2018 deletions
+124 -1
View File
@@ -169,7 +169,11 @@
"categories": "Kategorien",
"download": "Herunterladen",
"searchPlaceholder": "Fotos suchen...",
"sortBy": "Sortieren nach"
"sortBy": "Sortieren nach",
"sortByDate": "Nach Datum sortieren",
"sortByName": "Nach Name sortieren",
"sortBySize": "Nach Größe sortieren",
"sortByRating": "Nach Bewertung sortieren"
},
"categories": {
"title": "Fotokategorien",
@@ -292,6 +296,11 @@
"selectCategory": "Wählen Sie eine Kategorie für Benutzer-Uploads",
"uploadCategoryHelp": "Alle von Benutzern hochgeladenen Fotos werden dieser Kategorie hinzugefügt",
"userUploadWarning": "Benutzer-Uploads werden moderiert und können jederzeit von Administratoren entfernt werden.",
"allowDownloads": "Foto-Downloads erlauben",
"allowDownloadsHelp": "Gästen erlauben, Fotos aus dieser Galerie herunterzuladen",
"downloadPermissions": "Download-Berechtigungen",
"downloadsEnabled": "Downloads aktiviert",
"downloadsDisabled": "Downloads deaktiviert",
"heroPhoto": "Hero-Foto",
"heroPhotoHelp": "Wählen Sie ein hervorgehobenes Foto für das Hero-Galerie-Layout",
"selectHeroPhoto": "Hero-Foto auswählen",
@@ -729,6 +738,7 @@
"settings_updated": "Einstellungen aktualisiert",
"event_updated": "Veranstaltung aktualisiert: {{eventName}}",
"event_deleted": "Veranstaltung gelöscht: {{eventName}}",
"password_changed": "Passwort geändert",
"email_resent": "Erstellungs-E-Mail erneut gesendet für: {{eventName}}",
"category_created": "Kategorie erstellt: {{categoryName}}",
"category_updated": "Kategorie aktualisiert: {{categoryName}}",
@@ -1314,5 +1324,118 @@
"expectedCompletion": "Voraussichtliche Fertigstellung:",
"checkBackLater": "Bitte schauen Sie später wieder vorbei",
"urgentMatters": "Bei dringenden Anliegen kontaktieren Sie bitte"
},
"passwordChange": {
"title": "Passwort ändern",
"currentPassword": "Aktuelles Passwort",
"newPassword": "Neues Passwort",
"confirmPassword": "Neues Passwort bestätigen",
"currentPasswordPlaceholder": "Aktuelles Passwort eingeben",
"newPasswordPlaceholder": "Neues Passwort eingeben",
"confirmPasswordPlaceholder": "Neues Passwort bestätigen",
"requirements": "Passwort-Anforderungen:",
"minLength": "Mindestens 6 Zeichen lang",
"mustDiffer": "Muss sich vom aktuellen Passwort unterscheiden",
"success": "Passwort erfolgreich geändert",
"failed": "Fehler beim Ändern des Passworts",
"currentRequired": "Aktuelles Passwort ist erforderlich",
"newRequired": "Neues Passwort ist erforderlich",
"minLengthError": "Passwort muss mindestens 6 Zeichen lang sein",
"confirmRequired": "Bitte bestätigen Sie Ihr neues Passwort",
"noMatch": "Passwörter stimmen nicht überein",
"mustBeDifferent": "Neues Passwort muss sich vom aktuellen unterscheiden",
"cancel": "Abbrechen"
},
"mandatoryPasswordChange": {
"title": "Passwort-Änderung erforderlich",
"description": "Aus Sicherheitsgründen müssen Sie Ihr Passwort ändern, bevor Sie auf das Admin-Panel zugreifen können.",
"success": "Passwort erfolgreich geändert! Sie können nun auf das Admin-Panel zugreifen.",
"minLength": "Mindestens 12 Zeichen lang",
"mustContainUpperLower": "Muss Groß- und Kleinbuchstaben enthalten",
"mustContainNumbers": "Muss Zahlen enthalten",
"mustContainSpecial": "Muss Sonderzeichen enthalten (!@#$%^&*)",
"minLengthError": "Passwort muss mindestens 12 Zeichen lang sein",
"mustContainLowercase": "Passwort muss Kleinbuchstaben enthalten",
"mustContainUppercase": "Passwort muss Großbuchstaben enthalten",
"mustContainNumbersError": "Passwort muss Zahlen enthalten",
"mustContainSpecialError": "Passwort muss Sonderzeichen enthalten"
},
"offline": {
"backOnline": "Wieder online",
"noConnection": "Keine Internetverbindung"
},
"download": {
"downloading": "Wird heruntergeladen...",
"percentComplete": "% abgeschlossen"
},
"passwordGenerator": {
"weak": "Schwach",
"fair": "Ausreichend",
"good": "Gut",
"strong": "Stark",
"generating": "Wird generiert...",
"generatePassword": "Passwort generieren",
"showSuggestions": "Passwort-Vorschläge anzeigen",
"moreOptions": "Weitere Optionen",
"suggestions": "Passwort-Vorschläge",
"characters": "Zeichen",
"copyPassword": "Passwort kopieren",
"use": "Verwenden",
"pattern": "Muster:",
"patternDescription": "Passwörter werden mit Ihrem Veranstaltungsnamen und -datum generiert. Beispiel: \"Location2024$August\" für bessere Sicherheit und Merkbarkeit."
},
"feedback": {
"comments": "Kommentare",
"addComment": "Kommentar hinzufügen",
"yourName": "Ihr Name",
"yourEmail": "Ihre E-Mail",
"writeComment": "Kommentar schreiben...",
"submit": "Absenden",
"commentSubmitted": "Kommentar eingereicht",
"commentError": "Fehler beim Einreichen des Kommentars",
"rateLimited": "Bitte warten Sie, bevor Sie erneut kommentieren",
"commentRequired": "Kommentar ist erforderlich",
"nameRequired": "Name ist erforderlich",
"emailRequired": "E-Mail ist erforderlich",
"anonymous": "Anonym",
"pendingApproval": "Genehmigung ausstehend",
"noComments": "Noch keine Kommentare. Seien Sie der Erste!",
"rating": "Bewertung",
"ratePhoto": "Dieses Foto bewerten",
"yourRating": "Ihre Bewertung",
"averageRating": "Durchschnittliche Bewertung",
"totalRatings": "Bewertungen",
"likes": "Gefällt mir",
"favorites": "Favoriten",
"likePhoto": "Foto gefällt mir",
"favoritePhoto": "Zu Favoriten hinzufügen",
"photoFeedback": "Foto-Feedback",
"hasFeedback": "Hat Feedback",
"hasComments": "Hat Kommentare",
"hasRating": "Hat Bewertung"
},
"adminLogin": {
"title": "Admin-Anmeldung",
"subtitle": "Melden Sie sich an, um Ihre Fotogalerien zu verwalten",
"sessionExpired": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
"emailLabel": "E-Mail-Adresse",
"emailPlaceholder": "[email protected]",
"emailRequired": "E-Mail ist erforderlich",
"invalidEmail": "Ungültiges E-Mail-Format",
"passwordLabel": "Passwort",
"passwordPlaceholder": "Passwort eingeben",
"passwordRequired": "Passwort ist erforderlich",
"passwordMinLength": "Passwort muss mindestens 6 Zeichen lang sein",
"rememberMe": "Angemeldet bleiben",
"forgotPassword": "Passwort vergessen?",
"signIn": "Anmelden",
"loginSuccess": "Anmeldung erfolgreich!",
"networkError": "Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
"tooManyAttempts": "Zu viele Anmeldeversuche. Bitte versuchen Sie es später erneut.",
"invalidCredentials": "Ungültige E-Mail oder Passwort",
"generalError": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.",
"needHelp": "Hilfe benötigt? Kontakt",
"poweredBy": "Bereitgestellt von PicPeak",
"devModeHint": "Entwicklungsmodus: E-Mail: [email protected], Passwort: admin123"
}
}