[{"data":1,"prerenderedAt":198},["ShallowReactive",2],{"content:profile":3,"content:experience":26,"content:legal-links":79,"content:projects":80,"project:\u002Fprojects\u002Ftimer-to-event":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":115,"body":124,"description":186,"extension":191,"image":30,"links":30,"meta":192,"navigation":193,"order":121,"path":114,"role":109,"seo":194,"stack":195,"stem":196,"summary":116,"year":117,"__hash__":197},"projects\u002Fprojects\u002Ftimer-to-event.md",{"type":125,"value":126,"toc":185},"minimark",[127,132,136,140,178,182],[128,129,131],"h2",{"id":130},"ausgangslage","Ausgangslage",[133,134,135],"p",{},"Termine, die in einem Chat vereinbart werden, gehen leicht unter. Ein Bot sollte rechtzeitig daran erinnern, ohne dass jemand daran denken muss.",[128,137,139],{"id":138},"umsetzung","Umsetzung",[141,142,143,151,157,163],"ul",{},[144,145,146,150],"li",{},[147,148,149],"strong",{},"Slash-Commands:"," Timer anlegen, löschen und auflisten.",[144,152,153,156],{},[147,154,155],{},"Zuverlässige Erinnerungen:"," Ein Scheduler prüft alle 30 Sekunden und holt verpasste Erinnerungen nach, etwa nach einem Neustart.",[144,158,159,162],{},[147,160,161],{},"Keine Doppelungen:"," Pro Server, Kanal und Termin gibt es genau einen Timer.",[144,164,165,168,169,173,174,177],{},[147,166,167],{},"Datenhaltung:"," SQLite, bevorzugt über ",[170,171,172],"code",{},"better-sqlite3",", mit ",[170,175,176],{},"sql.js"," (WebAssembly) als Rückfall, falls der native Treiber fehlt.",[128,179,181],{"id":180},"ergebnis","Ergebnis",[133,183,184],{},"Ein kompakter Bot mit klaren Commands, der verpasste Erinnerungen nachholt und ohne externe Datenbank auskommt.",{"title":186,"searchDepth":104,"depth":104,"links":187},"",[188,189,190],{"id":130,"depth":104,"text":131},{"id":138,"depth":104,"text":139},{"id":180,"depth":104,"text":181},"md",{},true,{"title":115,"description":186},[35,74,119,120],"projects\u002Ftimer-to-event","F3FLox1CGw1hzX-2V_onfEUahjSzmqKgZbH_CwBQwMs",1792098143890]