Add i18n to home sections, improve consent management and middleware asset handling

Co-authored-by: dennis <dennis@konkol.net>
This commit is contained in:
Cursor Agent
2026-01-12 15:57:28 +00:00
parent 6a4055500b
commit 683735cc63
11 changed files with 173 additions and 85 deletions

View File

@@ -3,7 +3,7 @@
import { motion, Variants } from "framer-motion";
import { Globe, Server, Wrench, Shield, Gamepad2, Code, Activity, Lightbulb } from "lucide-react";
import { useEffect, useState } from "react";
import { useLocale } from "next-intl";
import { useLocale, useTranslations } from "next-intl";
import type { JSONContent } from "@tiptap/react";
import RichTextClient from "./RichTextClient";
@@ -32,6 +32,7 @@ const fadeInUp: Variants = {
const About = () => {
const locale = useLocale();
const t = useTranslations("home.about");
const [cmsDoc, setCmsDoc] = useState<JSONContent | null>(null);
useEffect(() => {
@@ -99,7 +100,7 @@ const About = () => {
variants={fadeInUp}
className="text-4xl md:text-5xl font-bold text-stone-900"
>
About Me
{t("title")}
</motion.h2>
<motion.div
variants={fadeInUp}
@@ -109,26 +110,9 @@ const About = () => {
<RichTextClient doc={cmsDoc} className="prose prose-stone max-w-none" />
) : (
<>
<p>
Hi, I&apos;m Dennis a student and passionate self-hoster based
in Osnabrück, Germany.
</p>
<p>
I love building full-stack web applications with{" "}
<strong>Next.js</strong> and mobile apps with{" "}
<strong>Flutter</strong>. But what really excites me is{" "}
<strong>DevOps</strong>: I run my own infrastructure on{" "}
<strong>IONOS</strong> and <strong>OVHcloud</strong>, managing
everything with <strong>Docker Swarm</strong>,{" "}
<strong>Traefik</strong>, and automated CI/CD pipelines with my
own runners.
</p>
<p>
When I&apos;m not coding or tinkering with servers, you&apos;ll
find me <strong>gaming</strong>, <strong>jogging</strong>, or
experimenting with new tech like game servers or automation
workflows with <strong>n8n</strong>.
</p>
<p>{t("p1")}</p>
<p>{t("p2")}</p>
<p>{t("p3")}</p>
</>
)}
<motion.div
@@ -139,12 +123,10 @@ const About = () => {
<Lightbulb size={20} className="text-stone-600 flex-shrink-0 mt-0.5" />
<div>
<p className="text-sm font-semibold text-stone-800 mb-1">
Fun Fact
{t("funFactTitle")}
</p>
<p className="text-sm text-stone-700 leading-relaxed">
Even though I automate a lot, I still use pen and paper
for my calendar and notes it helps me clear my head and
stay focused.
{t("funFactBody")}
</p>
</div>
</div>