Dmitri d4a5378adf Refactor: migrate frontend to Vite/React, add product backend modules
Frontend:
- Replace Next.js with Vite + React + TypeScript
- Add new component architecture (app-shell, sidebar, dashboard modules)
- Implement product modules: FRAME, safety protocols, walkthrough checkin,
  campus/staff attendance, personality quiz, sign language, classroom timer
- Add shadcn/ui component library with Tailwind CSS
- Remove legacy generated components, stores, and pages

Backend:
- Add product migrations: frame_entries, user_progress, safety_quiz_results,
  walkthrough_checkins, communication_events, personality_quiz_results,
  campus_attendance_config/summaries, staff_attendance_records, content_catalog
- Add corresponding models, services, and routes
- Implement cookie-based auth with refresh token rotation
- Add content catalog seeder with product content
- Migrate to ESLint flat config
- Switch from yarn to npm

Infrastructure:
- Update .gitignore for new tooling
- Add project documentation (CLAUDE.md, docs/)
- Remove deprecated config files and yarn.lock

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-06-09 15:18:23 +02:00

56 lines
2.0 KiB
JSON

{
"pages": {
"dashboard": {
"pageTitle": "Dashboard",
"overview": "Übersicht",
"loadingWidgets": "Widgets werden geladen...",
"loading": "Laden..."
},
"login": {
"pageTitle": "Anmeldung",
"sampleCredentialsAdmin": "Verwenden Sie {{email}} / {{password}}, um sich als Administrator anzumelden",
"sampleCredentialsUser": "Verwenden Sie {{email}} / {{password}}, um sich als Benutzer anzumelden",
"form": {
"loginLabel": "Login",
"loginHelp": "Bitte geben Sie Ihren Login ein",
"passwordLabel": "Passwort",
"passwordHelp": "Bitte geben Sie Ihr Passwort ein",
"remember": "Angemeldet bleiben",
"forgotPassword": "Passwort vergessen?",
"loginButton": "Anmelden",
"loading": "Wird geladen...",
"noAccountYet": "Noch kein Konto?",
"newAccount": "Neues Konto"
},
"pexels": {
"photoCredit": "Foto von {{photographer}} auf Pexels",
"videoCredit": "Video von {{name}} auf Pexels",
"videoUnsupported": "Ihr Browser unterstützt das Video-Tag nicht."
},
"footer": {
"copyright": "© {{year}} {{title}}. Alle Rechte vorbehalten",
"privacy": "Datenschutzrichtlinie"
}
}
},
"components": {
"widgetCreator": {
"title": "Diagramm oder Widget erstellen",
"helpText": "Beschreiben Sie Ihr neues Widget oder Diagramm in natürlicher Sprache. Zum Beispiel: \"Anzahl der Admin-Benutzer\" ODER \"rotes Diagramm mit der Anzahl geschlossener Verträge gruppiert nach Monat\"",
"settingsTitle": "Einstellungen für Widget Creator",
"settingsDescription": "Für welche Rolle zeigen wir Widgets an und erstellen sie?",
"doneButton": "Fertig",
"loading": "Laden..."
},
"search": {
"placeholder": "Suche",
"required": "Pflichtfeld",
"minLength": "Mindestlänge: {{count}} Zeichen"
}
}
}