[{"data":1,"prerenderedAt":532},["ShallowReactive",2],{"\u002Fprojects\u002Fdialog-tool":3,"github-\u002Fprojects\u002Fdialog-tool":119,"skills":130},{"id":4,"title":5,"body":6,"description":81,"extension":82,"featured":83,"image":84,"languages":85,"links":92,"meta":99,"navigation":98,"path":100,"repo":101,"seo":102,"skills":105,"stem":117,"__hash__":118},"projects\u002Fprojects\u002Fdialog-tool.md","Dialog-Tool",{"type":7,"value":8,"toc":73},"minimark",[9,19,24,27,30,34,37,40,44,47,70],[10,11,12,13,18],"p",{},"Im Synchronstudio wird klassisch mit Takebüchern gearbeitet – Word-Dokumente voller Takes, die mühsam aus CSV-Exporten der DAW zusammengebaut werden. Für das Studio ",[14,15,17],"a",{"href":16},"\u002Fprojects\u002Fbuildyourvoice","Build your Voice"," habe ich genau dafür ein Tool gebaut – und aus dem kleinen Konverter ist über die Zeit ein komplettes Studio-System geworden.",[20,21,23],"h3",{"id":22},"ein-reiner-kern-viele-oberflächen","Ein reiner Kern, viele Oberflächen",[10,25,26],{},"Im Zentrum steht ein Zero-Dependency-Kern: CSV parsen, zu Takes gruppieren, als Word-treues RTF rendern – inklusive Bookmarks, rechtsbündiger Timecodes und korrekt kodierter Umlaute. Takes, die gleichzeitig gesprochen werden, verschmelzen automatisch zu einem Block. Der Kern importiert weder Node noch DOM – ein CI-Check lässt den Build fehlschlagen, sobald sich doch eine Plattform-API einschleicht. Dadurch läuft derselbe Code als CLI, im Browser, auf dem Server und in Electron.",[10,28,29],{},"Sogar der Rückweg funktioniert: Nachträgliche Änderungen aus einem überarbeiteten RTF-Takebuch werden als Tracked Changes wieder eingelesen und im Editor als Diff angezeigt.",[20,31,33],{"id":32},"live-im-studio","Live im Studio",[10,35,36],{},"Bei der Aufnahme führt die Regie das Takebuch von einem Dashboard aus – und die Sprecher folgen auf iPads live mit. Die Synchronisation läuft über WebSockets direkt im Nuxt-Server, ohne zusätzliche Infrastruktur: Der aktive Take scrollt automatisch ins Bild, und die Regie kann einzelne Rollen-Zeilen gezielt hervorheben.",[10,38,39],{},"Die Sprecher-Ansicht ist bewusst reibungsfrei: ein Token-Link ohne Account, installierbar als PWA – aufs iPad legen, fertig.",[20,41,43],{"id":42},"byv-taker-die-desktop-app","BYV Taker – die Desktop-App",[10,45,46],{},"Für das Erstellen der Takes am Video gibt es zusätzlich eine Electron-App:",[48,49,50,58,64],"ul",{},[51,52,53,57],"li",{},[54,55,56],"strong",{},"Lokales Whisper & Diarization"," – Transkription über ein gebündeltes whisper.cpp und Sprecher-Erkennung via sherpa-onnx, komplett offline; so lassen sich Takes auch ohne Dialogbuch spotten.",[51,59,60,63],{},[54,61,62],{},"DaVinci Resolve Speed Editor als Studio-Controller"," – Anbindung der Hardware per Raw-HID inklusive nachimplementiertem Blackmagic-Auth-Handshake, Jog-Wheel und LED-Modi.",[51,65,66,69],{},[54,67,68],{},"Nuendo-Integration"," – gecuete Takes bleiben während des Pre-Rolls stehen, und der ASC-Export hält die Take-Nummern mit der Dispo in Nuendo synchron.",[10,71,72],{},"Die App wird signiert, notarisiert und mit Auto-Updates über private GitHub-Releases verteilt – das Dialog-Tool ist bei Build your Voice täglich im Produktiveinsatz.",{"title":74,"searchDepth":75,"depth":75,"links":76},"",2,[77,79,80],{"id":22,"depth":78,"text":23},3,{"id":32,"depth":78,"text":33},{"id":42,"depth":78,"text":43},"Das Dialog-Tool ist ein komplettes Studio-System für Synchronaufnahmen – vom generierten Dialogbuch über Live-Sync auf iPads bis zur Desktop-App mit lokalem Whisper.","md",false,"\u002Fimages\u002Fprojects\u002Fcards\u002Fdialog-tool.png",[86,89],{"language":87,"percentage":88},"TypeScript",60,{"language":90,"percentage":91},"Vue",40,[93],{"label":94,"icon":95,"to":96,"target":97,"external":98},"Website","i-heroicons-globe-alt","https:\u002F\u002Fdialogtool.buildyourvoice.de","_blank",true,{},"\u002Fprojects\u002Fdialog-tool","Build-your-Voice\u002Fdialogtool",{"title":103,"description":104},"Dialog-Tool – Studio-System für Synchronaufnahmen","Das Dialog-Tool ist ein Studio-System für deutsche Synchronaufnahmen – Takebücher aus DAW-Exporten generieren, live per WebSocket mit iPads im Studio synchronisieren und Takes in einer Electron-App mit lokalem Whisper und Speed-Editor-Hardware spotten.",[106,107,108,109,110,111,112,113,114,115,116],"typescript","nuxt","vue","nuxt-ui","tailwind","postgres","drizzle-orm","electron","ffmpeg","docker","whisper","projects\u002Fdialog-tool","QnyUkSQ8OmbQ46F1sZJ8PHYCdtV8F8ZqMcNDxOCoDvM",{"stars":120,"forks":120,"createdAt":121,"pushedAt":122,"commitCount":123,"activity":124},0,"2026-04-28T14:47:05Z","2026-07-18T22:26:49Z",84,[120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,125,126,127,128,127,120,127,120,120,120,120,129],23,29,4,9,11,[131,143,154,163,172,181,192,201,210,218,226,234,242,250,259,267,276,284,293,303,311,319,327,335,343,351,358,365,374,382,390,398,406,414,422,430,438,446,454,462,470,477,485,493,500,508,516,524],{"id":132,"category":133,"extension":134,"icon":135,"level":136,"meta":137,"name":138,"stem":139,"url":140,"year":141,"__hash__":142},"skills\u002Fskills\u002Fai-sdk.yml","Backend","yml","i-logos-vercel-icon","Familiar",{},"AI SDK","skills\u002Fai-sdk","https:\u002F\u002Fai-sdk.dev","2026","wrZ81rlAkAtAOUgPZ3O7XKZVo_ZA40usaRMX1x2QIqI",{"id":144,"category":145,"extension":134,"icon":146,"level":147,"meta":148,"name":149,"stem":150,"url":151,"year":152,"__hash__":153},"skills\u002Fskills\u002Fazure.yml","DevOps","i-logos-microsoft-azure","Proficient",{},"Azure","skills\u002Fazure","https:\u002F\u002Fazure.microsoft.com","2021","uhi9OV2kz1bgheQ-n9srKx0HSUYlYI7MuyjObYDUgrQ",{"id":155,"category":133,"extension":134,"icon":156,"level":147,"meta":157,"name":158,"stem":159,"url":160,"year":161,"__hash__":162},"skills\u002Fskills\u002Fbun.yml","i-logos-bun",{},"Bun","skills\u002Fbun","https:\u002F\u002Fbun.sh","2024","bkieq8AIp5NIJh3xetY96f7WfuFNjAMI7oevfWb1W-0",{"id":164,"category":165,"extension":134,"icon":166,"level":136,"meta":167,"name":168,"stem":169,"url":170,"year":141,"__hash__":171},"skills\u002Fskills\u002Fclaude-code.yml","Tooling","i-logos-claude-icon",{},"Claude Code","skills\u002Fclaude-code","https:\u002F\u002Fclaude.com\u002Fclaude-code","nq8UwiCtks6-HbLWOie3mLLRI_0FcRckcL4OK0btTzI",{"id":173,"category":145,"extension":134,"icon":174,"level":147,"meta":175,"name":176,"stem":177,"url":178,"year":179,"__hash__":180},"skills\u002Fskills\u002Fcoolify.yml","i-simple-icons-coolify",{},"Coolify","skills\u002Fcoolify","https:\u002F\u002Fcoolify.io","2023","uh7httXSb9SS1ggRLMKgfmPi2mgMtqNgSGUnSDHeAXk",{"id":182,"category":183,"extension":134,"icon":184,"level":185,"meta":186,"name":187,"stem":188,"url":189,"year":190,"__hash__":191},"skills\u002Fskills\u002Fcss.yml","Frontend","i-logos-css-3","Core",{},"CSS","skills\u002Fcss","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FCSS","2013","GLbnVt9JlmOE-RyFF0Pmh8QKVBKq-Qj-uXhgVZkMxBs",{"id":193,"category":133,"extension":134,"icon":194,"level":136,"meta":195,"name":196,"stem":197,"url":198,"year":199,"__hash__":200},"skills\u002Fskills\u002Fdeno.yml","i-logos-deno",{},"Deno","skills\u002Fdeno","https:\u002F\u002Fdeno.com","2022","8A31HmVc4GmvzZgLwJKLp_Km8w1T5q_vG3TVVtDOHnQ",{"id":202,"category":145,"extension":134,"icon":203,"level":185,"meta":204,"name":205,"stem":206,"url":207,"year":208,"__hash__":209},"skills\u002Fskills\u002Fdocker.yml","i-logos-docker-icon",{},"Docker","skills\u002Fdocker","https:\u002F\u002Fwww.docker.com","2018","uyfqCF9l6H7XsIozx1X-BUtL2KULygtDHq2cOZARNZ0",{"id":211,"category":133,"extension":134,"icon":212,"level":147,"meta":213,"name":214,"stem":215,"url":216,"year":179,"__hash__":217},"skills\u002Fskills\u002Fdrizzle-orm.yml","\u002Fimages\u002Fskills\u002Fdrizzle.png",{},"Drizzle ORM","skills\u002Fdrizzle-orm","https:\u002F\u002Form.drizzle.team","zWErcCRBV0E4HJ5FqPZd5-J3wK3j9Yw25nOgK2Qy5hw",{"id":219,"category":165,"extension":134,"icon":220,"level":136,"meta":221,"name":222,"stem":223,"url":224,"year":141,"__hash__":225},"skills\u002Fskills\u002Felectron.yml","i-logos-electron",{},"Electron","skills\u002Felectron","https:\u002F\u002Fwww.electronjs.org","fraXMojywwTj5bFfI5bkZhPnQV48uvu0gcmqTT5a4_U",{"id":227,"category":133,"extension":134,"icon":228,"level":147,"meta":229,"name":230,"stem":231,"url":232,"year":208,"__hash__":233},"skills\u002Fskills\u002Fexpress.yml","i-simple-icons-express",{},"Express","skills\u002Fexpress","https:\u002F\u002Fexpressjs.com","HDN_-ZUR4vI-cmgZ4yy84nm94T5rgkV3mr3PQjeBwe4",{"id":235,"category":165,"extension":134,"icon":236,"level":136,"meta":237,"name":114,"stem":238,"url":239,"year":240,"__hash__":241},"skills\u002Fskills\u002Fffmpeg.yml","i-logos-ffmpeg-icon",{},"skills\u002Fffmpeg","https:\u002F\u002Fffmpeg.org","2020","ApV9_VXvOROhOvHzPYhx23qctHIqsAdUiIIvG6U8HeE",{"id":243,"category":165,"extension":134,"icon":244,"level":147,"meta":245,"name":246,"stem":247,"url":248,"year":152,"__hash__":249},"skills\u002Fskills\u002Ffigma.yml","i-logos-figma",{},"Figma","skills\u002Ffigma","https:\u002F\u002Fwww.figma.com","7YpzoWeTiTmAMs8PL1jIfpLLzHc028OaNC-k2XmWF7c",{"id":251,"category":252,"extension":134,"icon":253,"level":147,"meta":254,"name":255,"stem":256,"url":257,"year":240,"__hash__":258},"skills\u002Fskills\u002Ffirebase.yml","Data","i-logos-firebase",{},"Firebase","skills\u002Ffirebase","https:\u002F\u002Ffirebase.google.com","2BZXkjqAiQI7NcBh95AwkW55Kg9OYJcTd4g7BZlVyH8",{"id":260,"category":133,"extension":134,"icon":261,"level":185,"meta":262,"name":263,"stem":264,"url":265,"year":179,"__hash__":266},"skills\u002Fskills\u002Fgo.yml","i-logos-go",{},"Go","skills\u002Fgo","https:\u002F\u002Fgo.dev","jfqLu9ALZexHbFIxbNX4hXCa9YWsGQ_J879h7nG3Mwg",{"id":268,"category":145,"extension":134,"icon":269,"level":147,"meta":270,"name":271,"stem":272,"url":273,"year":274,"__hash__":275},"skills\u002Fskills\u002Fgrafana.yml","i-logos-grafana",{},"Grafana","skills\u002Fgrafana","https:\u002F\u002Fgrafana.com","2019","bAJDLy0__P9oiyY9zBlhcQLKAc6ijpLfODLoQFmcXRk",{"id":277,"category":183,"extension":134,"icon":278,"level":185,"meta":279,"name":280,"stem":281,"url":282,"year":190,"__hash__":283},"skills\u002Fskills\u002Fhtml.yml","i-logos-html-5",{},"HTML","skills\u002Fhtml","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FHTML","uKm-23PNdCtyRNJPSwsp0T81LlpZYyDem_nanppkV40",{"id":285,"category":183,"extension":134,"icon":286,"level":185,"meta":287,"name":288,"stem":289,"url":290,"year":291,"__hash__":292},"skills\u002Fskills\u002Fjavascript.yml","i-logos-javascript",{},"JavaScript","skills\u002Fjavascript","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FJavaScript","2017","IAVd2T2nFt-Keg7ky5OkJQv0XHXgH5Q6azMVo_EwOZc",{"id":294,"category":295,"extension":134,"icon":296,"level":136,"meta":297,"name":298,"stem":299,"url":300,"year":301,"__hash__":302},"skills\u002Fskills\u002Fk6.yml","Testing","i-simple-icons-k6",{},"k6","skills\u002Fk6","https:\u002F\u002Fk6.io","2025","9LQe3jOXpzWYeu4o8j4frNKF_kRfmU34bztg9h0iybs",{"id":304,"category":145,"extension":134,"icon":305,"level":147,"meta":306,"name":307,"stem":308,"url":309,"year":152,"__hash__":310},"skills\u002Fskills\u002Fkubernetes.yml","i-logos-kubernetes",{},"Kubernetes","skills\u002Fkubernetes","https:\u002F\u002Fkubernetes.io","QZKWLGxmYYLjqMaWXYElwW6LzZIhRiWviV7EqzTuf20",{"id":312,"category":145,"extension":134,"icon":313,"level":136,"meta":314,"name":315,"stem":316,"url":317,"year":301,"__hash__":318},"skills\u002Fskills\u002Floki.yml","\u002Fimages\u002Fskills\u002Floki.png",{},"Loki","skills\u002Floki","https:\u002F\u002Fgrafana.com\u002Foss\u002Floki","6XbX8pKz3kJ-UNj2sa0D5jiJpCuOjHZPHW6K0p9yc5c",{"id":320,"category":252,"extension":134,"icon":321,"level":147,"meta":322,"name":323,"stem":324,"url":325,"year":240,"__hash__":326},"skills\u002Fskills\u002Fmongodb.yml","i-logos-mongodb-icon",{},"MongoDB","skills\u002Fmongodb","https:\u002F\u002Fwww.mongodb.com","vAymZsawe3eHWefRddwCPUkOz4ENH0f27f3c7qoPaiU",{"id":328,"category":133,"extension":134,"icon":329,"level":147,"meta":330,"name":331,"stem":332,"url":333,"year":152,"__hash__":334},"skills\u002Fskills\u002Fnest.yml","i-logos-nestjs",{},"Nest","skills\u002Fnest","https:\u002F\u002Fnestjs.com","_k_OLI2yWacjZ6bnL_2SY5foR4PTtG05W754HMLaw84",{"id":336,"category":133,"extension":134,"icon":337,"level":185,"meta":338,"name":339,"stem":340,"url":341,"year":208,"__hash__":342},"skills\u002Fskills\u002Fnode-js.yml","i-logos-nodejs-icon",{},"Node.js","skills\u002Fnode-js","https:\u002F\u002Fnodejs.org","EDZpDGWxfyGs0KkLE0Lb99w_kAQ3M6Q7drthHbUYEY0",{"id":344,"category":183,"extension":134,"icon":345,"level":185,"meta":346,"name":347,"stem":348,"url":349,"year":199,"__hash__":350},"skills\u002Fskills\u002Fnuxt.yml","i-logos-nuxt-icon",{},"Nuxt","skills\u002Fnuxt","https:\u002F\u002Fnuxt.com","kH1NvQG2PGmpWgMoKRLQGjTCwFTGQmiXgMDGdRNAcOI",{"id":352,"category":183,"extension":134,"icon":345,"level":147,"meta":353,"name":354,"stem":355,"url":356,"year":161,"__hash__":357},"skills\u002Fskills\u002Fnuxt-content.yml",{},"Nuxt Content","skills\u002Fnuxt-content","https:\u002F\u002Fcontent.nuxt.com","RgsSePMO7r_6Hu61Hnfy5f4ll2ofq37vk0rJxmPjfg0",{"id":359,"category":183,"extension":134,"icon":345,"level":147,"meta":360,"name":361,"stem":362,"url":363,"year":161,"__hash__":364},"skills\u002Fskills\u002Fnuxt-ui.yml",{},"Nuxt UI","skills\u002Fnuxt-ui","https:\u002F\u002Fui.nuxt.com","e8h3Pmq1FaZ6dXccd_HW3_NTbNofuk5zfmn7_FmlBnU",{"id":366,"category":133,"extension":134,"icon":367,"level":136,"meta":368,"name":369,"stem":370,"url":371,"year":372,"__hash__":373},"skills\u002Fskills\u002Fphp.yml","i-logos-php",{},"PHP","skills\u002Fphp","https:\u002F\u002Fwww.php.net","2016","s1Q64crnDcVTJ7GDn-w43Gl5HMI8gYVM7AOWotWdEWc",{"id":375,"category":183,"extension":134,"icon":376,"level":147,"meta":377,"name":378,"stem":379,"url":380,"year":199,"__hash__":381},"skills\u002Fskills\u002Fpinia.yml","i-logos-pinia",{},"Pinia","skills\u002Fpinia","https:\u002F\u002Fpinia.vuejs.org","otf3EcrCxdIwH7CiBpeIxBI-K0pma63F5TzHHSN51IA",{"id":383,"category":295,"extension":134,"icon":384,"level":147,"meta":385,"name":386,"stem":387,"url":388,"year":161,"__hash__":389},"skills\u002Fskills\u002Fplaywright.yml","i-logos-playwright",{},"Playwright","skills\u002Fplaywright","https:\u002F\u002Fplaywright.dev","U-Tn8P9DTjsve7P0YEyG-yEgkuI9kLgoY3KIcnUZ8Qw",{"id":391,"category":252,"extension":134,"icon":392,"level":185,"meta":393,"name":394,"stem":395,"url":396,"year":161,"__hash__":397},"skills\u002Fskills\u002Fpostgres.yml","i-logos-postgresql",{},"Postgres","skills\u002Fpostgres","https:\u002F\u002Fwww.postgresql.org","SkbJBjm46QnLyVmsyIEO7LGDxT46TkJ5yLBcO-KOl3A",{"id":399,"category":133,"extension":134,"icon":400,"level":147,"meta":401,"name":402,"stem":403,"url":404,"year":179,"__hash__":405},"skills\u002Fskills\u002Fprisma.yml","i-logos-prisma",{},"Prisma","skills\u002Fprisma","https:\u002F\u002Fwww.prisma.io","q8u6bLwKxVNFZN18eMkhkkQW9KO1tzZzNCryalAhOQU",{"id":407,"category":145,"extension":134,"icon":408,"level":136,"meta":409,"name":410,"stem":411,"url":412,"year":301,"__hash__":413},"skills\u002Fskills\u002Fprometheus.yml","i-logos-prometheus",{},"Prometheus","skills\u002Fprometheus","https:\u002F\u002Fprometheus.io","wFPFPMT9NMAGyNakkGxpy1sdEZkiIYGD14Z-a9iSh7Y",{"id":415,"category":133,"extension":134,"icon":416,"level":136,"meta":417,"name":418,"stem":419,"url":420,"year":161,"__hash__":421},"skills\u002Fskills\u002Fpruvious.yml","\u002Fimages\u002Fskills\u002Fpruvious.svg",{},"Pruvious","skills\u002Fpruvious","https:\u002F\u002Fpruvious.com","OPpO35l5b9442tiQxW7FFq8LEVi8h2xGuNHgriT2UXM",{"id":423,"category":183,"extension":134,"icon":424,"level":147,"meta":425,"name":426,"stem":427,"url":428,"year":208,"__hash__":429},"skills\u002Fskills\u002Freact.yml","i-logos-react",{},"React","skills\u002Freact","https:\u002F\u002Freact.dev","0GbioLLfFPZRDh0rOzkolvqdcZFEEMKUh0_3lzOVaL4",{"id":431,"category":252,"extension":134,"icon":432,"level":147,"meta":433,"name":434,"stem":435,"url":436,"year":161,"__hash__":437},"skills\u002Fskills\u002Fsqlite.yml","i-logos-sqlite",{},"SQLite","skills\u002Fsqlite","https:\u002F\u002Fwww.sqlite.org","gHx-0xMVX6TE88ObCbbLoWfkLG1t3B_z6zSzT8m__fI",{"id":439,"category":133,"extension":134,"icon":440,"level":147,"meta":441,"name":442,"stem":443,"url":444,"year":179,"__hash__":445},"skills\u002Fskills\u002Fstripe.yml","i-logos-stripe",{},"Stripe","skills\u002Fstripe","https:\u002F\u002Fstripe.com","UGj0EO6yOfztwtcQ_wMiqUU1UYgTLbB5jxl9e-asFpA",{"id":447,"category":183,"extension":134,"icon":448,"level":185,"meta":449,"name":450,"stem":451,"url":452,"year":179,"__hash__":453},"skills\u002Fskills\u002Ftailwind.yml","i-logos-tailwindcss-icon",{},"Tailwind","skills\u002Ftailwind","https:\u002F\u002Ftailwindcss.com","VkKWaTtKA70dUgAsMIDKN8N94TH1MsU8-b1kPUx-Wq8",{"id":455,"category":183,"extension":134,"icon":456,"level":136,"meta":457,"name":458,"stem":459,"url":460,"year":301,"__hash__":461},"skills\u002Fskills\u002Ftiptap.yml","i-custom-tiptap",{},"Tiptap","skills\u002Ftiptap","https:\u002F\u002Ftiptap.dev","gBw3cx61wA-4kZNeChkBoB38Z2aS7Y5P7_ufagI8BSU",{"id":463,"category":145,"extension":134,"icon":464,"level":136,"meta":465,"name":466,"stem":467,"url":468,"year":179,"__hash__":469},"skills\u002Fskills\u002Ftraefik.yml","i-simple-icons-traefikproxy",{},"Traefik","skills\u002Ftraefik","https:\u002F\u002Ftraefik.io","o-rECQEfSq4kbulKrfx14EeER1PTEYFavnEQHhAuaBw",{"id":471,"category":183,"extension":134,"icon":472,"level":185,"meta":473,"name":87,"stem":474,"url":475,"year":274,"__hash__":476},"skills\u002Fskills\u002Ftypescript.yml","i-logos-typescript-icon",{},"skills\u002Ftypescript","https:\u002F\u002Fwww.typescriptlang.org","C6S0SKAC_EKz2ITnMm4hCCUKG2P5KsOfbGXqMzFI-EY",{"id":478,"category":165,"extension":134,"icon":479,"level":147,"meta":480,"name":481,"stem":482,"url":483,"year":199,"__hash__":484},"skills\u002Fskills\u002Fvite.yml","i-logos-vitejs",{},"Vite","skills\u002Fvite","https:\u002F\u002Fvite.dev","TpxW7LK8p6-A-XypTE_uBmHo2vAWbB_1Zy8pSt8Ih8A",{"id":486,"category":295,"extension":134,"icon":487,"level":147,"meta":488,"name":489,"stem":490,"url":491,"year":179,"__hash__":492},"skills\u002Fskills\u002Fvitest.yml","i-logos-vitest",{},"Vitest","skills\u002Fvitest","https:\u002F\u002Fvitest.dev","IS5nla0e3iC4ACuhoQjqBEdsXwdYY2WRZ118YrtMNHg",{"id":494,"category":183,"extension":134,"icon":495,"level":185,"meta":496,"name":90,"stem":497,"url":498,"year":274,"__hash__":499},"skills\u002Fskills\u002Fvue.yml","i-logos-vue",{},"skills\u002Fvue","https:\u002F\u002Fvuejs.org","F0ztv5f98yIVCbyfDGbwlJ22KROp3yL3Izjp0VBWlAU",{"id":501,"category":183,"extension":134,"icon":502,"level":136,"meta":503,"name":504,"stem":505,"url":506,"year":152,"__hash__":507},"skills\u002Fskills\u002Fvuetify.yml","i-logos-vuetifyjs",{},"Vuetify","skills\u002Fvuetify","https:\u002F\u002Fvuetifyjs.com","g2xXVDYSXlGLfnyLDkx3zPBVc3BCYEiGx5Ilh5-pTT4",{"id":509,"category":183,"extension":134,"icon":510,"level":147,"meta":511,"name":512,"stem":513,"url":514,"year":179,"__hash__":515},"skills\u002Fskills\u002Fvueuse.yml","i-logos-vueuse",{},"VueUse","skills\u002Fvueuse","https:\u002F\u002Fvueuse.org","-6U_Vo_7APwR3Oo6rLI2mWO_Emse0aAoL1vL4noxZEk",{"id":517,"category":165,"extension":134,"icon":518,"level":147,"meta":519,"name":520,"stem":521,"url":522,"year":179,"__hash__":523},"skills\u002Fskills\u002Fwhisper.yml","i-simple-icons-openai",{},"Whisper","skills\u002Fwhisper","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper","KtdfiQb3uVjd4DFgV3SN8y6xCAu-eP81lC8nH3NM0S8",{"id":525,"category":133,"extension":134,"icon":526,"level":147,"meta":527,"name":528,"stem":529,"url":530,"year":179,"__hash__":531},"skills\u002Fskills\u002Fzod.yml","i-logos-zod",{},"Zod","skills\u002Fzod","https:\u002F\u002Fzod.dev","DLk6ZAEEgRjsJqbGw9uXcZmhZaVQZj7gSbhWpolBDNk",1784578080523]