feat(T01): auth + user management + RBAC + base frontend + i18n

- Backend: FastAPI, JWT auth (HS256), bcrypt, RBAC middleware
- User CRUD (admin-only), soft-delete, pagination
- Pydantic BaseSettings config, async SQLAlchemy 2.0
- 50 backend tests, 88% coverage
- Frontend: Next.js 14 App Router, Tailwind, design tokens
- Login page, auth context, API client with auto-refresh
- i18n: next-intl, DE/EN (31 keys each)
- 6 base UI components (Button, Input, Card, Table, Modal, Toast)
- 12 frontend tests, npm build success
This commit is contained in:
2026-07-14 11:51:32 +02:00
parent 5459a43e2b
commit d89304845a
56 changed files with 7581 additions and 9 deletions
+33
View File
@@ -0,0 +1,33 @@
{
"auth.loginTitle": "Anmeldung",
"auth.email": "E-Mail-Adresse",
"auth.password": "Passwort",
"auth.loginButton": "Anmelden",
"auth.logout": "Abmelden",
"auth.loginSuccess": "Erfolgreich angemeldet",
"auth.error.loginFailed": "Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Eingaben.",
"auth.error.emailRequired": "E-Mail-Adresse ist erforderlich",
"auth.error.emailInvalid": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
"auth.error.passwordRequired": "Passwort ist erforderlich",
"auth.welcome": "Willkommen zurück",
"common.save": "Speichern",
"common.cancel": "Abbrechen",
"common.delete": "Löschen",
"common.edit": "Bearbeiten",
"common.confirm": "Bestätigen",
"common.search": "Suchen",
"common.loading": "Wird geladen...",
"common.noData": "Keine Daten verfügbar",
"nav.vehicles": "Fahrzeuge",
"nav.contacts": "Kontakte",
"nav.sales": "Verkäufe",
"nav.settings": "Einstellungen",
"nav.dashboard": "Übersicht",
"nav.ocr": "OCR-Scan",
"nav.copilot": "KI-Assistent",
"user.role.admin": "Administrator",
"user.role.verkaeufer": "Verkäufer",
"user.role.buchhaltung": "Buchhaltung",
"user.active": "Aktiv",
"user.inactive": "Inaktiv"
}
+33
View File
@@ -0,0 +1,33 @@
{
"auth.loginTitle": "Sign In",
"auth.email": "Email Address",
"auth.password": "Password",
"auth.loginButton": "Sign In",
"auth.logout": "Sign Out",
"auth.loginSuccess": "Successfully signed in",
"auth.error.loginFailed": "Login failed. Please check your credentials.",
"auth.error.emailRequired": "Email address is required",
"auth.error.emailInvalid": "Please enter a valid email address",
"auth.error.passwordRequired": "Password is required",
"auth.welcome": "Welcome back",
"common.save": "Save",
"common.cancel": "Cancel",
"common.delete": "Delete",
"common.edit": "Edit",
"common.confirm": "Confirm",
"common.search": "Search",
"common.loading": "Loading...",
"common.noData": "No data available",
"nav.vehicles": "Vehicles",
"nav.contacts": "Contacts",
"nav.sales": "Sales",
"nav.settings": "Settings",
"nav.dashboard": "Dashboard",
"nav.ocr": "OCR Scan",
"nav.copilot": "AI Assistant",
"user.role.admin": "Administrator",
"user.role.verkaeufer": "Sales",
"user.role.buchhaltung": "Accounting",
"user.active": "Active",
"user.inactive": "Inactive"
}