{
    "source": "https://moritzschacke.de/",
    "locales": [
        "de",
        "en",
        "fr"
    ],
    "profile": {
        "name": "Moritz Schacke",
        "title": {
            "de": "Softwareentwickler & Wirtschaftsinformatiker",
            "en": "Software Developer & Business Informatics Specialist",
            "fr": "Développeur logiciel & informaticien de gestion"
        },
        "tagline": {
            "de": "Verständlichkeit. Wartbarkeit. Performance.",
            "en": "Clarity. Maintainability. Performance.",
            "fr": "Clarté. Maintenabilité. Performance."
        },
        "claim": {
            "de": "Software mit Bauplan.",
            "en": "Software, built to plan.",
            "fr": "Du logiciel construit sur plan."
        },
        "summary": {
            "de": "Ich baue Software mit Bauplan: verständlich für alle, die sie weiterentwickeln, wartbar über Jahre im Betrieb und schnell für alle, die sie benutzen. Seit 2020 entwickle und betreibe ich das Support-Ökosystem der Behnke Gruppe. Nebenberuflich nehme ich mit devgineers Aufträge an: Software, Entwicklungsprozesse und Product Security.",
            "en": "I build software to a plan: understandable for whoever develops it next, maintainable through years in production and fast for everyone who uses it. Since 2020 I have been building and running the support ecosystem of the Behnke Group. Alongside, I take on commissions with devgineers: software, development processes and product security.",
            "fr": "Je construis du logiciel sur plan : compréhensible pour ceux qui le font évoluer, maintenable pendant des années en production et rapide pour ceux qui l'utilisent. Depuis 2020, je développe et exploite l'écosystème de support du groupe Behnke. À titre secondaire, j'accepte des missions avec devgineers : logiciel, processus de développement et sécurité produit."
        },
        "principles": [
            {
                "id": "clarity",
                "name": {
                    "de": "Verständlich",
                    "en": "Understandable",
                    "fr": "Compréhensible"
                },
                "description": {
                    "de": "Code, den auch die nächste Person ohne mich versteht. Klare Namen, klare Grenzen, keine Magie.",
                    "en": "Code the next person understands without me. Clear names, clear boundaries, no magic.",
                    "fr": "Du code que la personne suivante comprend sans moi. Des noms clairs, des limites claires, pas de magie."
                }
            },
            {
                "id": "maintainability",
                "name": {
                    "de": "Wartbar",
                    "en": "Maintainable",
                    "fr": "Maintenable"
                },
                "description": {
                    "de": "Gebaut für Jahre im Betrieb, nicht nur bis zum Launch. Tests, Updates und Monitoring gehören zum Plan.",
                    "en": "Built for years in production, not just until launch. Tests, updates and monitoring are part of the plan.",
                    "fr": "Conçu pour des années en production, pas seulement jusqu'au lancement. Tests, mises à jour et supervision font partie du plan."
                }
            },
            {
                "id": "performance",
                "name": {
                    "de": "Schnell",
                    "en": "Fast",
                    "fr": "Rapide"
                },
                "description": {
                    "de": "Performance ist eine Anforderung, kein Nachtrag. Gemessen, nicht geschätzt.",
                    "en": "Performance is a requirement, not an afterthought. Measured, not guessed.",
                    "fr": "La performance est une exigence, pas un ajout. Mesurée, pas estimée."
                }
            }
        ],
        "business": {
            "name": "devgineers",
            "project": "devgineers",
            "url": "https://devgineers.de",
            "contact": "https://devgineers.de/kontakt",
            "offers": "https://devgineers.de/angebote",
            "subline": {
                "de": "Software Engineering, Secure SDLC & CRA-Beratung",
                "en": "Software engineering, secure SDLC & CRA consulting",
                "fr": "Ingénierie logicielle, SDLC sécurisé & conseil CRA"
            },
            "status": {
                "de": "Nebenberuflich selbstständig – nimmt Aufträge an",
                "en": "Part-time self-employed – taking on commissions",
                "fr": "Indépendant à titre secondaire – accepte des missions"
            },
            "statement": {
                "de": "Software. Prozesse. Sicherheit.",
                "en": "Software. Processes. Security.",
                "fr": "Logiciel. Processus. Sécurité."
            },
            "summary": {
                "de": "Über devgineers nehme ich nebenberuflich Aufträge an: individuelle Software, Modernisierung und Neuentwicklung, Webseiten mit Hosting und Wartung, Linux-Server, Entwicklungsprozesse (Secure SDLC, Scrum) und technische Product-Security- und CRA-Beratung – in Sprints, bei denen jeder Zwischenstand sichtbar ist.",
                "en": "Through devgineers I take on commissions alongside my job: custom software, modernisation and rebuilds, websites with hosting and maintenance, Linux servers, development processes (secure SDLC, Scrum) and technical product security and CRA consulting – in sprints where every interim state is visible.",
                "fr": "Via devgineers, j'accepte des missions à titre secondaire : logiciels sur mesure, modernisation et refonte, sites web avec hébergement et maintenance, serveurs Linux, processus de développement (SDLC sécurisé, Scrum) et conseil technique en sécurité produit et CRA – en sprints où chaque étape est visible."
            }
        },
        "motto": {
            "de": "Ihr Problem zuerst. Dann der Stack.",
            "en": "Your problem first. Then the stack.",
            "fr": "Votre problème d'abord. Ensuite la stack."
        },
        "focus": [
            {
                "de": "Web-Plattformen mit PHP",
                "en": "Web platforms in PHP",
                "fr": "Plateformes web en PHP"
            },
            {
                "de": "Software-Architektur",
                "en": "Software architecture",
                "fr": "Architecture logicielle"
            },
            {
                "de": "Linux-Betrieb",
                "en": "Linux operations",
                "fr": "Exploitation Linux"
            },
            {
                "de": "Security & CRA",
                "en": "Security & CRA",
                "fr": "Sécurité & CRA"
            },
            {
                "de": "KI-gestützte Entwicklung",
                "en": "AI-assisted development",
                "fr": "Développement assisté par IA"
            }
        ],
        "highlights": [
            {
                "value": "6+",
                "label": {
                    "de": "Jahre Programmierung",
                    "en": "years of coding",
                    "fr": "années de programmation"
                }
            },
            {
                "value": "5",
                "label": {
                    "de": "Jahre Plattformen im Dauerbetrieb",
                    "en": "years of platforms in continuous production",
                    "fr": "années de plateformes en production continue"
                }
            },
            {
                "value": "B.Sc.",
                "label": {
                    "de": "Wirtschaftsinformatik",
                    "en": "Business Informatics",
                    "fr": "Informatique de gestion"
                }
            },
            {
                "value": "6",
                "label": {
                    "de": "Einstiegsangebote über devgineers",
                    "en": "entry offers via devgineers",
                    "fr": "offres d'entrée via devgineers"
                }
            }
        ],
        "location": {
            "region": "Saarland",
            "country": "DE",
            "remote": {
                "de": "Remote weltweit",
                "en": "Remote worldwide",
                "fr": "À distance, dans le monde entier"
            }
        },
        "languages": [
            {
                "code": "de",
                "level": "native",
                "name": {
                    "de": "Deutsch",
                    "en": "German",
                    "fr": "Allemand"
                },
                "levelLabel": {
                    "de": "Muttersprache",
                    "en": "Native",
                    "fr": "Langue maternelle"
                }
            },
            {
                "code": "en",
                "level": "C1",
                "name": {
                    "de": "Englisch",
                    "en": "English",
                    "fr": "Anglais"
                },
                "levelLabel": {
                    "de": "C1",
                    "en": "C1",
                    "fr": "C1"
                }
            },
            {
                "code": "fr",
                "level": "B1",
                "name": {
                    "de": "Französisch",
                    "en": "French",
                    "fr": "Français"
                },
                "levelLabel": {
                    "de": "B1",
                    "en": "B1",
                    "fr": "B1"
                }
            },
            {
                "code": "nl",
                "level": "A1",
                "name": {
                    "de": "Niederländisch",
                    "en": "Dutch",
                    "fr": "Néerlandais"
                },
                "levelLabel": {
                    "de": "A1",
                    "en": "A1",
                    "fr": "A1"
                }
            }
        ],
        "contact": {
            "email": "info@moritzschacke.de",
            "terminal": "gast@moritzschacke.de",
            "note": {
                "de": "Der schnellste Weg ist die direkte Mail.",
                "en": "The fastest way is a direct email.",
                "fr": "Le moyen le plus rapide est un e-mail direct."
            }
        },
        "links": [
            {
                "id": "website",
                "label": "moritzschacke.de",
                "url": "https://moritzschacke.de"
            },
            {
                "id": "github",
                "label": "GitHub",
                "url": "https://github.com/moritzschacke"
            },
            {
                "id": "gitlab",
                "label": "GitLab",
                "url": "https://gitlab.com/moritzschacke"
            },
            {
                "id": "linkedin",
                "label": "LinkedIn",
                "url": "https://www.linkedin.com/in/moritz-schacke-03b2451a5"
            }
        ]
    },
    "experience": {
        "positions": [
            {
                "id": "devgineers-owner",
                "start": "2026-10",
                "end": null,
                "employer": {
                    "de": "Nebenberuflich selbstständig",
                    "en": "Part-time self-employed",
                    "fr": "Indépendant à titre secondaire"
                },
                "company": "devgineers",
                "role": {
                    "de": "Inhaber – Software Engineering, Secure SDLC & CRA-Beratung",
                    "en": "Owner – software engineering, secure SDLC & CRA consulting",
                    "fr": "Propriétaire – ingénierie logicielle, SDLC sécurisé & conseil CRA"
                },
                "description": {
                    "de": "Neben meiner Festanstellung nehme ich mit devgineers Aufträge an – von der ersten Frage bis zur Übergabe als einziger Ansprechpartner.",
                    "en": "Alongside my employment I take on commissions with devgineers – as the single contact from the first question to handover.",
                    "fr": "En parallèle de mon emploi, j'accepte des missions avec devgineers – seul interlocuteur de la première question à la remise."
                },
                "highlights": [
                    {
                        "de": "Individuelle Software, Modernisierung und Neuentwicklung in Sprints mit lauffähigem Stand nach jedem Sprint.",
                        "en": "Custom software, modernisation and rebuilds in sprints with a working state after every sprint.",
                        "fr": "Logiciels sur mesure, modernisation et refonte en sprints avec une version utilisable à chaque sprint."
                    },
                    {
                        "de": "Webseiten mit Hosting und Wartung sowie Einrichtung, Absicherung und Wartung von Linux-Servern.",
                        "en": "Websites with hosting and maintenance, and setting up, hardening and maintaining Linux servers.",
                        "fr": "Sites web avec hébergement et maintenance, installation, sécurisation et maintenance de serveurs Linux."
                    },
                    {
                        "de": "Entwicklungsprozesse und Product Security: Secure SDLC, Scrum, CRA Gap Assessments und Secure SDLC Reviews.",
                        "en": "Development processes and product security: secure SDLC, Scrum, CRA gap assessments and secure SDLC reviews.",
                        "fr": "Processus de développement et sécurité produit : SDLC sécurisé, Scrum, CRA gap assessments et secure SDLC reviews."
                    }
                ]
            },
            {
                "id": "behnke-pdsc-tb",
                "start": "2026-10",
                "end": null,
                "employer": "Behnke Gruppe",
                "company": "Telefonbau Behnke GmbH",
                "role": {
                    "de": "Beauftragter für Produkt- und Entwicklungssicherheit (PDSC)",
                    "en": "Product and Development Security Coordinator (PDSC)",
                    "fr": "Responsable de la sécurité des produits et du développement (PDSC)"
                },
                "description": {
                    "de": "Zusätzlich zu meiner Rolle als Entwickler verantworte ich die Produkt- und Entwicklungssicherheit: vom Cyber Resilience Act über sichere Entwicklungsprozesse bis zur Nachweisführung in CI/CD.",
                    "en": "In addition to my role as a developer, I am responsible for product and development security: from the Cyber Resilience Act to secure development processes and evidence in CI/CD.",
                    "fr": "En plus de mon rôle de développeur, je suis responsable de la sécurité des produits et du développement : du Cyber Resilience Act aux processus de développement sécurisés et à la traçabilité dans la CI/CD."
                },
                "highlights": [
                    {
                        "de": "Umsetzung des Cyber Resilience Act (Verordnung (EU) 2024/2847) für die Produkte: Anforderungs- und Risikoanalyse, technische Dokumentation und Abgleich mit harmonisierten EU-Normen wie EN 18031.",
                        "en": "Implementing the Cyber Resilience Act (Regulation (EU) 2024/2847) for the products: requirements and risk analysis, technical documentation and alignment with harmonised EU standards such as EN 18031.",
                        "fr": "Mise en œuvre du Cyber Resilience Act (règlement (UE) 2024/2847) pour les produits : analyse des exigences et des risques, documentation technique et alignement sur les normes européennes harmonisées comme l'EN 18031."
                    },
                    {
                        "de": "Schwachstellenmanagement: zentrale Meldestelle für Schwachstellen, vertrauliche Bearbeitung mit den Meldefristen aus CRA Art. 14 und DSGVO Art. 33, veröffentlichte Security-Advisories.",
                        "en": "Vulnerability management: a central reporting point for vulnerabilities, confidential handling within the deadlines of CRA Art. 14 and GDPR Art. 33, published security advisories.",
                        "fr": "Gestion des vulnérabilités : point de signalement central, traitement confidentiel dans les délais de l'art. 14 du CRA et de l'art. 33 du RGPD, avis de sécurité publiés."
                    },
                    {
                        "de": "Sichere Entwicklungsprozesse: Anforderungen, Reviews, Tests und Freigaben nachvollziehbar vom Commit bis zum Release – als Grundlage für Konformitätsbewertung und Updates über den gesamten Supportzeitraum.",
                        "en": "Secure development processes: requirements, reviews, tests and approvals traceable from commit to release – as the basis for conformity assessment and updates throughout the support period.",
                        "fr": "Processus de développement sécurisés : exigences, revues, tests et validations traçables du commit à la release – base de l'évaluation de la conformité et des mises à jour pendant toute la période de support."
                    },
                    {
                        "de": "CI/CD mit GitLab Ultimate: Security-Scans für Code, Abhängigkeiten und Secrets, Software-Stücklisten (SBOM), Tests und Coverage als Nachweise in der Pipeline.",
                        "en": "CI/CD with GitLab Ultimate: security scans for code, dependencies and secrets, software bills of materials (SBOM), tests and coverage as evidence in the pipeline.",
                        "fr": "CI/CD avec GitLab Ultimate : analyses de sécurité du code, des dépendances et des secrets, nomenclatures logicielles (SBOM), tests et couverture comme preuves dans le pipeline."
                    },
                    {
                        "de": "Sichere Lieferkette bis in die Produktion: signierte, verschlüsselte Software-Releases sowie signierte Firmware und Secure Boot bei der Erstprogrammierung der Geräte.",
                        "en": "A secure supply chain down to production: signed, encrypted software releases as well as signed firmware and secure boot when devices are first programmed.",
                        "fr": "Une chaîne d'approvisionnement sécurisée jusqu'à la production : releases logicielles signées et chiffrées, firmware signé et secure boot lors de la première programmation des appareils."
                    }
                ]
            },
            {
                "id": "behnke-developer-tb",
                "start": "2026-01",
                "end": null,
                "employer": "Behnke Gruppe",
                "company": "Telefonbau Behnke GmbH",
                "role": {
                    "de": "Wirtschaftsinformatiker im Bereich Softwareentwicklung",
                    "en": "Business Informatics Specialist, Software Development",
                    "fr": "Informaticien de gestion, développement logiciel"
                },
                "description": {
                    "de": "Entwicklung und Betrieb der Web-Plattformen und internen Werkzeuge der Gruppe – sicher, dokumentiert und mit KI-gestützten Werkzeugen.",
                    "en": "Developing and running the group's web platforms and internal tools – secure, documented and with AI-assisted tooling.",
                    "fr": "Développement et exploitation des plateformes web et des outils internes du groupe – sécurisés, documentés et avec des outils assistés par l'IA."
                },
                "highlights": [
                    {
                        "de": "Support-Ökosystem: Neuentwicklung des Support-Servers (PHP 8.5, REST-API, Anmeldung mit TOTP und Passkeys), Security-Meldestelle, Statusseite und Wiki-System für die Produktdokumentation in drei Sprachen.",
                        "en": "Support ecosystem: the new support server (PHP 8.5, REST API, sign-in with TOTP and passkeys), the security reporting point, the status page and the wiki system for product documentation in three languages.",
                        "fr": "Écosystème de support : nouveau serveur de support (PHP 8.5, API REST, connexion par TOTP et passkeys), point de signalement de sécurité, page de statut et système wiki pour la documentation produit en trois langues."
                    },
                    {
                        "de": "Sicherer und dokumentierter Code: strikte Typisierung, statische Analyse auf höchster Stufe (PHPStan max), automatisierte Tests in GitLab CI, Sicherheitsfunktionen im Framework statt im Einzelfall und Dokumentation, die mit dem Code gepflegt wird.",
                        "en": "Secure and documented code: strict typing, static analysis at the highest level (PHPStan max), automated tests in GitLab CI, security built into the framework rather than case by case, and documentation maintained alongside the code.",
                        "fr": "Code sécurisé et documenté : typage strict, analyse statique au niveau maximal (PHPStan max), tests automatisés dans GitLab CI, sécurité intégrée au framework plutôt qu'au cas par cas, et documentation maintenue avec le code."
                    },
                    {
                        "de": "KI in der Entwicklung: KI-gestütztes Arbeiten mit Claude Code und Codex, Anbindung von LLM-APIs und KI-Plattformen – mit Review, Tests und klaren Grenzen dafür, was ein Agent lesen und ändern darf.",
                        "en": "AI in development: AI-assisted work with Claude Code and Codex, integrating LLM APIs and AI platforms – with review, tests and clear limits on what an agent may read and change.",
                        "fr": "L'IA dans le développement : travail assisté par l'IA avec Claude Code et Codex, intégration d'API de LLM et de plateformes d'IA – avec revue, tests et des limites claires sur ce qu'un agent peut lire et modifier."
                    },
                    {
                        "de": "Interne Werkzeuge und Infrastruktur: lizenzgesicherte APIs für Firmware, Handbücher und Changelogs, ein gemeinsames CDN für alle Webprojekte und Werkzeuge für die Produktion.",
                        "en": "Internal tools and infrastructure: licence-secured APIs for firmware, manuals and changelogs, a shared CDN for all web projects and tools for production.",
                        "fr": "Outils internes et infrastructure : API protégées par licence pour firmware, manuels et journaux de modifications, un CDN commun à tous les projets web et des outils pour la production."
                    }
                ]
            },
            {
                "id": "behnke-developer-nz",
                "start": "2025-10",
                "end": "2025-12",
                "employer": "Behnke Gruppe",
                "company": "Notrufzentrale Behnke GmbH",
                "role": {
                    "de": "Wirtschaftsinformatiker im Bereich Softwareentwicklung",
                    "en": "Business Informatics Specialist, Software Development",
                    "fr": "Informaticien de gestion, développement logiciel"
                },
                "description": null
            },
            {
                "id": "behnke-working-student-msc",
                "start": "2025-04",
                "end": "2025-09",
                "employer": "Behnke Gruppe",
                "company": "Telefonbau Behnke GmbH",
                "role": {
                    "de": "Werkstudent (Master of Science)",
                    "en": "Working Student (Master of Science)",
                    "fr": "Étudiant salarié (Master of Science)"
                },
                "description": {
                    "de": "Entwicklung neuer Features und interner Tools, Ausbau zentraler Systeme.",
                    "en": "Development of new features and internal tools, extension of core systems.",
                    "fr": "Développement de nouvelles fonctionnalités et d'outils internes, extension des systèmes centraux."
                }
            },
            {
                "id": "behnke-working-student-bsc",
                "start": "2020-10",
                "end": "2025-03",
                "employer": "Behnke Gruppe",
                "company": "Telefonbau Behnke GmbH",
                "role": {
                    "de": "Werkstudent (Bachelor of Science)",
                    "en": "Working Student (Bachelor of Science)",
                    "fr": "Étudiant salarié (Bachelor of Science)"
                },
                "description": {
                    "de": "Modernisierung bestehender PHP- und Java-Tools.",
                    "en": "Modernisation of existing PHP and Java tools.",
                    "fr": "Modernisation d'outils PHP et Java existants."
                }
            },
            {
                "id": "behnke-support-assistant",
                "start": "2020-08",
                "end": "2020-10",
                "employer": "Behnke Gruppe",
                "company": "Telefonbau Behnke GmbH",
                "role": {
                    "de": "Aushilfe in Technik und Support",
                    "en": "Temporary Assistant, Technology & Support",
                    "fr": "Auxiliaire technique et support"
                },
                "description": null
            }
        ],
        "freelance": []
    },
    "education": {
        "entries": [
            {
                "id": "msc-wi",
                "start": "2025-04",
                "end": "2025-09",
                "status": "discontinued",
                "institution": "IWi im DFKI, Universität des Saarlandes",
                "city": "Saarbrücken",
                "degree": {
                    "de": "Master of Science Wirtschaftsinformatik",
                    "en": "Master of Science in Business Informatics",
                    "fr": "Master of Science en informatique de gestion"
                },
                "description": {
                    "de": "Nach einem Semester beendet.",
                    "en": "Discontinued after one semester.",
                    "fr": "Interrompu après un semestre."
                },
                "focus": [
                    {
                        "de": "Data Engineering",
                        "en": "Data Engineering",
                        "fr": "Ingénierie des données"
                    },
                    {
                        "de": "Künstliche Intelligenz",
                        "en": "Artificial Intelligence",
                        "fr": "Intelligence artificielle"
                    },
                    {
                        "de": "Computergrafik",
                        "en": "Computer Graphics",
                        "fr": "Infographie"
                    },
                    {
                        "de": "Projektmanagement",
                        "en": "Project Management",
                        "fr": "Gestion de projet"
                    },
                    {
                        "de": "IT-Recht",
                        "en": "IT Law",
                        "fr": "Droit de l'informatique"
                    }
                ]
            },
            {
                "id": "bsc-wi",
                "start": "2021-10",
                "end": "2025-03",
                "status": "completed",
                "institution": "IWi im DFKI, Universität des Saarlandes",
                "city": "Saarbrücken",
                "degree": {
                    "de": "Bachelor of Science Wirtschaftsinformatik",
                    "en": "Bachelor of Science in Business Informatics",
                    "fr": "Bachelor of Science en informatique de gestion"
                },
                "description": {
                    "de": "Bachelorarbeit „KI als Innovator für die Automatisierung der Prozessmodellierung“: Vergleich von acht LLMs bei der BPMN-Generierung.",
                    "en": "Bachelor's thesis “AI as an Innovator for Automating Process Modelling”: a comparison of eight LLMs for BPMN generation.",
                    "fr": "Mémoire de bachelor « L'IA, innovatrice pour l'automatisation de la modélisation des processus » : comparaison de huit LLM pour la génération BPMN."
                },
                "thesis": "bachelor-thesis",
                "focus": [
                    {
                        "de": "Programmierung",
                        "en": "Programming",
                        "fr": "Programmation"
                    },
                    {
                        "de": "Algorithmen",
                        "en": "Algorithms",
                        "fr": "Algorithmique"
                    },
                    {
                        "de": "Software Engineering",
                        "en": "Software Engineering",
                        "fr": "Génie logiciel"
                    },
                    {
                        "de": "Big Data",
                        "en": "Big Data",
                        "fr": "Big Data"
                    },
                    {
                        "de": "Strategisches Management",
                        "en": "Strategic Management",
                        "fr": "Management stratégique"
                    },
                    {
                        "de": "Spieltheorie",
                        "en": "Game Theory",
                        "fr": "Théorie des jeux"
                    }
                ]
            },
            {
                "id": "bsc-cs",
                "start": "2020-10",
                "end": "2021-09",
                "status": "transferred",
                "institution": "SIC, Universität des Saarlandes",
                "city": "Saarbrücken",
                "degree": {
                    "de": "Bachelor of Science Informatik",
                    "en": "Bachelor of Science in Computer Science",
                    "fr": "Bachelor of Science en informatique"
                },
                "description": {
                    "de": "Wechsel in den Studiengang Wirtschaftsinformatik.",
                    "en": "Transferred to Business Informatics.",
                    "fr": "Réorientation vers l'informatique de gestion."
                },
                "focus": []
            },
            {
                "id": "abitur",
                "start": "2012-09",
                "end": "2020-07",
                "status": "completed",
                "institution": "Theodor-Heuss-Gymnasium",
                "city": "Sulzbach (Saar)",
                "degree": {
                    "de": "Abitur",
                    "en": "Abitur (German university entrance qualification)",
                    "fr": "Abitur (équivalent du baccalauréat)"
                },
                "description": {
                    "de": "Leistungskurse Mathematik und Englisch.",
                    "en": "Advanced courses in Mathematics and English.",
                    "fr": "Spécialités mathématiques et anglais."
                },
                "focus": []
            }
        ]
    },
    "projects": {
        "projects": [
            {
                "id": "behnke",
                "slug": "behnke",
                "featured": true,
                "start": "2020",
                "end": null,
                "name": {
                    "de": "Behnke Support-Ökosystem",
                    "en": "Behnke Support Ecosystem",
                    "fr": "Écosystème de support Behnke"
                },
                "category": {
                    "de": "Flaggschiff",
                    "en": "Flagship",
                    "fr": "Projet phare"
                },
                "role": {
                    "de": "Softwareentwicklung, Behnke Gruppe",
                    "en": "Software development, Behnke Group",
                    "fr": "Développement logiciel, groupe Behnke"
                },
                "summary": {
                    "de": "Support-Infrastruktur der Behnke Gruppe mit Geräteverwaltung, automatischen Updates, mehrsprachigem Dokumentations-Wiki, eigenem Status-Monitoring und Portal für Responsible Disclosure.",
                    "en": "Support infrastructure of the Behnke Group with device management, automatic updates, a multilingual documentation wiki, custom status monitoring and a responsible-disclosure portal.",
                    "fr": "Infrastructure de support du groupe Behnke : gestion des appareils, mises à jour automatiques, wiki de documentation multilingue, supervision maison et portail de divulgation responsable."
                },
                "components": [
                    {
                        "name": "Support-Server",
                        "url": "https://behnke.support",
                        "description": {
                            "de": "Geräteverwaltung und automatische Auslieferung von Updates.",
                            "en": "Device management and automatic update delivery.",
                            "fr": "Gestion des appareils et diffusion automatique des mises à jour."
                        }
                    },
                    {
                        "name": "Wiki",
                        "url": "https://wiki.behnke.support",
                        "description": {
                            "de": "Mehrsprachige Dokumentation mit Barrierefreiheit (Schriftgrößen, Kontrast, OpenDyslexic, Screen-Ruler) und PDF-Export.",
                            "en": "Multilingual documentation with accessibility features (font sizes, contrast, OpenDyslexic, screen ruler) and PDF export.",
                            "fr": "Documentation multilingue accessible (tailles de police, contraste, OpenDyslexic, règle de lecture) avec export PDF."
                        }
                    },
                    {
                        "name": "Status",
                        "url": "https://status.behnke.support",
                        "description": {
                            "de": "Eigenes Monitoring: DNS, TCP, TTFB-Latenz und Uptime-Historie.",
                            "en": "Custom monitoring: DNS, TCP, TTFB latency and uptime history.",
                            "fr": "Supervision maison : DNS, TCP, latence TTFB et historique de disponibilité."
                        }
                    },
                    {
                        "name": "Security",
                        "url": "https://security.behnke.support",
                        "description": {
                            "de": "Responsible-Disclosure-Portal mit veröffentlichten Advisories.",
                            "en": "Responsible-disclosure portal with published advisories.",
                            "fr": "Portail de divulgation responsable avec avis de sécurité publiés."
                        }
                    },
                    {
                        "name": "behnke-online.fr",
                        "url": "https://behnke-online.fr",
                        "description": {
                            "de": "Französischer Webauftritt der Gruppe.",
                            "en": "The group's French website.",
                            "fr": "Présence web française du groupe."
                        }
                    }
                ],
                "details": [
                    {
                        "de": "Den Ubuntu-VPS des Support-Servers habe ich selbst aufgesetzt und warte ihn dauerhaft – vom Deployment bis zum Monitoring.",
                        "en": "I set up the support server's Ubuntu VPS myself and maintain it continuously – from deployment to monitoring.",
                        "fr": "J'ai mis en place moi-même le VPS Ubuntu du serveur de support et je l'entretiens en continu – du déploiement à la supervision."
                    }
                ],
                "tech": [
                    "PHP",
                    "MySQL",
                    "JavaScript",
                    "Ubuntu VPS",
                    "i18n (DE/EN/FR)",
                    "Accessibility",
                    "Monitoring",
                    "Security"
                ],
                "links": [
                    {
                        "label": "behnke.support",
                        "url": "https://behnke.support"
                    }
                ]
            },
            {
                "id": "devgineers",
                "slug": "devgineers",
                "featured": true,
                "start": "2026-10",
                "end": null,
                "name": {
                    "de": "devgineers",
                    "en": "devgineers",
                    "fr": "devgineers"
                },
                "category": {
                    "de": "Nebenberufliche Selbstständigkeit",
                    "en": "Part-time business",
                    "fr": "Activité indépendante secondaire"
                },
                "role": {
                    "de": "Inhaber & Entwickler",
                    "en": "Owner & developer",
                    "fr": "Propriétaire & développeur"
                },
                "summary": {
                    "de": "Meine nebenberufliche Selbstständigkeit für Software Engineering, Secure SDLC und CRA-Beratung: individuelle Software, Modernisierung, Webseiten mit Hosting, Linux-Server, Entwicklungsprozesse und Product Security – Aufträge nehme ich über devgineers.de an.",
                    "en": "My part-time business for software engineering, secure SDLC and CRA consulting: custom software, modernisation, websites with hosting, Linux servers, development processes and product security – I take on commissions via devgineers.de.",
                    "fr": "Mon activité indépendante secondaire en ingénierie logicielle, SDLC sécurisé et conseil CRA : logiciels sur mesure, modernisation, sites web avec hébergement, serveurs Linux, processus de développement et sécurité produit – missions via devgineers.de."
                },
                "components": [],
                "details": [
                    {
                        "de": "Software. Prozesse. Sicherheit. – sechs Leistungen, jede einzeln beauftragbar: Software Engineering, Modernisierung & Neuentwicklung, Webseiten mit Hosting & Wartung, Linux-Server & Wartung, Development Processes und Product Security.",
                        "en": "Software. Processes. Security. – six services, each bookable on its own: software engineering, modernisation & rebuilds, websites with hosting & maintenance, Linux servers & maintenance, development processes and product security.",
                        "fr": "Logiciel. Processus. Sécurité. – six prestations, chacune commandable séparément : ingénierie logicielle, modernisation & refonte, sites web avec hébergement & maintenance, serveurs Linux & maintenance, processus de développement et sécurité produit."
                    },
                    {
                        "de": "Einstiegsangebote mit beschriebenem Umfang und Ergebnis: CRA Gap Assessment, Secure SDLC Review, Architecture Review, Modernisierungs-Check, Website-Paket und Software Discovery.",
                        "en": "Entry offers with a described scope and result: CRA Gap Assessment, Secure SDLC Review, Architecture Review, modernisation check, website package and Software Discovery.",
                        "fr": "Offres d'entrée au périmètre et résultat définis : CRA Gap Assessment, Secure SDLC Review, Architecture Review, diagnostic de modernisation, pack site web et Software Discovery."
                    },
                    {
                        "de": "Entwicklung in Sprints von meist zwei Wochen: Nach jedem Sprint gibt es einen lauffähigen Stand, Kunden steuern mit.",
                        "en": "Development in sprints of usually two weeks: a working state after every sprint, and clients steer along.",
                        "fr": "Développement en sprints de deux semaines en général : une version utilisable après chaque sprint, le client pilote avec."
                    },
                    {
                        "de": "Nachweise entstehen im Prozess: Sicherheitsprüfungen laufen bei jedem Release in der Pipeline, nicht erst vor einem Audit.",
                        "en": "Evidence is created in the process: security checks run in the pipeline with every release, not just before an audit.",
                        "fr": "Les preuves naissent dans le processus : les contrôles de sécurité tournent dans le pipeline à chaque release, pas seulement avant un audit."
                    },
                    {
                        "de": "Ein Ansprechpartner von der ersten Frage bis zur Übergabe. Technische CRA-Beratung ist keine Rechtsberatung, ein Assessment keine Zertifizierung.",
                        "en": "One contact from the first question to handover. Technical CRA consulting is not legal advice, and an assessment is not a certification.",
                        "fr": "Un seul interlocuteur de la première question à la remise. Le conseil CRA technique n'est pas un conseil juridique, et un assessment n'est pas une certification."
                    }
                ],
                "tech": [
                    "PHP 8.5",
                    "devgine",
                    "Secure SDLC",
                    "Scrum",
                    "CI/CD",
                    "CRA",
                    "Linux"
                ],
                "links": [
                    {
                        "label": "devgineers.de",
                        "url": "https://devgineers.de"
                    },
                    {
                        "label": {
                            "de": "Projekt besprechen",
                            "en": "Discuss a project",
                            "fr": "Discuter d'un projet"
                        },
                        "url": "https://devgineers.de/kontakt"
                    },
                    {
                        "label": {
                            "de": "Einstiegsangebote",
                            "en": "Entry offers",
                            "fr": "Offres d'entrée"
                        },
                        "url": "https://devgineers.de/angebote"
                    }
                ]
            },
            {
                "id": "devgine-web",
                "slug": "devgine-web",
                "featured": true,
                "start": "2026-07",
                "end": null,
                "name": {
                    "de": "devgine / web",
                    "en": "devgine / web",
                    "fr": "devgine / web"
                },
                "category": {
                    "de": "Eigene Engine",
                    "en": "Own engine",
                    "fr": "Moteur maison"
                },
                "role": {
                    "de": "Autor & Maintainer",
                    "en": "Author & maintainer",
                    "fr": "Auteur & mainteneur"
                },
                "summary": {
                    "de": "PSR-konforme PHP-Web-Engine: Container, Router, Middleware-Kernel, Views mit Komponenten-System und Datenbank-Layer – ohne Laufzeitabhängigkeiten außer PSR-Interfaces. Auf ihr läuft moritzschacke.de.",
                    "en": "PSR-compliant PHP web engine: container, router, middleware kernel, views with a component system and a database layer – with no runtime dependencies beyond PSR interfaces. moritzschacke.de runs on it.",
                    "fr": "Moteur web PHP conforme aux PSR : conteneur, routeur, noyau middleware, vues avec système de composants et couche base de données – sans dépendance d'exécution hormis les interfaces PSR. moritzschacke.de fonctionne avec."
                },
                "components": [
                    {
                        "name": "Container",
                        "url": null,
                        "description": {
                            "de": "PSR-11 mit Autowiring, kontextuellen Bindings und Service-Provider-Lebenszyklus.",
                            "en": "PSR-11 with autowiring, contextual bindings and a service-provider lifecycle.",
                            "fr": "PSR-11 avec autowiring, liaisons contextuelles et cycle de vie des service providers."
                        }
                    },
                    {
                        "name": "HTTP & Middleware",
                        "url": null,
                        "description": {
                            "de": "PSR-7/15, Onion-Middleware-Pipeline, Security-Header.",
                            "en": "PSR-7/15, onion middleware pipeline, security headers.",
                            "fr": "PSR-7/15, pipeline middleware en oignon, en-têtes de sécurité."
                        }
                    },
                    {
                        "name": "Routing",
                        "url": null,
                        "description": {
                            "de": "Benannte Routen, Regex-Parameter, Attribut-Routen, Model-Binding.",
                            "en": "Named routes, regex-constrained parameters, attribute routes, model binding.",
                            "fr": "Routes nommées, paramètres contraints par regex, routes par attributs, liaison de modèles."
                        }
                    },
                    {
                        "name": "Views",
                        "url": null,
                        "description": {
                            "de": "PHP-Templates mit Layouts und Sections, Komponenten bündeln HTML/CSS/JS.",
                            "en": "PHP templates with layouts and sections; components bundle HTML/CSS/JS.",
                            "fr": "Templates PHP avec layouts et sections ; les composants regroupent HTML/CSS/JS."
                        }
                    },
                    {
                        "name": "Database",
                        "url": null,
                        "description": {
                            "de": "Query-Builder mit Prepared Statements, Schema-Builder, CLI-Migrationen.",
                            "en": "Query builder with prepared statements, schema builder, CLI migrations.",
                            "fr": "Query builder avec requêtes préparées, schema builder, migrations en CLI."
                        }
                    },
                    {
                        "name": "Auth & Sessions",
                        "url": null,
                        "description": {
                            "de": "Session-Guard, Remember-Me, CSRF-Schutz, sichere Cookies (HttpOnly/SameSite/Secure).",
                            "en": "Session guard, remember-me, CSRF protection, secure cookies (HttpOnly/SameSite/Secure).",
                            "fr": "Session guard, « se souvenir de moi », protection CSRF, cookies sécurisés (HttpOnly/SameSite/Secure)."
                        }
                    },
                    {
                        "name": {
                            "de": "Weitere Module",
                            "en": "Further modules",
                            "fr": "Autres modules"
                        },
                        "url": null,
                        "description": {
                            "de": "Validierung, PSR-16-Cache, PSR-14-Events, PSR-3-Logging, Mail, Filesystem, Lokalisierung, Rate-Limiting, Pagination, CLI, Test-Helfer.",
                            "en": "Validation, PSR-16 cache, PSR-14 events, PSR-3 logging, mail, filesystem, localisation, rate limiting, pagination, CLI, testing helpers.",
                            "fr": "Validation, cache PSR-16, événements PSR-14, journalisation PSR-3, mail, système de fichiers, localisation, limitation de débit, pagination, CLI, outils de test."
                        }
                    }
                ],
                "details": [
                    {
                        "de": "PHPStan auf Level max ohne Baseline, Tests für alle öffentlichen APIs, PSR-12 per php-cs-fixer.",
                        "en": "PHPStan at level max without a baseline, tests for every public API, PSR-12 enforced by php-cs-fixer.",
                        "fr": "PHPStan au niveau max sans baseline, tests pour toutes les API publiques, PSR-12 appliqué par php-cs-fixer."
                    },
                    {
                        "de": "Semantic Versioning, Conventional Commits, Changelog nach Keep a Changelog.",
                        "en": "Semantic versioning, conventional commits, changelog following Keep a Changelog.",
                        "fr": "Versionnage sémantique, Conventional Commits, changelog au format Keep a Changelog."
                    },
                    {
                        "de": "Closed Source – Codebeispiele und Deep-Dives auf Anfrage.",
                        "en": "Closed source – code samples and deep dives on request.",
                        "fr": "Code source fermé – exemples de code et présentations détaillées sur demande."
                    }
                ],
                "tech": [
                    "PHP 8.5",
                    "PSR-3/7/11/14/15/16/17",
                    "PHPStan",
                    "PHPUnit",
                    "PSR-12"
                ],
                "links": []
            },
            {
                "id": "devgine-game",
                "slug": "devgine-game",
                "featured": true,
                "start": null,
                "end": null,
                "name": {
                    "de": "devgine / game",
                    "en": "devgine / game",
                    "fr": "devgine / game"
                },
                "category": {
                    "de": "Eigene Engine",
                    "en": "Own engine",
                    "fr": "Moteur maison"
                },
                "role": {
                    "de": "Autor & Maintainer",
                    "en": "Author & maintainer",
                    "fr": "Auteur & mainteneur"
                },
                "summary": {
                    "de": "2D-Game-Engine auf Basis von libGDX mit Entity-Component-System: Komposition statt Vererbung, ausgelegt auf viele Entities pro Frame.",
                    "en": "2D game engine built on libGDX with an entity component system: composition over inheritance, designed for many entities per frame.",
                    "fr": "Moteur de jeu 2D basé sur libGDX avec un système entité-composant : composition plutôt qu'héritage, conçu pour de nombreuses entités par frame."
                },
                "components": [],
                "details": [
                    {
                        "de": "Entities sind IDs, Komponenten reine Daten, Systeme die Logik.",
                        "en": "Entities are IDs, components are pure data, systems hold the logic.",
                        "fr": "Les entités sont des identifiants, les composants de simples données, les systèmes portent la logique."
                    },
                    {
                        "de": "Datenorientiertes Design statt tiefer Objektgraphen.",
                        "en": "Data-oriented design instead of deep object graphs.",
                        "fr": "Conception orientée données plutôt que des graphes d'objets profonds."
                    },
                    {
                        "de": "libGDX übernimmt Rendering, Input und Plattform-Layer; die Architektur darüber ist selbst gebaut.",
                        "en": "libGDX handles rendering, input and the platform layer; the architecture on top is custom.",
                        "fr": "libGDX gère le rendu, les entrées et la couche plateforme ; l'architecture au-dessus est faite maison."
                    },
                    {
                        "de": "Motivation: Fertige Game-Engines bringen für 2D-Projekte oft mehr Editor als Engine mit.",
                        "en": "Motivation: off-the-shelf game engines often ship more editor than engine for 2D projects.",
                        "fr": "Motivation : pour des projets 2D, les moteurs existants apportent souvent plus d'éditeur que de moteur."
                    }
                ],
                "tech": [
                    "Java",
                    "libGDX",
                    "OpenGL",
                    "ECS",
                    "Data-oriented design"
                ],
                "links": []
            },
            {
                "id": "bachelor-thesis",
                "slug": "bachelorarbeit",
                "featured": true,
                "start": null,
                "end": "2025-01",
                "name": {
                    "de": "Bachelorarbeit: LLMs × BPMN",
                    "en": "Bachelor's Thesis: LLMs × BPMN",
                    "fr": "Mémoire de bachelor : LLM × BPMN"
                },
                "category": {
                    "de": "Forschung",
                    "en": "Research",
                    "fr": "Recherche"
                },
                "role": {
                    "de": "Autor, B.Sc. Wirtschaftsinformatik (IWi im DFKI, Universität des Saarlandes)",
                    "en": "Author, B.Sc. Business Informatics (IWi at DFKI, Saarland University)",
                    "fr": "Auteur, B.Sc. informatique de gestion (IWi au DFKI, Université de la Sarre)"
                },
                "summary": {
                    "de": "Systematischer Vergleich von acht LLMs bei der Generierung von BPMN-2.0-Modellen aus natürlicher Sprache – mit eigenem Evaluations-Framework und realen Datensätzen.",
                    "en": "Systematic comparison of eight LLMs generating BPMN 2.0 models from natural language – with a custom evaluation framework and real-world datasets.",
                    "fr": "Comparaison systématique de huit LLM pour générer des modèles BPMN 2.0 à partir du langage naturel – avec un cadre d'évaluation maison et des jeux de données réels."
                },
                "research": {
                    "question": {
                        "de": "Können frei verfügbare Sprachmodelle aus natürlichsprachigen Beschreibungen valide, nutzbare BPMN-2.0-Modelle erzeugen?",
                        "en": "Can freely available language models generate valid, usable BPMN 2.0 models from natural-language descriptions?",
                        "fr": "Des modèles de langage librement accessibles peuvent-ils produire des modèles BPMN 2.0 valides et exploitables à partir de descriptions en langage naturel ?"
                    },
                    "models": [
                        "o1",
                        "GPT-4o",
                        "GPT-4o-mini",
                        "GPT-4",
                        "Claude",
                        "Gemini",
                        "Gemini 2.0",
                        "Mistral 7B"
                    ],
                    "datasets": [
                        "Camunda",
                        "hdBPMN"
                    ],
                    "method": {
                        "de": "Über 20 Aufgaben in zwei Aufgabenklassen, darunter sieben Pseudo-BPMN-Aufgaben zu gezielten Spezifikationen; identische Prompting-Strategie für alle Modelle.",
                        "en": "20+ tasks in two task classes, including seven pseudo-BPMN tasks targeting specific specifications; identical prompting strategy for all models.",
                        "fr": "Plus de 20 tâches réparties en deux classes, dont sept tâches pseudo-BPMN ciblant des spécifications précises ; même stratégie de prompting pour tous les modèles."
                    },
                    "metrics": [
                        {
                            "de": "Valides BPMN-2.0-XML",
                            "en": "Valid BPMN 2.0 XML",
                            "fr": "XML BPMN 2.0 valide"
                        },
                        {
                            "de": "Vollständigkeit",
                            "en": "Completeness",
                            "fr": "Complétude"
                        },
                        {
                            "de": "Präzision",
                            "en": "Precision",
                            "fr": "Précision"
                        },
                        {
                            "de": "F1-Score",
                            "en": "F1 score",
                            "fr": "Score F1"
                        },
                        {
                            "de": "Logische Korrektheit (Soundness)",
                            "en": "Logical correctness (soundness)",
                            "fr": "Correction logique (soundness)"
                        }
                    ],
                    "findings": [
                        {
                            "de": "Klare Anweisungen führten zu nahezu fehlerfreien Modellen.",
                            "en": "Clear instructions produced near error-free models.",
                            "fr": "Des instructions claires ont donné des modèles presque sans erreur."
                        },
                        {
                            "de": "Unstrukturierte Prozessbeschreibungen verschlechterten die Ergebnisse aller Modelle deutlich.",
                            "en": "Unstructured process descriptions clearly degraded the results of every model.",
                            "fr": "Les descriptions de processus non structurées ont nettement dégradé les résultats de tous les modèles."
                        },
                        {
                            "de": "Valides XML zu erzeugen war schwieriger, als den Prozess zu verstehen.",
                            "en": "Producing valid XML proved harder than understanding the process.",
                            "fr": "Produire un XML valide s'est révélé plus difficile que de comprendre le processus."
                        },
                        {
                            "de": "Für den produktiven Einsatz bleibt menschliche Prüfung nötig.",
                            "en": "Human review remains necessary for production use.",
                            "fr": "Une relecture humaine reste nécessaire pour un usage en production."
                        }
                    ]
                },
                "components": [],
                "details": [],
                "tech": [
                    "LLM evaluation",
                    "BPMN 2.0",
                    "Prompt engineering",
                    "F1 score",
                    "Camunda",
                    "hdBPMN"
                ],
                "links": []
            },
            {
                "id": "gametecx",
                "slug": "gametecx",
                "featured": false,
                "start": "2020",
                "end": null,
                "name": {
                    "de": "GameTecX",
                    "en": "GameTecX",
                    "fr": "GameTecX"
                },
                "category": {
                    "de": "Gaming-Club",
                    "en": "Gaming club",
                    "fr": "Club de jeu"
                },
                "role": {
                    "de": "Gründer & Entwickler",
                    "en": "Founder & developer",
                    "fr": "Fondateur & développeur"
                },
                "summary": {
                    "de": "Gaming-Club unter Freunden und zugleich das Labor, in dem Technik-Ideen ohne Kundendruck entstehen – mit eigenen Minecraft-Plugins und -Mods sowie GTA-Roleplay-Projekten.",
                    "en": "A gaming club among friends and, at the same time, the lab where tech ideas grow without client pressure – with custom Minecraft plugins and mods as well as GTA roleplay projects.",
                    "fr": "Un club de jeu entre amis et, en même temps, le laboratoire où naissent des idées techniques sans pression client – avec des plugins et mods Minecraft maison et des projets de roleplay GTA."
                },
                "components": [
                    {
                        "name": "Minecraft-Server",
                        "url": null,
                        "description": {
                            "de": "Eigene Plugins auf Basis der Spigot-API, zugeschnitten auf die Community.",
                            "en": "Custom plugins based on the Spigot API, tailored to the community.",
                            "fr": "Plugins maison basés sur l'API Spigot, adaptés à la communauté."
                        }
                    },
                    {
                        "name": "Minecraft-Mods",
                        "url": null,
                        "description": {
                            "de": "Eigene Mods mit Forge.",
                            "en": "Custom mods built with Forge.",
                            "fr": "Mods maison développés avec Forge."
                        }
                    },
                    {
                        "name": "GTA-RP",
                        "url": null,
                        "description": {
                            "de": "GTA-Roleplay-Serverprojekte und Spielprototypen.",
                            "en": "GTA roleplay server projects and game prototypes.",
                            "fr": "Projets de serveurs de roleplay GTA et prototypes de jeux."
                        }
                    }
                ],
                "details": [
                    {
                        "de": "Eine Spielwiese, auf der Technik trotzdem zuverlässig laufen muss – denn abends wird gespielt.",
                        "en": "A playground where the tech still has to run reliably – because people play in the evening.",
                        "fr": "Un terrain de jeu où la technique doit tout de même fonctionner de manière fiable – car le soir, on joue."
                    }
                ],
                "tech": [
                    "Java",
                    "Spigot API",
                    "Forge",
                    "Server operations",
                    "Community management"
                ],
                "links": []
            },
            {
                "id": "eric-carphotography",
                "slug": "eric-schank",
                "featured": false,
                "start": "2021",
                "end": null,
                "name": {
                    "de": "Eric Carphotography",
                    "en": "Eric Carphotography",
                    "fr": "Eric Carphotography"
                },
                "category": {
                    "de": "Projekt für einen Freund",
                    "en": "Project for a friend",
                    "fr": "Projet pour un ami"
                },
                "role": {
                    "de": "Konzeption, Entwicklung, SEO",
                    "en": "Concept, development, SEO",
                    "fr": "Conception, développement, SEO"
                },
                "summary": {
                    "de": "Ein Projekt für einen Freund: die Portfolio-Website seiner Automobilfotografie – galerieorientiert, auf Auffindbarkeit optimiert und mehrsprachig, ohne Baukasten-Grenzen.",
                    "en": "A project for a friend: the portfolio website for his automotive photography – gallery-focused, optimised for discoverability and multilingual, free of site-builder limits.",
                    "fr": "Un projet pour un ami : le site portfolio de sa photographie automobile – centré sur la galerie, optimisé pour la visibilité et multilingue, sans les limites d'un constructeur de sites."
                },
                "components": [],
                "details": [
                    {
                        "de": "SEO-Fundament pro Seite gepflegt: Meta-Description, OG-/Twitter-Tags, Canonical, Keywords, theme-color.",
                        "en": "SEO foundation maintained per page: meta description, OG/Twitter tags, canonical, keywords, theme-color.",
                        "fr": "Fondations SEO gérées page par page : meta description, balises OG/Twitter, canonical, mots-clés, theme-color."
                    },
                    {
                        "de": "Mehrsprachigkeit ohne schwere Frameworks (DE, EN, FR, NL, PL, RU, ZH).",
                        "en": "Multilingual without heavy frameworks (DE, EN, FR, NL, PL, RU, ZH).",
                        "fr": "Multilingue sans framework lourd (DE, EN, FR, NL, PL, RU, ZH)."
                    },
                    {
                        "de": "Schlanke Cookie-Consent-Lösung statt Drittanbieter-Banner.",
                        "en": "Lightweight cookie consent instead of third-party banners.",
                        "fr": "Consentement aux cookies léger au lieu de bannières tierces."
                    },
                    {
                        "de": "Blog mit mehrsprachiger Inhaltsverwaltung.",
                        "en": "Blog with multilingual content management.",
                        "fr": "Blog avec gestion de contenu multilingue."
                    }
                ],
                "tech": [
                    "devgine",
                    "SEO",
                    "i18n",
                    "Cookie consent",
                    "Performance"
                ],
                "links": [
                    {
                        "label": "ericcarphotography.com",
                        "url": "https://ericcarphotography.com"
                    }
                ]
            }
        ]
    },
    "work": {
        "visibilityLevels": {
            "public": {
                "de": "Öffentlich darstellbar",
                "en": "May be shown publicly",
                "fr": "Peut être affiché publiquement"
            },
            "internal": {
                "de": "Intern beim Arbeitgeber – nur nach Freigabe veröffentlichen",
                "en": "Employer-internal – publish only after approval",
                "fr": "Interne à l'employeur – à publier uniquement après accord"
            },
            "private": {
                "de": "Privat, unveröffentlicht",
                "en": "Private, unpublished",
                "fr": "Privé, non publié"
            }
        },
        "stats": {
            "gitlabMemberSince": "2020-10-26",
            "asOf": "2026-09-29"
        },
        "contributions": [
            {
                "id": "behnke-support-server",
                "visibility": "public",
                "org": "behnke",
                "start": "2025-08",
                "end": null,
                "commits": 934,
                "url": "https://behnke.support",
                "name": {
                    "de": "Behnke Support-Server (Neuentwicklung)",
                    "en": "Behnke Support Server (rewrite)",
                    "fr": "Serveur de support Behnke (refonte)"
                },
                "role": {
                    "de": "Hauptentwickler",
                    "en": "Lead developer",
                    "fr": "Développeur principal"
                },
                "summary": {
                    "de": "Nachfolger des Legacy-Support-Servers: Firmware-Downloads, Lizenzen, Handbücher und Versionsinformationen für Behnke-Produkte, Verwaltung von Konten, Geräten und API-Keys, REST-API für externe Systeme. Anmeldung mit 2FA über TOTP und Passkeys (WebAuthn).",
                    "en": "Successor to the legacy support server: firmware downloads, licences, manuals and version information for Behnke products, management of accounts, devices and API keys, and a REST API for external systems. Sign-in with 2FA via TOTP and passkeys (WebAuthn).",
                    "fr": "Successeur de l'ancien serveur de support : téléchargements de firmware, licences, manuels et informations de version pour les produits Behnke, gestion des comptes, appareils et clés API, API REST pour les systèmes externes. Connexion à double facteur via TOTP et passkeys (WebAuthn)."
                },
                "tech": [
                    "PHP 8.5",
                    "TBB/PHPCore",
                    "MySQL",
                    "JWT",
                    "TOTP",
                    "WebAuthn",
                    "S3",
                    "PHPStan (max)"
                ]
            },
            {
                "id": "behnke-wiki",
                "visibility": "public",
                "org": "behnke",
                "start": "2022-12",
                "end": null,
                "commits": 1804,
                "url": "https://wiki.behnke.support",
                "name": {
                    "de": "Behnke Wiki-System",
                    "en": "Behnke Wiki System",
                    "fr": "Système wiki Behnke"
                },
                "role": {
                    "de": "Entwickler & Redakteur",
                    "en": "Developer & editor",
                    "fr": "Développeur & rédacteur"
                },
                "summary": {
                    "de": "PHP-Anwendung, die GitLab-Wikis als dynamische, barrierearme Webseiten ausliefert – für Produktdokumentation zu Behnke-Sprechanlagen, Notrufstationen, IP-Sprechstellen und Zubehör. Dazu redaktionelle Arbeit in den Wikis auf Deutsch, Englisch, Französisch und im internen Wiki (rund 2.800 Commits).",
                    "en": "PHP application that serves GitLab wikis as dynamic, accessible web pages – for product documentation on Behnke intercoms, emergency call stations, IP intercoms and accessories. Plus editorial work in the German, English, French and internal wikis (around 2,800 commits).",
                    "fr": "Application PHP qui publie des wikis GitLab sous forme de pages web dynamiques et accessibles – pour la documentation des interphones, bornes d'appel d'urgence, postes IP et accessoires Behnke. S'y ajoute le travail rédactionnel dans les wikis allemand, anglais, français et interne (environ 2 800 commits)."
                },
                "tech": [
                    "PHP",
                    "GitLab Wiki",
                    "Docker",
                    "Accessibility",
                    "i18n (DE/EN/FR)"
                ]
            },
            {
                "id": "behnke-status",
                "visibility": "public",
                "org": "behnke",
                "start": "2025-08",
                "end": null,
                "commits": 40,
                "url": "https://status.behnke.support",
                "name": {
                    "de": "Behnke System Status",
                    "en": "Behnke System Status",
                    "fr": "Behnke System Status"
                },
                "role": {
                    "de": "Autor",
                    "en": "Author",
                    "fr": "Auteur"
                },
                "summary": {
                    "de": "Zentrale Statusseite für alle Behnke-Webprodukte: Ein Checker fragt Health-Endpunkte ab, speichert Verfügbarkeit und Latenzen als Zeitreihe und zeigt Gesamtstatus, Latenzstatistik und Uptime-Historie. Reines PHP ohne Abhängigkeiten und ohne Datenbank; überwacht sich selbst mit.",
                    "en": "Central status page for all Behnke web products: a checker polls health endpoints, stores availability and latency as a time series and shows overall status, latency statistics and uptime history. Plain PHP with no dependencies and no database; it monitors itself too.",
                    "fr": "Page de statut centrale pour tous les produits web Behnke : un vérificateur interroge les endpoints de santé, enregistre disponibilité et latences en série temporelle et affiche l'état global, les statistiques de latence et l'historique de disponibilité. PHP pur, sans dépendance ni base de données ; il se surveille lui-même."
                },
                "metrics": [
                    {
                        "value": "4",
                        "label": {
                            "de": "überwachte Dienste",
                            "en": "monitored services",
                            "fr": "services supervisés"
                        }
                    },
                    {
                        "value": "100 %",
                        "label": {
                            "de": "Uptime in den letzten 90 Checks (Stand 29.09.2026)",
                            "en": "uptime over the last 90 checks (as of 29 Sep 2026)",
                            "fr": "de disponibilité sur les 90 derniers contrôles (au 29/09/2026)"
                        }
                    },
                    {
                        "value": "208.768",
                        "label": {
                            "de": "Checks allein für das Wiki",
                            "en": "checks for the wiki alone",
                            "fr": "contrôles pour le seul wiki"
                        }
                    }
                ],
                "tech": [
                    "PHP 8.4",
                    "cURL",
                    "Cron",
                    "Docker"
                ]
            },
            {
                "id": "behnke-security",
                "visibility": "public",
                "org": "behnke",
                "start": "2026-04",
                "end": null,
                "commits": 36,
                "url": "https://security.behnke.support",
                "name": {
                    "de": "Behnke Security-Meldestelle",
                    "en": "Behnke Security Reporting Portal",
                    "fr": "Portail de signalement de sécurité Behnke"
                },
                "role": {
                    "de": "Autor",
                    "en": "Author",
                    "fr": "Auteur"
                },
                "summary": {
                    "de": "Zentrale Meldestelle für Schwachstellen in Behnke-Produkten: nimmt Meldungen per Formular oder E-Mail entgegen, legt daraus vertrauliche Incidents mit den Fristen aus CRA Art. 14 und DSGVO Art. 33 an und veröffentlicht Advisories. Dreisprachig.",
                    "en": "Central reporting point for vulnerabilities in Behnke products: accepts reports via form or email, turns them into confidential incidents with the deadlines from CRA Art. 14 and GDPR Art. 33, and publishes advisories. Trilingual.",
                    "fr": "Point de signalement central des vulnérabilités des produits Behnke : reçoit les signalements par formulaire ou e-mail, en crée des incidents confidentiels assortis des délais de l'art. 14 du CRA et de l'art. 33 du RGPD, et publie les avis de sécurité. Trilingue."
                },
                "tech": [
                    "PHP 8.5",
                    "TBB/PHPCore",
                    "GitLab Incidents",
                    "CRA",
                    "GDPR",
                    "i18n (DE/EN/FR)"
                ]
            },
            {
                "id": "behnke-cdn",
                "visibility": "public",
                "org": "behnke",
                "start": "2025-09",
                "end": "2026-04",
                "commits": 118,
                "url": "https://cdn.behnke.support/licenses",
                "name": {
                    "de": "Behnke CDN",
                    "en": "Behnke CDN",
                    "fr": "CDN Behnke"
                },
                "role": {
                    "de": "Autor",
                    "en": "Author",
                    "fr": "Auteur"
                },
                "summary": {
                    "de": "Content Delivery Network für alle Webprojekte der Gruppe: gemeinsame, versionierte Skripte, Styles und Assets mit dokumentierten Lizenzen.",
                    "en": "Content delivery network for all of the group's web projects: shared, versioned scripts, styles and assets with documented licences.",
                    "fr": "Réseau de diffusion de contenu pour tous les projets web du groupe : scripts, styles et ressources partagés et versionnés, avec licences documentées."
                },
                "tech": [
                    "JavaScript",
                    "CSS",
                    "Versioned assets"
                ]
            },
            {
                "id": "behnke-online-fr",
                "visibility": "public",
                "org": "behnke",
                "start": "2024-06",
                "end": null,
                "commits": 1396,
                "url": "https://behnke-online.fr",
                "name": {
                    "de": "behnke-online.fr (FR-Websystem)",
                    "en": "behnke-online.fr (FR web system)",
                    "fr": "behnke-online.fr (système web FR)"
                },
                "role": {
                    "de": "Autor",
                    "en": "Author",
                    "fr": "Auteur"
                },
                "summary": {
                    "de": "Backend, Frontend und eigenes Content-Management für den französischen Webauftritt der Gruppe, mit automatischer Synchronisierung und Sprachausgabe über Amazon Polly.",
                    "en": "Backend, frontend and custom content management for the group's French website, with automatic synchronisation and text-to-speech via Amazon Polly.",
                    "fr": "Backend, frontend et gestion de contenu sur mesure pour le site français du groupe, avec synchronisation automatique et synthèse vocale via Amazon Polly."
                },
                "tech": [
                    "PHP",
                    "JavaScript",
                    "Python",
                    "Amazon Polly",
                    "CMS"
                ]
            },
            {
                "id": "devgine-web-repo",
                "visibility": "public",
                "org": "gametecx",
                "start": "2026-07",
                "end": null,
                "commits": 40,
                "project": "devgine-web",
                "url": null,
                "name": {
                    "de": "devgine / web",
                    "en": "devgine / web",
                    "fr": "devgine / web"
                },
                "role": {
                    "de": "Autor & Maintainer",
                    "en": "Author & maintainer",
                    "fr": "Auteur & mainteneur"
                },
                "summary": {
                    "de": "Siehe Projekt devgine / web; Guide mit 25 Kapiteln, ein Kapitel je Baustein.",
                    "en": "See the devgine / web project; guide with 25 chapters, one per building block.",
                    "fr": "Voir le projet devgine / web ; guide en 25 chapitres, un par brique."
                },
                "tech": [
                    "PHP 8.5"
                ]
            },
            {
                "id": "pong-clone",
                "visibility": "public",
                "org": "personal",
                "start": null,
                "end": null,
                "commits": null,
                "url": "https://github.com/moritzschacke/pong-clone",
                "name": {
                    "de": "Pong-Klon",
                    "en": "Pong clone",
                    "fr": "Clone de Pong"
                },
                "role": {
                    "de": "Autor",
                    "en": "Author",
                    "fr": "Auteur"
                },
                "summary": {
                    "de": "Pong in Java mit raylib-Bindings, dazu ein eigener Server.",
                    "en": "Pong in Java with raylib bindings, plus its own server.",
                    "fr": "Pong en Java avec les bindings raylib, accompagné de son propre serveur."
                },
                "tech": [
                    "Java",
                    "raylib"
                ]
            }
        ]
    },
    "skills": {
        "levels": {
            "expert": {
                "de": "Experte – täglich im Produktiveinsatz, eigene Systeme darauf gebaut",
                "en": "Expert – daily production use, built own systems on it",
                "fr": "Expert – usage quotidien en production, systèmes propres construits dessus"
            },
            "advanced": {
                "de": "Fortgeschritten – regelmäßig in produktiven Projekten",
                "en": "Advanced – regularly used in production projects",
                "fr": "Avancé – utilisé régulièrement dans des projets en production"
            },
            "proficient": {
                "de": "Sicher – in mindestens einem echten Projekt eingesetzt",
                "en": "Proficient – used in at least one real project",
                "fr": "Opérationnel – utilisé dans au moins un projet réel"
            },
            "basic": {
                "de": "Grundlagen – aus Studium oder Einarbeitung, ohne eigenes Projekt",
                "en": "Basics – from studies or onboarding, no own project yet",
                "fr": "Notions – issues des études ou d'une prise en main, sans projet propre"
            }
        },
        "categories": [
            {
                "id": "languages",
                "name": {
                    "de": "Programmiersprachen",
                    "en": "Programming Languages",
                    "fr": "Langages de programmation"
                },
                "skills": [
                    {
                        "name": "PHP",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "behnke-online-fr",
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "JavaScript",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-cdn",
                            "behnke-support-server"
                        ]
                    },
                    {
                        "name": "SQL",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "HTML5 & CSS",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-wiki",
                            "behnke-cdn",
                            "eric-carphotography"
                        ]
                    },
                    {
                        "name": "Java",
                        "level": "advanced",
                        "since": "2020",
                        "lastUsed": "2026-08",
                        "evidence": [
                            "devgine-game",
                            "gametecx"
                        ]
                    },
                    {
                        "name": "TypeScript",
                        "level": "advanced",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Bash",
                        "level": "advanced",
                        "since": "2021",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Python",
                        "level": "proficient",
                        "since": "2024",
                        "lastUsed": "2026-08",
                        "evidence": [
                            "behnke-online-fr"
                        ]
                    },
                    {
                        "name": "C/C++",
                        "level": "basic",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    }
                ]
            },
            {
                "id": "backend",
                "name": {
                    "de": "Backend & Frameworks",
                    "en": "Backend & Frameworks",
                    "fr": "Backend & frameworks"
                },
                "skills": [
                    {
                        "name": "Framework-Design (PSR-7/11/14/15/16)",
                        "level": "expert",
                        "since": "2026-01",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "REST-API-Design & -Dokumentation",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server"
                        ]
                    },
                    {
                        "name": "Software-Architektur",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web",
                            "behnke-support-server"
                        ],
                        "detail": {
                            "de": "Eigene Frameworks, modulare Systeme und bewusste Architekturentscheidungen (ADRs).",
                            "en": "Own frameworks, modular systems and deliberate architecture decisions (ADRs).",
                            "fr": "Frameworks maison, systèmes modulaires et décisions d’architecture documentées (ADR)."
                        }
                    },
                    {
                        "name": "Legacy-Modernisierung & Migration",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server"
                        ],
                        "detail": {
                            "de": "Schrittweise Ablösung gewachsener Systeme im laufenden Betrieb, inkl. Datenbrücken zwischen Alt- und Neusystem.",
                            "en": "Step-by-step replacement of grown systems while they stay in production, including data bridges between old and new.",
                            "fr": "Remplacement progressif de systèmes historiques en production, y compris des passerelles de données entre ancien et nouveau."
                        }
                    },
                    {
                        "name": "Node.js & TypeScript-Ökosystem",
                        "level": "advanced",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": [],
                        "detail": {
                            "de": "Node-Toolchain mit npm, Vitest und Jest; serverseitig auf Cloudflare Workers statt klassischem Node-Server.",
                            "en": "Node toolchain with npm, Vitest and Jest; server-side on Cloudflare Workers rather than a classic Node server.",
                            "fr": "Chaîne d'outils Node avec npm, Vitest et Jest ; côté serveur sur Cloudflare Workers plutôt qu'un serveur Node classique."
                        }
                    },
                    {
                        "name": "JSON Schema & Validierung (opis, Zod)",
                        "level": "advanced",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "PDF-Erzeugung (mPDF, Dompdf)",
                        "level": "advanced",
                        "since": "2022",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "behnke-wiki"
                        ]
                    },
                    {
                        "name": "OAuth 2.0",
                        "level": "proficient",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Laravel",
                        "level": "basic",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    },
                    {
                        "name": "Symfony",
                        "level": "basic",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    },
                    {
                        "name": "Spring",
                        "level": "basic",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    }
                ]
            },
            {
                "id": "frontend",
                "name": {
                    "de": "Frontend & Mobile",
                    "en": "Frontend & Mobile",
                    "fr": "Frontend & mobile"
                },
                "note": {
                    "de": "Vanilla JS, wenn es reicht.",
                    "en": "Vanilla JS when it's enough.",
                    "fr": "Du Vanilla JS quand cela suffit."
                },
                "skills": [
                    {
                        "name": "Vanilla JS (UI ohne Framework)",
                        "level": "advanced",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "behnke-cdn"
                        ]
                    },
                    {
                        "name": "React Native & Expo",
                        "level": "proficient",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": [],
                        "detail": {
                            "de": "Expo Router, TanStack Query, Reanimated, SQLite, Jest.",
                            "en": "Expo Router, TanStack Query, Reanimated, SQLite, Jest.",
                            "fr": "Expo Router, TanStack Query, Reanimated, SQLite, Jest."
                        }
                    },
                    {
                        "name": "React",
                        "level": "proficient",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Bootstrap",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    }
                ]
            },
            {
                "id": "data",
                "name": {
                    "de": "Datenbanken",
                    "en": "Databases",
                    "fr": "Bases de données"
                },
                "note": {
                    "de": "Schwerpunkt auf Modellierung, Optimierung und Migrationen.",
                    "en": "Focus on modelling, optimisation and migrations.",
                    "fr": "Accent sur la modélisation, l'optimisation et les migrations."
                },
                "skills": [
                    {
                        "name": "MySQL",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "behnke"
                        ]
                    },
                    {
                        "name": "Schema-Migrationen",
                        "level": "advanced",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "SQLite",
                        "level": "proficient",
                        "since": "2026-07",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "PostgreSQL",
                        "level": "basic",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    }
                ]
            },
            {
                "id": "cloud-devops",
                "name": {
                    "de": "Cloud, Infrastruktur & DevOps",
                    "en": "Cloud, Infrastructure & DevOps",
                    "fr": "Cloud, infrastructure & DevOps"
                },
                "skills": [
                    {
                        "name": "Linux-Server (Ubuntu): Einrichtung, Härtung, Betrieb",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke"
                        ]
                    },
                    {
                        "name": "Git & GitLab",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-wiki",
                            "behnke-support-server"
                        ]
                    },
                    {
                        "name": "Monitoring & Health-Checks",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-status"
                        ]
                    },
                    {
                        "name": "Release-Signierung & -Verschlüsselung",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Cron-Jobs & Hintergrundprozesse",
                        "level": "expert",
                        "since": "2022",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-status",
                            "behnke-support-server",
                            "behnke-online-fr"
                        ]
                    },
                    {
                        "name": "GitLab CI/CD",
                        "level": "advanced",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Docker",
                        "level": "advanced",
                        "since": "2022",
                        "lastUsed": "2026-08",
                        "evidence": [
                            "behnke-wiki",
                            "behnke-status",
                            "behnke-cdn"
                        ]
                    },
                    {
                        "name": "AWS (S3, Polly, AWS SDK)",
                        "level": "advanced",
                        "since": "2024",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "behnke-online-fr"
                        ],
                        "detail": {
                            "de": "Seit 2024 produktiv: S3-Speicher für Firmware-Binaries und Amazon Polly für automatische Sprachausgabe, angebunden über das AWS SDK for PHP.",
                            "en": "In production since 2024: S3 storage for firmware binaries and Amazon Polly for automatic speech output, integrated via the AWS SDK for PHP.",
                            "fr": "En production depuis 2024 : stockage S3 pour les binaires de firmware et Amazon Polly pour la synthèse vocale automatique, intégrés via l’AWS SDK for PHP."
                        }
                    },
                    {
                        "name": "Hosting & Serververwaltung (VPS, Plesk)",
                        "level": "advanced",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke"
                        ]
                    },
                    {
                        "name": "Cloudflare Workers",
                        "level": "proficient",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "SIP / Kamailio",
                        "level": "basic",
                        "since": "2021",
                        "lastUsed": "2021",
                        "evidence": []
                    }
                ]
            },
            {
                "id": "security",
                "name": {
                    "de": "Sicherheit & Compliance",
                    "en": "Security & Compliance",
                    "fr": "Sécurité & conformité"
                },
                "skills": [
                    {
                        "name": "Cyber Resilience Act (EU) 2024/2847",
                        "level": "expert",
                        "since": "2025-12",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-security"
                        ]
                    },
                    {
                        "name": "Coordinated Vulnerability Disclosure",
                        "level": "expert",
                        "since": "2026-04",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-security"
                        ]
                    },
                    {
                        "name": "Web-Security: CSRF, Sessions, parametrisiertes SQL, Security-Header",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web",
                            "behnke-support-server"
                        ]
                    },
                    {
                        "name": "Authentifizierung: JWT, TOTP, WebAuthn/Passkeys",
                        "level": "advanced",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server"
                        ]
                    },
                    {
                        "name": "Kryptografie in der Praxis (libsodium, Ed25519, Signaturen)",
                        "level": "advanced",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "EN 18031",
                        "level": "proficient",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Secure Boot (Produktion)",
                        "level": "proficient",
                        "since": "2026-06",
                        "lastUsed": "2026-08",
                        "evidence": []
                    },
                    {
                        "name": "DSGVO (Meldefristen, Privacy by Design)",
                        "level": "proficient",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-security"
                        ]
                    }
                ]
            },
            {
                "id": "quality",
                "name": {
                    "de": "Qualität & Prozess",
                    "en": "Quality & Process",
                    "fr": "Qualité & processus"
                },
                "note": {
                    "de": "Tests sind Voraussetzung für den Merge; kurze Iterationen.",
                    "en": "Tests are a prerequisite for merging; short iterations.",
                    "fr": "Les tests conditionnent chaque merge ; itérations courtes."
                },
                "skills": [
                    {
                        "name": "PHPStan (Level max)",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server",
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "PSR-12 & php-cs-fixer",
                        "level": "expert",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "Technische Dokumentation",
                        "level": "expert",
                        "since": "2022",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-wiki",
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "Code Review (auch KI-gestützt)",
                        "level": "advanced",
                        "since": "2025",
                        "lastUsed": "2026-09",
                        "evidence": [],
                        "detail": {
                            "de": "Reviews von eigenem, fremdem und KI-generiertem Code auf Korrektheit, Sicherheit und Wartbarkeit.",
                            "en": "Reviewing own, third-party and AI-generated code for correctness, security and maintainability.",
                            "fr": "Revue de code personnel, tiers et généré par IA : exactitude, sécurité et maintenabilité."
                        }
                    },
                    {
                        "name": "PHPUnit",
                        "level": "advanced",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "Semantic Versioning & Release-Management",
                        "level": "advanced",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "Vitest & Jest",
                        "level": "proficient",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Agile / Scrum",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    }
                ]
            },
            {
                "id": "web-craft",
                "name": {
                    "de": "Barrierefreiheit, i18n & SEO",
                    "en": "Accessibility, i18n & SEO",
                    "fr": "Accessibilité, i18n & SEO"
                },
                "skills": [
                    {
                        "name": "Mehrsprachigkeit (DE/EN/FR und mehr)",
                        "level": "expert",
                        "since": "2020",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-wiki",
                            "behnke-support-server",
                            "behnke-security",
                            "eric-carphotography"
                        ]
                    },
                    {
                        "name": "Barrierefreiheit (OpenDyslexic, Kontrast, Lesehilfen)",
                        "level": "advanced",
                        "since": "2022",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-wiki"
                        ]
                    },
                    {
                        "name": "SEO (JSON-LD, Meta, OG/Twitter)",
                        "level": "advanced",
                        "since": "2021",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "eric-carphotography"
                        ]
                    }
                ]
            },
            {
                "id": "ai",
                "name": {
                    "de": "KI & LLMs",
                    "en": "AI & LLMs",
                    "fr": "IA & LLM"
                },
                "note": {
                    "de": "Kontextbezogener Einsatz – messbarer Nutzen statt Hype.",
                    "en": "Used where it fits – measurable value over hype.",
                    "fr": "Utilisée selon le contexte – une utilité mesurable plutôt que l'effet de mode."
                },
                "skills": [
                    {
                        "name": "KI-gestützte Entwicklung: Claude Code, Codex",
                        "level": "expert",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ],
                        "detail": {
                            "de": "KI als tägliche Unterstützung beim Entwickeln – mit klaren Leitplanken: eigene Agenten-Leitfäden (AGENTS.md, CLAUDE.md) pro Projekt und menschliche Prüfung vor dem Merge.",
                            "en": "AI as daily support in development – with clear guardrails: per-project agent guides (AGENTS.md, CLAUDE.md) and human review before merging.",
                            "fr": "L’IA comme soutien quotidien au développement – avec des garde-fous clairs : guides pour agents par projet (AGENTS.md, CLAUDE.md) et relecture humaine avant chaque merge."
                        }
                    },
                    {
                        "name": "KI-gestützte Workflows",
                        "level": "expert",
                        "since": "2026",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "behnke-support-server"
                        ],
                        "detail": {
                            "de": "Wiederholbare Abläufe, in denen Agenten Code, Dokumentation und Reviews vorbereiten und der Mensch entscheidet.",
                            "en": "Repeatable workflows in which agents prepare code, documentation and reviews while a human makes the call.",
                            "fr": "Des flux de travail reproductibles où les agents préparent code, documentation et revues, et où l’humain décide."
                        }
                    },
                    {
                        "name": "Prompt Engineering",
                        "level": "expert",
                        "since": "2024",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "bachelor-thesis"
                        ]
                    },
                    {
                        "name": "LLM-Evaluation & Benchmarking",
                        "level": "advanced",
                        "since": "2024",
                        "lastUsed": "2025-01",
                        "evidence": [
                            "bachelor-thesis"
                        ]
                    },
                    {
                        "name": "Model Context Protocol (MCP)",
                        "level": "advanced",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "KI-Agenten-Infrastruktur",
                        "level": "advanced",
                        "since": "2026-09",
                        "lastUsed": "2026-09",
                        "evidence": []
                    },
                    {
                        "name": "Claude, GPT, Gemini, Ollama",
                        "level": "advanced",
                        "since": "2024",
                        "lastUsed": "2026-09",
                        "evidence": [
                            "bachelor-thesis"
                        ]
                    }
                ]
            },
            {
                "id": "gamedev",
                "name": {
                    "de": "Spieleentwicklung",
                    "en": "Game Development",
                    "fr": "Développement de jeux"
                },
                "skills": [
                    {
                        "name": "Minecraft: Spigot & Forge",
                        "level": "advanced",
                        "since": "2020",
                        "lastUsed": null,
                        "evidence": [
                            "gametecx"
                        ]
                    },
                    {
                        "name": "libGDX & OpenGL",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": null,
                        "evidence": [
                            "devgine-game"
                        ]
                    },
                    {
                        "name": "Entity Component System",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": null,
                        "evidence": [
                            "devgine-game"
                        ]
                    },
                    {
                        "name": "Client/Server-Spielarchitektur",
                        "level": "proficient",
                        "since": "2026-08",
                        "lastUsed": "2026-08",
                        "evidence": [
                            "pong-clone"
                        ]
                    }
                ]
            },
            {
                "id": "embedded",
                "name": {
                    "de": "Hardwarenahe Entwicklung",
                    "en": "Hardware-near Development",
                    "fr": "Développement proche du matériel"
                },
                "skills": [
                    {
                        "name": "Board-Programmierung in der Produktion",
                        "level": "proficient",
                        "since": "2026-06",
                        "lastUsed": "2026-08",
                        "evidence": []
                    },
                    {
                        "name": "Geräteerkennung im Netzwerk (mDNS)",
                        "level": "proficient",
                        "since": "2022",
                        "lastUsed": "2022",
                        "evidence": []
                    }
                ]
            },
            {
                "id": "tools",
                "name": {
                    "de": "Werkzeuge",
                    "en": "Tools",
                    "fr": "Outils"
                },
                "skills": [
                    {
                        "name": "VS Code",
                        "level": "expert",
                        "since": null,
                        "lastUsed": "2026-09",
                        "evidence": [],
                        "detail": {
                            "de": "Haupt-Editor.",
                            "en": "Primary editor.",
                            "fr": "Éditeur principal."
                        }
                    },
                    {
                        "name": "Composer & npm",
                        "level": "advanced",
                        "since": null,
                        "lastUsed": "2026-09",
                        "evidence": [
                            "devgine-web"
                        ]
                    },
                    {
                        "name": "IntelliJ IDEA",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": null,
                        "evidence": []
                    },
                    {
                        "name": "Gradle & Maven",
                        "level": "proficient",
                        "since": null,
                        "lastUsed": "2026-08",
                        "evidence": []
                    }
                ]
            }
        ]
    },
    "services": {
        "intro": {
            "de": "Über devgineers nehme ich Aufträge an. Jede Leistung ist einzeln beauftragbar, alles passt zusammen – entwickelt in Sprints, bei denen Sie jeden Zwischenstand sehen und mitsteuern.",
            "en": "I take on commissions through devgineers. Every service can be booked on its own and everything fits together – developed in sprints where you see and steer every interim state.",
            "fr": "J'accepte des missions via devgineers. Chaque prestation peut être commandée séparément et tout s'assemble – en sprints où vous voyez et pilotez chaque étape."
        },
        "services": [
            {
                "id": "engineering",
                "url": "https://devgineers.de/leistungen/engineering",
                "name": {
                    "de": "Software Engineering",
                    "en": "Software engineering",
                    "fr": "Ingénierie logicielle"
                },
                "description": {
                    "de": "Individuelle Software, APIs und Architekturentscheidungen – so entwickelt, dass der nächste Schritt möglich bleibt.",
                    "en": "Custom software, APIs and architecture decisions – built so the next step stays possible.",
                    "fr": "Logiciels sur mesure, API et choix d'architecture – conçus pour que l'étape suivante reste possible."
                }
            },
            {
                "id": "modernisation",
                "url": "https://devgineers.de/leistungen/modernisierung",
                "name": {
                    "de": "Modernisierung & Neuentwicklung",
                    "en": "Modernisation & rebuilds",
                    "fr": "Modernisation & refonte"
                },
                "description": {
                    "de": "Gewachsene PHP-Anwendung, veraltetes Backend oder eigene Branchenlösung: klären, was sich erhalten lässt, und in Sprints modernisieren oder neu bauen.",
                    "en": "A grown PHP application, an outdated backend or a home-made industry solution: clarify what can be kept, then modernise or rebuild in sprints.",
                    "fr": "Application PHP historique, backend obsolète ou solution métier maison : clarifier ce qui peut être conservé, puis moderniser ou reconstruire en sprints."
                }
            },
            {
                "id": "web",
                "url": "https://devgineers.de/leistungen/webentwicklung",
                "name": {
                    "de": "Webseiten, Hosting & Wartung",
                    "en": "Websites, hosting & maintenance",
                    "fr": "Sites web, hébergement & maintenance"
                },
                "description": {
                    "de": "Von der einfachen Unternehmensseite bis zur Webanwendung – auf Wunsch mit Hosting und Wartung.",
                    "en": "From a simple company site to a web application – with hosting and maintenance if wanted.",
                    "fr": "Du simple site d'entreprise à l'application web – avec hébergement et maintenance si souhaité."
                }
            },
            {
                "id": "servers",
                "url": "https://devgineers.de/leistungen/server-betrieb",
                "name": {
                    "de": "Linux-Server & Wartung",
                    "en": "Linux servers & maintenance",
                    "fr": "Serveurs Linux & maintenance"
                },
                "description": {
                    "de": "Einrichtung, Absicherung und laufende Wartung von Linux-Servern, vom einzelnen VPS bis zur kleinen Serverlandschaft.",
                    "en": "Setting up, hardening and maintaining Linux servers, from a single VPS to a small server landscape.",
                    "fr": "Installation, sécurisation et maintenance de serveurs Linux, du VPS unique au petit parc de serveurs."
                }
            },
            {
                "id": "processes",
                "url": "https://devgineers.de/leistungen/development",
                "name": {
                    "de": "Development Processes",
                    "en": "Development processes",
                    "fr": "Processus de développement"
                },
                "description": {
                    "de": "Secure SDLC, Scrum und technische Qualitätsprozesse – pragmatisch auf Produkt, Team und Risiko abgestimmt.",
                    "en": "Secure SDLC, Scrum and technical quality processes – pragmatically matched to product, team and risk.",
                    "fr": "SDLC sécurisé, Scrum et processus qualité techniques – adaptés avec pragmatisme au produit, à l'équipe et au risque."
                }
            },
            {
                "id": "security",
                "url": "https://devgineers.de/leistungen/security",
                "name": {
                    "de": "Product Security & CRA",
                    "en": "Product security & CRA",
                    "fr": "Sécurité produit & CRA"
                },
                "description": {
                    "de": "Technische Produktsicherheit in Anforderungs-, Entwicklungs-, Release- und Wartungsprozessen verankern – inklusive Vorbereitung auf den Cyber Resilience Act.",
                    "en": "Anchoring technical product security in requirements, development, release and maintenance – including preparation for the Cyber Resilience Act.",
                    "fr": "Ancrer la sécurité technique des produits dans les exigences, le développement, les releases et la maintenance – y compris la préparation au Cyber Resilience Act."
                }
            }
        ],
        "offers": [
            {
                "id": "cra-gap-assessment",
                "name": "CRA Gap Assessment",
                "url": "https://devgineers.de/angebote/cra-gap-assessment",
                "description": {
                    "de": "Für Hersteller digitaler Produkte: Gap-Matrix, Verantwortlichkeiten und Maßnahmen-Roadmap.",
                    "en": "For makers of digital products: gap matrix, responsibilities and an action roadmap.",
                    "fr": "Pour les fabricants de produits numériques : matrice d'écarts, responsabilités et feuille de route."
                }
            },
            {
                "id": "secure-sdlc-review",
                "name": "Secure SDLC Review",
                "url": "https://devgineers.de/angebote/secure-sdlc-review",
                "description": {
                    "de": "Für bestehende Entwicklungsprozesse: Checkpoints, Risiken, Pilot- und Verbesserungsplan.",
                    "en": "For existing development processes: checkpoints, risks, a pilot and an improvement plan.",
                    "fr": "Pour les processus existants : points de contrôle, risques, plan pilote et plan d'amélioration."
                }
            },
            {
                "id": "architecture-review",
                "name": "Architecture Review",
                "url": "https://devgineers.de/angebote/architecture-review",
                "description": {
                    "de": "Für gewachsene Systeme: Bestandsaufnahme, Entscheidungsprotokoll und priorisierte Maßnahmen.",
                    "en": "For grown systems: inventory, decision log and prioritised measures.",
                    "fr": "Pour les systèmes historiques : état des lieux, journal de décisions et mesures priorisées."
                }
            },
            {
                "id": "modernisierungs-check",
                "name": {
                    "de": "Modernisierungs-Check",
                    "en": "Modernisation check",
                    "fr": "Diagnostic de modernisation"
                },
                "url": "https://devgineers.de/angebote/modernisierungs-check",
                "description": {
                    "de": "Pflege, Modernisierung oder Neuentwicklung – mit Risiko- und Sicherheitsbild und Aufwandsrahmen begründet.",
                    "en": "Maintain, modernise or rebuild – decided with a risk and security picture and an effort range.",
                    "fr": "Maintenir, moderniser ou reconstruire – décidé avec un état des risques et une fourchette d'effort."
                }
            },
            {
                "id": "website-paket",
                "name": {
                    "de": "Website-Paket",
                    "en": "Website package",
                    "fr": "Pack site web"
                },
                "url": "https://devgineers.de/angebote/website-paket",
                "description": {
                    "de": "Website, Hosting, Domain, Kontaktformular und laufende Wartung aus einer Hand.",
                    "en": "Website, hosting, domain, contact form and ongoing maintenance from one source.",
                    "fr": "Site, hébergement, domaine, formulaire de contact et maintenance auprès d'un seul interlocuteur."
                }
            },
            {
                "id": "software-discovery",
                "name": "Software Discovery",
                "url": "https://devgineers.de/angebote/software-discovery",
                "description": {
                    "de": "Vor einem neuen Vorhaben: Problemdefinition, MVP-Scope, Architekturskizze und Backlog.",
                    "en": "Before a new venture: problem definition, MVP scope, architecture sketch and backlog.",
                    "fr": "Avant un nouveau projet : définition du problème, périmètre du MVP, esquisse d'architecture et backlog."
                }
            }
        ],
        "engagement": [
            {
                "de": "Projekte und Beratung über devgineers",
                "en": "Projects and consulting via devgineers",
                "fr": "Projets et conseil via devgineers"
            }
        ]
    }
}