feat: plakat redesign phase 4 (chat window, contact, footer, cleanup)
- AI chat moves into a window/sheet, opened from a new speech-bubble card on the desk; it now respects the chatbot consent and asks before sending anything to n8n (previously it ignored the consent) - Contact as red poster section with big mail address and the form on a paper card; validation errors are finally shown inline (aria-invalid, role=alert) - Footer as ink strip with dk0 wordmark, legal links and a button to reopen the privacy settings - "About me" in the header opens the about window on the home page - Remove the old About section and its parts (BentoChat, ActivityFeed, CurrentlyReading, ReadBooks), the unused ChatWidget, Projects and BentoGrid, their tests, wrappers, loaders, types and texts - scripts/directus-cleanup-redesign.mjs: dry run by default, --apply archives hobbies, tech stack categories and old content pages and deletes four unused message overrides after a full JSON backup; run only after the redesign is live on production Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+18
-75
@@ -67,6 +67,8 @@
|
||||
"bookLabel": "Reading now",
|
||||
"bookFallback": "To the library",
|
||||
"photoCaption": "That's me.",
|
||||
"chatCard": "Ask me something.",
|
||||
"chatCardHint": "Open AI chat",
|
||||
"sticker": "Runs on my own servers."
|
||||
},
|
||||
"windows": {
|
||||
@@ -127,6 +129,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"chat": {
|
||||
"title": "ask me · AI",
|
||||
"welcome": "Hi! Ask me anything about Dennis, his projects or his setup.",
|
||||
"consent": "The chat runs through an AI service in my n8n. Your messages are processed and briefly stored for that. Nothing is sent until you agree.",
|
||||
"allow": "Allow chat",
|
||||
"placeholder": "Your question …",
|
||||
"send": "Send",
|
||||
"error": "No connection right now. Try again in a moment.",
|
||||
"thinking": "Writing a reply",
|
||||
"note": "Answers come from an AI and can be wrong."
|
||||
},
|
||||
"contact": {
|
||||
"title": "contact",
|
||||
"body": "For projects, questions about my setup or just because. I usually reply within a day or two.",
|
||||
@@ -135,63 +148,9 @@
|
||||
"form": "To the form"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "Behind the Code",
|
||||
"p1": "Ever since I set up my first home server, I've been hooked on infrastructure. Currently studying in Osnabrück, I split my time between developing modern web apps with Next.js and building mobile experiences with Flutter.",
|
||||
"p2": "For me, it doesn't stop at the code. I genuinely enjoy managing my own Docker clusters, optimizing CI/CD pipelines, and making sure everything is stable and secure. DevOps isn't just a part of my job – it's how I think about building things.",
|
||||
"p3": "When the servers are running smoothly, you'll find me jogging through the city, gaming, or tinkering with new automation workflows in n8n.",
|
||||
"funFactTitle": "Hardcore Analog",
|
||||
"funFactBody": "Despite my love for automation and the cloud, my most important ideas are still born on paper with a fountain pen. It's my way of staying grounded.",
|
||||
"techStackTitle": "My Tech Stack",
|
||||
"hobbiesTitle": "When I'm Not Coding",
|
||||
"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": "Setting up game servers",
|
||||
"jogging": "Jogging to clear my mind and stay active"
|
||||
},
|
||||
"currentlyReading": {
|
||||
"title": "Currently Reading",
|
||||
"progress": "Progress"
|
||||
},
|
||||
"readBooks": {
|
||||
"title": "Read",
|
||||
"finishedAt": "Finished",
|
||||
"showMore": "{count} more",
|
||||
"showLess": "Show less",
|
||||
"readMore": "Read more",
|
||||
"collapseReview": "Show less",
|
||||
"empty": "Books finished in Hardcover will appear here automatically."
|
||||
},
|
||||
"activity": {
|
||||
"idleStatus": "System Idle / Mind Active",
|
||||
"codingNow": "Coding Now",
|
||||
"gaming": "Gaming",
|
||||
"listening": "Listening",
|
||||
"inGame": "In Game"
|
||||
}
|
||||
},
|
||||
"projects": {
|
||||
"title": "Selected Work",
|
||||
"subtitle": "Projects that pushed my boundaries.",
|
||||
"featured": "Featured",
|
||||
"viewAll": "View Archive",
|
||||
"noProjects": "No projects yet."
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contact Me",
|
||||
"subtitle": "Interested in working together or have questions about my projects? Feel free to reach out!",
|
||||
"title": "Write me.",
|
||||
"subtitle": "For projects, questions about my setup or just because. I usually reply within a day or two.",
|
||||
"getInTouch": "Get In Touch",
|
||||
"getInTouchBody": "I'm always available to discuss new opportunities, interesting projects, or simply chat about technology and innovation.",
|
||||
"info": {
|
||||
@@ -251,13 +210,13 @@
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"role": "Software Engineer",
|
||||
"madeIn": "Made in Germany",
|
||||
"role": "IT & self-hosting",
|
||||
"madeIn": "self-hosted in Germany",
|
||||
"legalNotice": "Legal notice",
|
||||
"privacyPolicy": "Privacy policy",
|
||||
"privacySettings": "Privacy settings",
|
||||
"privacySettingsTitle": "Show privacy settings banner again",
|
||||
"builtWith": "Built with",
|
||||
"builtWith": "Built with Next.js and Directus, running on my own servers.",
|
||||
"aiDisclaimer": "Some content on this site may be AI-assisted.",
|
||||
"backToTop": "Back to top",
|
||||
"systemsOnline": "Systems Online"
|
||||
@@ -277,21 +236,5 @@
|
||||
"subtitle": "Books that shaped my mindset and expanded my horizons.",
|
||||
"backHome": "Back Home",
|
||||
"empty": "No books yet."
|
||||
},
|
||||
"about": {
|
||||
"status": "Status",
|
||||
"aiAssistant": "AI Assistant",
|
||||
"library": "Library",
|
||||
"viewAll": "View All",
|
||||
"myGear": "My Gear",
|
||||
"gearMain": "Main",
|
||||
"gearPC": "PC",
|
||||
"gearServer": "Server",
|
||||
"gearOS": "OS",
|
||||
"curiosity": "Curiosity beyond software engineering.",
|
||||
"connect": "Connect",
|
||||
"email": "Email",
|
||||
"code": "Code",
|
||||
"professional": "Professional"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user