[{"data":1,"prerenderedAt":245},["ShallowReactive",2],{"content:profile":3,"content:experience":26,"page:\u002F":79,"content:legal-links":134,"content:projects":135,"content:stack":176},{"id":4,"cat":5,"email":10,"extension":11,"github":12,"languages":13,"linkedin":16,"meta":17,"name":18,"portrait":19,"role":22,"stem":23,"website":24,"__hash__":25},"profile\u002Fdata\u002Fprofile.yml",{"name":6,"image":7,"patch":8,"alt":9},"Baghira","\u002Fimages\u002Fbaghira.webp","\u002Fimages\u002Fbaghira-patch.webp","Baghira, meine Katze, döst auf der Fußzeile","contact@finnegan-berz.com","yml","https:\u002F\u002Fgithub.com\u002Ffinnbe",[14,15],"Deutsch (Muttersprache)","Englisch (B2)","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Ff-berz\u002F",{},"Finnegan Berz",{"src":20,"alt":21},"\u002Fimages\u002Ffinnegan-berz-portrait.jpg","Finnegan Berz im dunkelblauen Hemd, lächelnd, im Grünen","Frontend Developer","data\u002Fprofile","https:\u002F\u002Ffinnegan-berz.com","tEHWycycqWcX6vSJ0wmeIVNCmdZJFkHmOM46KTTD3Go",[27,45,65],{"id":28,"company":29,"endDate":30,"extension":11,"highlights":31,"meta":32,"position":22,"stack":33,"startDate":40,"stem":41,"summary":42,"url":43,"__hash__":44},"experience\u002Fdata\u002Fexperience\u002F2026-addmore.yml","addmore GmbH",null,[],{},[34,35,36,37,38,39],"Vue","TypeScript","JavaScript","PHP","HTML","CSS","2026-01-01","data\u002Fexperience\u002F2026-addmore","Frontend-Entwicklung in Kundenprojekten, von Vue-Komponenten bis zu klassischen PHP-Templates.","https:\u002F\u002Faddmore.de","llN7oj4D3cjQHBok8CgGPE9DWa1JaUidzZXPjP3lkSE",{"id":46,"company":47,"endDate":40,"extension":11,"highlights":48,"meta":53,"position":54,"stack":55,"startDate":61,"stem":62,"summary":63,"url":30,"__hash__":64},"experience\u002Fdata\u002Fexperience\u002F2025-javascript-developer.yml","cs webdevelopment e.K.",[49,50,51,52],"Anforderungen aufnehmen und in Architektur und Tickets übersetzen","REST- und GraphQL-APIs mit Fastify, inklusive Auth, Caching und Logging","Frontend-Module mit Vue und Nuxt, mit Fokus auf Performance und Barrierefreiheit","Infrastruktur als Code mit Terraform und CI\u002FCD für reproduzierbare Releases",{},"JavaScript Developer",[34,56,35,57,58,59,60],"Nuxt","Fastify","PostgreSQL","GraphQL","Terraform","2025-01-01","data\u002Fexperience\u002F2025-javascript-developer","Konzeption und Umsetzung von Web-Anwendungen, vom Datenmodell bis zum Deployment.","RDat_U6CkQvQ9jX-MV9RE0-03IPKko9f60o_77Fcp7k",{"id":66,"company":47,"endDate":61,"extension":11,"highlights":67,"meta":71,"position":72,"stack":73,"startDate":75,"stem":76,"summary":77,"url":30,"__hash__":78},"experience\u002Fdata\u002Fexperience\u002F2022-ausbildung.yml",[68,69,70],"Frontend- und Backend-Funktionen in laufenden Projekten umgesetzt","Testfälle aus User Stories abgeleitet und Unit-Tests geschrieben","Datenmodelle mitentwickelt und Query-Performance verbessert",{},"Ausbildung Fachinformatiker für Anwendungsentwicklung",[34,56,74,35,58],"Node.js","2022-01-01","data\u002Fexperience\u002F2022-ausbildung","Duale Ausbildung mit Mitarbeit an produktiven Web-Anwendungen.","Tpq1pPImJ-9BMvvYmHLb1fWQOpiFwIYKygjl0eIA6jM",{"id":80,"title":81,"body":82,"description":126,"extension":127,"meta":128,"navigation":129,"path":130,"seo":131,"stem":132,"__hash__":133},"pages\u002Findex.mdc","Finnegan Berz – Frontend Developer",{"type":83,"value":84,"toc":122},"minimark",[85,89,103,106,110,114,118],[86,87],"hero-section",{"lead":88},"Ich baue Oberflächen mit Vue und TypeScript, die auch nach dem dritten Change Request noch sauber sind.",[90,91,93,97,100],"profile-section",{":labels":92},"{\"current\":\"Aktuell\",\"languages\":\"Sprachen\"}",[94,95,96],"p",{},"Ich bin Frontend Developer bei addmore und setze dort Oberflächen mit Vue, TypeScript und PHP um. Angefangen habe ich 2022 mit der Ausbildung zum Fachinformatiker bei cs webdevelopment; danach war ich dort als JavaScript Developer im ganzen Stack unterwegs – Vue und Nuxt im Frontend, Node.js und PostgreSQL dahinter.",[94,98,99],{},"Dieser Hintergrund hilft mir im Frontend: Ich weiß, woher die Daten kommen, und denke Schnittstellen von Anfang an mit. Wichtig ist mir, dass Code auch in einem Jahr noch verständlich ist – mit Tests, Reviews und Deployments, die niemand von Hand machen muss.",[94,101,102],{},"Abseits vom Code: Zu Hause lebt meine Katze Baghira mit mir.",[104,105],"experience-section",{},[107,108],"stack-section",{"legend":109},"Hervorgehoben ist, womit ich täglich arbeite.",[111,112],"principles-section",{":items":113},"[{\"title\":\"Erst verstehen, dann bauen\",\"text\":\"Ich kläre Anforderungen lieber einmal mehr nach, bevor ich Code schreibe. Eine klare Struktur spart später die meisten Umbauten.\"},{\"title\":\"Tests als Teil der Aufgabe\",\"text\":\"Testfälle leite ich aus den Anforderungen ab und schreibe sie möglichst vor der Implementierung. So ist klar, wann etwas fertig ist.\"},{\"title\":\"KI als Werkzeug\",\"text\":\"Ich arbeite täglich mit KI-Assistenten wie Cursor und Claude Code – für Refactorings, Testentwürfe und Reviews. Was davon im Code landet, lese und verantworte ich selbst.\"},{\"title\":\"Oberflächen für alle\",\"text\":\"Semantisches HTML, Tastaturbedienung und ausreichende Kontraste plane ich von Anfang an mit. Barrierefreiheit nachträglich einzubauen ist teurer und gelingt selten ganz.\"}]",[115,116],"projects-section",{"title":117},"Projekte",[119,120],"contact-section",{"intro":121},"Lust auf Austausch über Vue, Testing oder KI im Entwickleralltag? Schreib mir – ich antworte in der Regel innerhalb von ein, zwei Tagen.",{"title":123,"searchDepth":124,"depth":124,"links":125},"",2,[],"Frontend Developer mit Full-Stack-Hintergrund. Ich baue Oberflächen mit Vue und TypeScript, die auch nach dem dritten Change Request noch sauber sind.","mdc",{},true,"\u002F",{"title":81,"description":126},"index","tMEPzpBsbku_7S094_zeRwYD4kB_oOzfdXt9BzrF5Q4",[],[136,148,159,167],{"path":137,"title":138,"summary":139,"year":140,"role":141,"stack":142,"order":147},"\u002Fprojects\u002Fportfolio","Dieses Portfolio","Neuaufbau meiner Website als statischer One-Pager – mit Tests zuerst, eigenem Design-System und KI-Agenten, die Issues in getrennten Branches umsetzen.",2026,"Konzept, Design und Entwicklung",[56,34,35,143,144,145,146],"Nuxt Content","Vitest","Playwright","Cloudflare Workers",1,{"path":149,"title":150,"summary":151,"year":140,"role":152,"stack":153,"order":124},"\u002Fprojects\u002Fbring-liste","Bring-Liste","Web-App, mit der Gruppen planen, wer was mitbringt – ohne Login, serverlos auf AWS.","Konzept und Umsetzung",[154,35,155,156,157,158],"Vue 3","Vite","AWS Lambda","DynamoDB","Zod",{"path":160,"title":161,"summary":162,"year":140,"role":163,"stack":164,"order":166},"\u002Fprojects\u002Fself-playing-pong","Self-Playing Pong","Pong, das sich selbst spielt – zwei Bots im Stil eines alten Schwarzweiß-Röhrenfernsehers, ohne Framework im Browser.","Idee und Umsetzung",[36,165,38,39,146],"Canvas",3,{"path":168,"title":169,"summary":170,"year":171,"role":163,"stack":172,"order":175},"\u002Fprojects\u002Ftimer-to-event","timer-to-event","Discord-Bot, der Events per Slash-Command plant und vor dem Termin in festen Abständen erinnert.",2025,[35,74,173,174],"discord.js","SQLite",4,[177,196,209,219,233],{"id":178,"extension":11,"items":179,"label":192,"meta":193,"order":147,"stem":194,"__hash__":195},"stack\u002Fdata\u002Fstack\u002F01-frontend.yml",[180,181,182,183,184,185,186,188,190],{"name":35,"focus":129},{"name":36,"focus":129},{"name":34,"focus":129},{"name":38,"focus":129},{"name":39,"focus":129},{"name":56},{"name":187},"Nuxt UI",{"name":189},"Pinia",{"name":191},"Quasar","Frontend",{},"data\u002Fstack\u002F01-frontend","Byk1QYujDa-9j9nPdNIQbvM1o0tjvLM-Axmt5WOV2w4",{"id":197,"extension":11,"items":198,"label":205,"meta":206,"order":124,"stem":207,"__hash__":208},"stack\u002Fdata\u002Fstack\u002F02-backend.yml",[199,200,201,202,204],{"name":37,"focus":129},{"name":74},{"name":57},{"name":203},"REST",{"name":59},"Backend",{},"data\u002Fstack\u002F02-backend","_A1s0lmmkD_gAiOXQUcNZHb0TOpDJdBsaayCicEQ378",{"id":210,"extension":11,"items":211,"label":215,"meta":216,"order":166,"stem":217,"__hash__":218},"stack\u002Fdata\u002Fstack\u002F03-daten.yml",[212,213],{"name":58},{"name":214},"SQL","Daten",{},"data\u002Fstack\u002F03-daten","IKMTaZ3UbQhp1Y6jxIQDu5OWryqtPgAWeo2r0Gwwpug",{"id":220,"extension":11,"items":221,"label":229,"meta":230,"order":175,"stem":231,"__hash__":232},"stack\u002Fdata\u002Fstack\u002F04-infrastruktur.yml",[222,223,225,227],{"name":60},{"name":224},"Ansible",{"name":226},"GitHub Actions",{"name":228},"Cloudflare","Infrastruktur",{},"data\u002Fstack\u002F04-infrastruktur","YEDcs0dlRUNLzaINZQiyvDhvsrsrRwqE3_jcHzQvev8",{"id":234,"extension":11,"items":235,"label":240,"meta":241,"order":242,"stem":243,"__hash__":244},"stack\u002Fdata\u002Fstack\u002F05-weitere.yml",[236,238],{"name":237},"Python",{"name":239},"C#","Außerdem",{},5,"data\u002Fstack\u002F05-weitere","faVgIaeUluwSpjVDLN93UEjmy6DDTutXirXnzXrMwTc",1792098143495]