From 8933ab9067c21014af0e0e971328886e877f419a Mon Sep 17 00:00:00 2001 From: joachimhummel <47454583-joachimhummel@users.noreply.replit.com> Date: Fri, 15 May 2026 15:47:11 +0000 Subject: [PATCH] Add Berufserfahrung Timeline section to portfolio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task: #2 — Berufserfahrung Timeline ## What was done - Created new `experience.tsx` component with a vertical alternating timeline - Implemented 5 career stations from the PDF profile: 1. Senior IT-Consultant @ Landesamt für Statistik Bayern (01/2024–heute) 2. Technischer Redakteur @ Polizei Hessen (04/2024–12/2024) 3. Projektkoordinator @ Justiz Baden-Württemberg (04/2023–10/2023) 4. Senior IT-Systems Engineer @ Amt d. öff. Rechts Hamburg (10/2020–04/2023) 5. Senior IT-Consultant @ Finanzdienstleister München (01/2015–06/2020) - Each station shows: period, role, client, 4–5 task bullets - Visual distinction between Behörde (blue, Landmark icon) and Konzern (violet, Building2 icon) - Legend badges at top of section for type color coding - Framer Motion scroll-in animations consistent with other sections - Responsive: single-column on mobile, alternating left/right on desktop - Added section to `home.tsx` after Bio, with `id="experience"` - Added "Erfahrung" nav link to `navbar.tsx` (both desktop and mobile menu) ## Deviations - None. All 5 required stations implemented with 3–5 bullets each as specified. --- .../src/components/experience.tsx | 203 ++++++++++++++++++ .../src/components/navbar.tsx | 1 + .../joachim-portfolio/src/pages/home.tsx | 5 + 3 files changed, 209 insertions(+) create mode 100644 artifacts/joachim-portfolio/src/components/experience.tsx diff --git a/artifacts/joachim-portfolio/src/components/experience.tsx b/artifacts/joachim-portfolio/src/components/experience.tsx new file mode 100644 index 0000000..e980e55 --- /dev/null +++ b/artifacts/joachim-portfolio/src/components/experience.tsx @@ -0,0 +1,203 @@ +import { motion } from "framer-motion"; +import { Building2, Landmark } from "lucide-react"; + +type Station = { + period: string; + role: string; + client: string; + type: "behoerde" | "konzern"; + tasks: string[]; +}; + +const stations: Station[] = [ + { + period: "01/2024 – heute", + role: "Senior IT-Consultant", + client: "Landesamt für Statistik Bayern, München", + type: "behoerde", + tasks: [ + "Installation, Konfiguration & 3rd-Level-Support von Apache, Tomcat, JBoss", + "Einführung und Betrieb von Docker, Ansible und Artifactory", + "Konzeption und Aufbau JMX-Monitoring mit Grafana", + "Erstellung ITIL-konformer Betriebshandbücher & Betriebsführungskonzepte", + "Migration von Java-Anwendungen via Artifactory & Bitbucket", + ], + }, + { + period: "04/2024 – 12/2024", + role: "Technischer Redakteur", + client: "Polizei Hessen", + type: "behoerde", + tasks: [ + "Betriebsführungskonzepte nach ITIL & BSI-Grundschutz für kritische Anwendungen", + "Betriebshandbücher für behördenkritische Systeme", + "Architekturdiagramme & Prozessvisualisierungen mit draw.io", + "Qualitätssicherungsmaßnahmen und Confluence/Jira-Betrieb", + ], + }, + { + period: "04/2023 – 10/2023", + role: "Projektkoordinator", + client: "Amt des öffentlichen Rechts, Justiz Baden-Württemberg", + type: "behoerde", + tasks: [ + "Betrieb und Support der eAkte-Infrastruktur der Justiz", + "Einführung von Confluence & Jira als Workflow-Tool", + "Dokumentation von Prozessabläufen & Changemanagement", + "Übergreifende Koordination mit IuK, Datenbanken & virtuellen Servern", + ], + }, + { + period: "10/2020 – 04/2023", + role: "Senior IT-Systems Engineer", + client: "Amt des öffentlichen Rechts, Hamburg", + type: "behoerde", + tasks: [ + "Linux / S390 / Docker-Betrieb von Video- & Messaging-Anwendungen", + "Deployment via Ansible & Gitlab CI/CD", + "Bundesweite Betriebshandbücher & Qualitätssicherung", + "Fachliche Unterstützung für Behörden, Justiz, Bundeswehr & Kanzleramt", + ], + }, + { + period: "01/2015 – 06/2020", + role: "Senior IT-Consultant", + client: "Großkonzern Finanzdienstleistung, München (EZB-geprüft)", + type: "konzern", + tasks: [ + "Apache, Tomcat, JBoss auf AIX / Solaris / Docker — 3rd-Level-Support", + "Clustering-Betrieb für Webserver & J2EE-Anwendungen", + "Betriebsrichtlinien für Webserver (EZB-Compliance-Prüfung)", + "Migration von Java-Anwendungen via Harvest & Gitlab", + ], + }, +]; + +const typeConfig = { + behoerde: { + label: "Behörde", + icon: Landmark, + badge: "bg-blue-50 text-blue-700 border-blue-200", + dot: "bg-blue-500", + line: "border-blue-200", + }, + konzern: { + label: "Konzern", + icon: Building2, + badge: "bg-violet-50 text-violet-700 border-violet-200", + dot: "bg-violet-500", + line: "border-violet-200", + }, +}; + +export function Experience() { + return ( +
+ +
+

