[{"data":1,"prerenderedAt":203},["ShallowReactive",2],{"content:profile":3,"content:experience":26,"content:legal-links":79,"content:projects":80,"project:\u002Fprojects\u002Fbring-liste":122},{"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",[],[81,93,105,113],{"path":82,"title":83,"summary":84,"year":85,"role":86,"stack":87,"order":92},"\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,88,89,90,91],"Nuxt Content","Vitest","Playwright","Cloudflare Workers",1,{"path":94,"title":95,"summary":96,"year":85,"role":97,"stack":98,"order":104},"\u002Fprojects\u002Fbring-liste","Bring-Liste","Web-App, mit der Gruppen planen, wer was mitbringt – ohne Login, serverlos auf AWS.","Konzept und Umsetzung",[99,35,100,101,102,103],"Vue 3","Vite","AWS Lambda","DynamoDB","Zod",2,{"path":106,"title":107,"summary":108,"year":85,"role":109,"stack":110,"order":112},"\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,111,38,39,91],"Canvas",3,{"path":114,"title":115,"summary":116,"year":117,"role":109,"stack":118,"order":121},"\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,119,120],"discord.js","SQLite",4,{"id":123,"title":95,"body":124,"description":190,"extension":196,"image":30,"links":30,"meta":197,"navigation":198,"order":104,"path":94,"role":97,"seo":199,"stack":200,"stem":201,"summary":96,"year":85,"__hash__":202},"projects\u002Fprojects\u002Fbring-liste.md",{"type":125,"value":126,"toc":189},"minimark",[127,132,136,140,143,147,182,186],[128,129,131],"h2",{"id":130},"ausgangslage","Ausgangslage",[133,134,135],"p",{},"Für Treffen in Gruppen wollte ich eine einfache gemeinsame Liste, auf der jeder sieht, wer was mitbringt – und der man ohne Konto beitreten kann.",[128,137,139],{"id":138},"meine-rolle","Meine Rolle",[133,141,142],{},"Konzept und Umsetzung von Frontend, Backend und Infrastruktur.",[128,144,146],{"id":145},"umsetzung","Umsetzung",[148,149,150,158,164,170,176],"ul",{},[151,152,153,157],"li",{},[154,155,156],"strong",{},"Gruppen und Rollen:"," Gruppen werden per Einladungscode geteilt; die Person, die eine Gruppe anlegt, hat volle Kontrolle, Mitglieder tragen sich ein.",[151,159,160,163],{},[154,161,162],{},"Mengen aufteilen:"," Einträge haben Menge, Kategorie und eine Must-have-Markierung. Mengen lassen sich auf mehrere Personen verteilen, etwa drei Kuchen auf zwei Leute.",[151,165,166,169],{},[154,167,168],{},"Kein Login:"," Die Anmeldung läuft über Tokens in der URL.",[151,171,172,175],{},[154,173,174],{},"Architektur:"," Vue 3 mit TypeScript im Frontend, AWS Lambda hinter API Gateway im Backend, DynamoDB im Single-Table-Design, ausgeliefert über CloudFront und S3. Die Infrastruktur ist als SAM-Template beschrieben.",[151,177,178,181],{},[154,179,180],{},"Gemeinsame Typen:"," Ein pnpm-Monorepo teilt Typen und Zod-Validierung zwischen Frontend und Backend.",[128,183,185],{"id":184},"ergebnis","Ergebnis",[133,187,188],{},"Eine kleine, vollständig serverlose Anwendung – und für mich ein Projekt, an dem ich ein Frontend von der Oberfläche bis zur Datenhaltung durchgezogen habe.",{"title":190,"searchDepth":104,"depth":104,"links":191},"",[192,193,194,195],{"id":130,"depth":104,"text":131},{"id":138,"depth":104,"text":139},{"id":145,"depth":104,"text":146},{"id":184,"depth":104,"text":185},"md",{},true,{"title":95,"description":190},[99,35,100,101,102,103],"projects\u002Fbring-liste","gHrIdZSNrY4K3aj2duWSy34Gv32wMKSvy2tMBDJUkeY",1792098143889]