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() { +
+ +
+