* Fix ActivityFeed: Remove dynamic import that was causing it to disappear in production * Fix ActivityFeed hydration error: Move localStorage read to useEffect to prevent server/client mismatch * Update Node.js version to 25 in Gitea workflows - Fix EBADENGINE error for camera-controls@3.1.2 which requires Node.js >=22 - Update production-deploy.yml, dev-deploy.yml, and ci-cd-with-gitea-vars.yml.disabled - Node.js v25 matches local development environment * Update Dockerfile to use Node.js 25 - Update base image from node:20 to node:25 - Matches Gitea workflow configuration and camera-controls@3.1.2 requirements * Fix production deployment: Start database dependencies - Remove --no-deps flag which prevented postgres and redis from starting - Remove --build flag as image is already built in previous step - This fixes 'Can't reach database server at postgres:5432' error * Fix postgres health check in production - Remove init-db.sql volume mount (not available in CI/CD environment) - Init script not needed as Prisma handles schema migrations - Postgres will initialize empty database automatically * Fix cache permission error in Docker container - Create cache directories AFTER copying standalone files - Create both fetch-cache and images subdirectories - Set proper ownership for nextjs user - Fixes EACCES permission denied errors for prerender cache * Fix German jogging fallback text * Use Directus content in production * fix: Security vulnerability - block malicious file requests * fix: Switch projects to Directus, add security fixes and example projects
145 lines
5.3 KiB
JSON
145 lines
5.3 KiB
JSON
{
|
||
"nav": {
|
||
"home": "Start",
|
||
"about": "Über mich",
|
||
"projects": "Projekte",
|
||
"contact": "Kontakt"
|
||
},
|
||
"common": {
|
||
"backToHome": "Zurück zur Startseite",
|
||
"backToProjects": "Zurück zu den Projekten",
|
||
"viewAllProjects": "Alle Projekte ansehen",
|
||
"loading": "Lädt..."
|
||
},
|
||
"consent": {
|
||
"title": "Datenschutz-Einstellungen",
|
||
"description": "Wir nutzen optionale Dienste (Analytics und Chat), um die Seite zu verbessern. Du kannst deine Auswahl jederzeit ändern.",
|
||
"essential": "Essentiell",
|
||
"analytics": "Analytics",
|
||
"chat": "Chatbot",
|
||
"alwaysOn": "Immer aktiv",
|
||
"acceptAll": "Alles akzeptieren",
|
||
"acceptSelected": "Auswahl akzeptieren",
|
||
"rejectAll": "Alles ablehnen",
|
||
"hide": "Ausblenden"
|
||
},
|
||
"home": {
|
||
"hero": {
|
||
"features": {
|
||
"f1": "Next.js & Flutter",
|
||
"f2": "Docker Swarm & CI/CD",
|
||
"f3": "Self-Hosted Infrastruktur"
|
||
},
|
||
"description": "Student und leidenschaftlicher Self-Hoster: Ich baue Full-Stack Web-Apps und Mobile-Lösungen, betreibe meine eigene Infrastruktur und liebe DevOps.",
|
||
"ctaWork": "Meine Projekte",
|
||
"ctaContact": "Kontakt"
|
||
},
|
||
"about": {
|
||
"title": "Über mich",
|
||
"p1": "Hi, ich bin Dennis – Student und leidenschaftlicher Self-Hoster aus Osnabrück.",
|
||
"p2": "Ich entwickle Full-Stack Web-Apps mit Next.js und Mobile-Apps mit Flutter. Besonders spannend finde ich DevOps: eigene Infrastruktur, Automatisierung und CI/CD Deployments.",
|
||
"p3": "Wenn ich nicht code oder an Servern schraube, findest du mich beim Gaming, Joggen oder beim Experimentieren mit Automationen.",
|
||
"funFactTitle": "Fun Fact",
|
||
"funFactBody": "Auch wenn ich viel automatisiere, nutze ich für Kalender & Notizen noch Stift und Papier – das hilft mir beim Fokus.",
|
||
"techStackTitle": "Mein Tech Stack",
|
||
"hobbiesTitle": "Wenn ich nicht code",
|
||
"techStack": {
|
||
"categories": {
|
||
"frontendMobile": "Frontend & Mobile",
|
||
"backendDevops": "Backend & DevOps",
|
||
"toolsAutomation": "Tools & Automation",
|
||
"securityAdmin": "Security & Admin"
|
||
},
|
||
"items": {
|
||
"selfHostedServices": "Self-hosted Services"
|
||
}
|
||
},
|
||
"hobbies": {
|
||
"selfHosting": "Self-Hosting & DevOps",
|
||
"gaming": "Gaming",
|
||
"gameServers": "Game-Server einrichten",
|
||
"jogging": "Joggen um den Kopf freizubekommen und aktiv bleiben"
|
||
},
|
||
"currentlyReading": {
|
||
"title": "Aktuell am Lesen",
|
||
"progress": "Fortschritt"
|
||
}
|
||
},
|
||
"projects": {
|
||
"title": "Ausgewählte Projekte",
|
||
"subtitle": "Eine Auswahl an Projekten, an denen ich gearbeitet habe – von Web-Apps bis zu Experimenten.",
|
||
"featured": "Featured",
|
||
"viewAll": "Alle Projekte ansehen"
|
||
},
|
||
"contact": {
|
||
"title": "Kontakt",
|
||
"subtitle": "Du willst zusammenarbeiten oder hast Fragen zu meinen Projekten? Schreib mir gerne!",
|
||
"getInTouch": "Melde dich",
|
||
"getInTouchBody": "Ich bin immer offen für neue Chancen, spannende Projekte oder einfach einen Tech-Talk.",
|
||
"info": {
|
||
"email": "E-Mail",
|
||
"location": "Ort",
|
||
"locationValue": "Osnabrück, Deutschland"
|
||
},
|
||
"form": {
|
||
"title": "Nachricht senden",
|
||
"sending": "Sende Nachricht…",
|
||
"send": "Nachricht senden",
|
||
"labels": {
|
||
"name": "Name",
|
||
"email": "E-Mail",
|
||
"subject": "Betreff",
|
||
"message": "Nachricht",
|
||
"requiredMarker": "*"
|
||
},
|
||
"placeholders": {
|
||
"name": "Dein Name",
|
||
"email": "dein@email.de",
|
||
"subject": "Worum geht’s?",
|
||
"message": "Erzähl mir mehr über dein Projekt oder deine Frage…"
|
||
},
|
||
"errors": {
|
||
"nameRequired": "Name ist erforderlich",
|
||
"nameMin": "Name muss mindestens 2 Zeichen haben",
|
||
"emailRequired": "E-Mail ist erforderlich",
|
||
"emailInvalid": "Bitte eine gültige E-Mail-Adresse eingeben",
|
||
"subjectRequired": "Betreff ist erforderlich",
|
||
"subjectMin": "Betreff muss mindestens 3 Zeichen haben",
|
||
"messageRequired": "Nachricht ist erforderlich",
|
||
"messageMin": "Nachricht muss mindestens 10 Zeichen haben"
|
||
},
|
||
"characters": "{count} Zeichen"
|
||
}
|
||
}
|
||
},
|
||
"projects": {
|
||
"shared": {
|
||
"featured": "Hervorgehoben"
|
||
},
|
||
"list": {
|
||
"title": "Meine Projekte",
|
||
"intro": "Stöbere durch mein Portfolio – von Web-Anwendungen bis Mobile Apps. Jedes Projekt zeigt unterschiedliche Skills und Technologien.",
|
||
"searchPlaceholder": "Projekte durchsuchen...",
|
||
"all": "Alle",
|
||
"noResults": "Keine Projekte passen zu deinen Filtern.",
|
||
"clearFilters": "Filter zurücksetzen"
|
||
},
|
||
"detail": {
|
||
"links": "Projektlinks",
|
||
"liveDemo": "Live-Demo",
|
||
"liveNotAvailable": "Keine Live-Demo verfügbar",
|
||
"viewSource": "Quellcode ansehen",
|
||
"techStack": "Tech-Stack"
|
||
}
|
||
},
|
||
"footer": {
|
||
"role": "Software Engineer",
|
||
"madeIn": "Made in Germany",
|
||
"legalNotice": "Impressum",
|
||
"privacyPolicy": "Datenschutz",
|
||
"privacySettings": "Datenschutz-Einstellungen",
|
||
"privacySettingsTitle": "Datenschutz-Banner wieder anzeigen",
|
||
"builtWith": "Built with"
|
||
}
|
||
}
|