+ Berufserfahrung +

+

+ Projekte in Behörden & Konzernen +

+

+ Über 25 Jahre in produktionskritischen Umgebungen — von Bundesbehörden über Landesämter bis zum EZB-geprüften Finanzkonzern. +

+
+ +
+ {(["behoerde", "konzern"] as const).map((type) => { + const cfg = typeConfig[type]; + return ( + + + {cfg.label} + + ); + })} +
+ +
+
+ + {stations.map((station, index) => { + const cfg = typeConfig[station.type]; + const Icon = cfg.icon; + const isLeft = index % 2 === 0; + + return ( + +
+
+
+ +
+
+
+
+ +
+
+

+ {station.period} +

+

+ {station.role} +

+
+
+ +

+ {station.client} +

+ +
    + {station.tasks.map((task, tIndex) => ( +
  • + + {task} +
  • + ))} +
+
+
+ + ); + })} +
+
+
+ ); +} diff --git a/artifacts/joachim-portfolio/src/components/navbar.tsx b/artifacts/joachim-portfolio/src/components/navbar.tsx index abadfbb..c918c43 100644 --- a/artifacts/joachim-portfolio/src/components/navbar.tsx +++ b/artifacts/joachim-portfolio/src/components/navbar.tsx @@ -16,6 +16,7 @@ export function Navbar() { { name: "Stärken", href: "#strengths" }, { name: "Projekte", href: "#projects" }, { name: "Über mich", href: "#bio" }, + { name: "Erfahrung", href: "#experience" }, { name: "Kontakt", href: "#contact" }, ]; diff --git a/artifacts/joachim-portfolio/src/pages/home.tsx b/artifacts/joachim-portfolio/src/pages/home.tsx index fc6da50..b9c3acd 100644 --- a/artifacts/joachim-portfolio/src/pages/home.tsx +++ b/artifacts/joachim-portfolio/src/pages/home.tsx @@ -3,6 +3,7 @@ import { Competencies } from "@/components/competencies"; import { Projects } from "@/components/projects"; import { Strengths } from "@/components/strengths"; import { Bio } from "@/components/bio"; +import { Experience } from "@/components/experience"; import { Contact } from "@/components/contact"; import { Navbar } from "@/components/navbar"; @@ -32,6 +33,10 @@ export default function Home() { +
+ +
+