[{"data":1,"prerenderedAt":597},["ShallowReactive",2],{"\u002Fprojects\u002Fmcsm":3,"github-\u002Fprojects\u002Fmcsm":185,"skills":194},{"id":4,"title":5,"body":6,"description":148,"extension":149,"featured":150,"image":151,"languages":152,"links":159,"meta":169,"navigation":150,"path":170,"repo":171,"seo":172,"skills":175,"stem":183,"__hash__":184},"projects\u002Fprojects\u002Fmcsm.md","MCSM",{"type":7,"value":8,"toc":139},"minimark",[9,18,21,24,34,39,42,45,84,88,99,102,106,109,117,121,128,136],[10,11,12,13,17],"p",{},"Wenn man mit Freunden Minecraft spielt, ist man schnell derjenige, der den Server hostet. Bei mir war das nicht anders – und es lief jedes Mal auf das Gleiche hinaus: per SSH einloggen, ",[14,15,16],"code",{},"server.properties"," von Hand editieren, Versionen und Mods jonglieren und bei jedem neuen Modpack wieder von vorne anfangen.",[10,19,20],{},"Irgendwann hatte ich genug davon und wollte einfach ein Dashboard, in dem ich einen Server in ein paar Klicks aufsetze und verwalte. Genau das ist MCSM geworden.",[10,22,23],{},"MCSM ist eine selbst-hostbare Web-App, die einen durch einen kleinen Wizard führt – Server-Typ, Version, Arbeitsspeicher, Welt-Einstellungen, MOTD und Operatoren – und den Server anschließend als Docker-Container provisioniert. Um das Routing kümmert sich Infrarust: Es erkennt jeden Server automatisch an seinen Docker-Labels, sodass es keine Proxy-Configs mehr zu pflegen gibt.",[25,26,27],"card-group",{},[10,28,29],{},[30,31],"img",{"alt":32,"src":33},"mcsm-overview","\u002Fimages\u002Fprojects\u002Fmcsm\u002Foverview.png",[35,36,38],"h3",{"id":37},"alles-aus-dem-browser","Alles aus dem Browser",[10,40,41],{},"Jeder Server bekommt im Dashboard seine eigenen Seiten – von Overview über Configuration, Players und Backups bis zur Map. Server lassen sich anlegen, starten, stoppen und bearbeiten, ohne den Server-Typ jemals im Terminal anzufassen.",[10,43,44],{},"Besonders viel Zeit habe ich in die Details gesteckt, die das Hosten sonst nervig machen:",[46,47,48,56,62,72,78],"ul",{},[49,50,51,55],"li",{},[52,53,54],"strong",{},"Login mit Passkeys"," – Dashboard und API liegen hinter einem Login mit Passwort, Passkeys (WebAuthn) und „Sign in with Microsoft\".",[49,57,58,61],{},[52,59,60],{},"Server-Vorschau wie im Spiel"," – man sieht seinen Server genau so, wie ihn Spieler sehen: Icon, live MOTD, Spielerzahl und Ping, gerendert in der Minecraft-Schrift.",[49,63,64,67,68,71],{},[52,65,66],{},"Mods & Plugins"," – eigene ",[14,69,70],{},".jar","-Dateien hochladen oder direkt über den eingebauten Modrinth-Browser passende Builds finden und mit einem Klick installieren – inklusive „Update verfügbar\"-Badge per SHA-1-Hash.",[49,73,74,77],{},[52,75,76],{},"Config-Editor mit Schutz"," – Plugin- und Server-Configs werden in einem Monaco-Editor bearbeitet, mit serverseitiger YAML\u002FJSON-Validierung, damit ein Tippfehler den Server nicht lahmlegt.",[49,79,80,83],{},[52,81,82],{},"World-Backups"," – die komplette Welt mit einem Klick als Snapshot sichern, herunterladen oder wiederherstellen.",[35,85,87],{"id":86},"der-motd-editor-zum-ausprobieren","Der MOTD-Editor zum Ausprobieren",[10,89,90,91,94,95,98],{},"Das Herzstück der Konfiguration ist der MOTD-Editor. Im echten MCSM ist es ein Rich-Text-Editor, der die klassischen ",[14,92,93],{},"§","-Codes liest und schreibt – inklusive 1.16+ Hex-Farben und animiertem ",[14,96,97],{},"§k","-Text. Probier ihn direkt hier aus: tippe oder nutze die Toolbar und sieh live, wie dein Server in der Multiplayer-Liste aussieht.",[100,101],"mcsm-motd-editor",{},[35,103,105],{"id":104},"live-console-und-analytics","Live-Console und Analytics",[10,107,108],{},"Über eine eingebaute xterm.js-Console streame ich die Server-Logs live und schicke Befehle per RCON – direkt aus dem Dashboard. Dazu werden im Minutentakt CPU, RAM, Netzwerk, Ping und Spielerzahl gesampled und über 1-Stunden-, 24-Stunden- und 7-Tage-Zeiträume in Charts dargestellt.",[25,110,111],{},[10,112,113],{},[30,114],{"alt":115,"src":116},"mcsm-console","\u002Fimages\u002Fprojects\u002Fmcsm\u002Fconsole.png",[35,118,120],{"id":119},"map-world-pregeneration","Map & World-Pregeneration",[10,122,123,124,127],{},"Chunks lassen sich mit Chunky vorab generieren und dabei live auf einer Karte beobachten. Optional blendet MCSM eine interaktive BlueMap-3D-Weltkarte ein – automatisch installiert und über eine eigene Domain unter ",[14,125,126],{},"\u002Fmap\u002F\u003Cserver>\u002F"," ausgeliefert, ganz ohne zusätzliche Ports oder DNS-Einträge.",[25,129,130],{},[10,131,132],{},[30,133],{"alt":134,"src":135},"mcsm-map","\u002Fimages\u002Fprojects\u002Fmcsm\u002Fmap.jpg",[10,137,138],{},"MCSM ist nach wie vor ein Work-in-Progress-Projekt, an dem ich immer mal wieder weiterbaue – aber meine Minecraft-Server fasse ich seitdem nicht mehr über SSH an.",{"title":140,"searchDepth":141,"depth":141,"links":142},"",2,[143,145,146,147],{"id":37,"depth":144,"text":38},3,{"id":86,"depth":144,"text":87},{"id":104,"depth":144,"text":105},{"id":119,"depth":144,"text":120},"MCSM (Minecraft Server Manager) ist eine selbst-hostbare Web-App, mit der man Minecraft-Server in wenigen Klicks aufsetzt und verwaltet.","md",true,"\u002Fimages\u002Fprojects\u002Fcards\u002Fmcsm.png",[153,156],{"language":154,"percentage":155},"Nuxt",75,{"language":157,"percentage":158},"TypeScript",25,[160,165],{"label":161,"icon":162,"to":163,"target":164,"external":150},"Website","lucide-globe","https:\u002F\u002Fdocs.mcsm.niki2k1.dev","_blank",{"label":166,"icon":167,"to":168,"external":150},"Github Projekt","i-mdi-github","https:\u002F\u002Fgithub.com\u002FNiki2k1\u002Fmcsm",{},"\u002Fprojects\u002Fmcsm","Niki2k1\u002Fmcsm",{"title":173,"description":174},"MCSM – Minecraft Server Manager","MCSM ist eine selbst-hostbare Web-App, mit der man Minecraft-Server über ein Dashboard aufsetzt und verwaltet – Server-Erstellung per Wizard, Docker-Provisionierung, Live-Console, Backups und BlueMap inklusive.",[176,177,178,179,180,181,182],"nuxt","typescript","tailwind","docker","drizzle-orm","sqlite","nuxt-ui","projects\u002Fmcsm","z1okXOPgj6OJLWOnLjLHFIg93dI9SQv8jRnguNEo6hs",{"stars":186,"forks":186,"createdAt":187,"pushedAt":188,"commitCount":189,"activity":190},1,"2024-08-28T17:15:43Z","2026-07-16T07:10:00Z",111,[191,191,191,191,191,141,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,192,193,191,186,191,191,191,141],0,46,45,[195,207,218,227,236,245,256,265,274,282,290,298,307,315,324,332,341,349,358,368,376,384,392,400,408,415,422,429,438,446,454,462,470,478,486,494,502,510,518,526,534,541,549,557,565,573,581,589],{"id":196,"category":197,"extension":198,"icon":199,"level":200,"meta":201,"name":202,"stem":203,"url":204,"year":205,"__hash__":206},"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":208,"category":209,"extension":198,"icon":210,"level":211,"meta":212,"name":213,"stem":214,"url":215,"year":216,"__hash__":217},"skills\u002Fskills\u002Fazure.yml","DevOps","i-logos-microsoft-azure","Proficient",{},"Azure","skills\u002Fazure","https:\u002F\u002Fazure.microsoft.com","2021","uhi9OV2kz1bgheQ-n9srKx0HSUYlYI7MuyjObYDUgrQ",{"id":219,"category":197,"extension":198,"icon":220,"level":211,"meta":221,"name":222,"stem":223,"url":224,"year":225,"__hash__":226},"skills\u002Fskills\u002Fbun.yml","i-logos-bun",{},"Bun","skills\u002Fbun","https:\u002F\u002Fbun.sh","2024","bkieq8AIp5NIJh3xetY96f7WfuFNjAMI7oevfWb1W-0",{"id":228,"category":229,"extension":198,"icon":230,"level":200,"meta":231,"name":232,"stem":233,"url":234,"year":205,"__hash__":235},"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":237,"category":209,"extension":198,"icon":238,"level":211,"meta":239,"name":240,"stem":241,"url":242,"year":243,"__hash__":244},"skills\u002Fskills\u002Fcoolify.yml","i-simple-icons-coolify",{},"Coolify","skills\u002Fcoolify","https:\u002F\u002Fcoolify.io","2023","uh7httXSb9SS1ggRLMKgfmPi2mgMtqNgSGUnSDHeAXk",{"id":246,"category":247,"extension":198,"icon":248,"level":249,"meta":250,"name":251,"stem":252,"url":253,"year":254,"__hash__":255},"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":257,"category":197,"extension":198,"icon":258,"level":200,"meta":259,"name":260,"stem":261,"url":262,"year":263,"__hash__":264},"skills\u002Fskills\u002Fdeno.yml","i-logos-deno",{},"Deno","skills\u002Fdeno","https:\u002F\u002Fdeno.com","2022","8A31HmVc4GmvzZgLwJKLp_Km8w1T5q_vG3TVVtDOHnQ",{"id":266,"category":209,"extension":198,"icon":267,"level":249,"meta":268,"name":269,"stem":270,"url":271,"year":272,"__hash__":273},"skills\u002Fskills\u002Fdocker.yml","i-logos-docker-icon",{},"Docker","skills\u002Fdocker","https:\u002F\u002Fwww.docker.com","2018","uyfqCF9l6H7XsIozx1X-BUtL2KULygtDHq2cOZARNZ0",{"id":275,"category":197,"extension":198,"icon":276,"level":211,"meta":277,"name":278,"stem":279,"url":280,"year":243,"__hash__":281},"skills\u002Fskills\u002Fdrizzle-orm.yml","\u002Fimages\u002Fskills\u002Fdrizzle.png",{},"Drizzle ORM","skills\u002Fdrizzle-orm","https:\u002F\u002Form.drizzle.team","zWErcCRBV0E4HJ5FqPZd5-J3wK3j9Yw25nOgK2Qy5hw",{"id":283,"category":229,"extension":198,"icon":284,"level":200,"meta":285,"name":286,"stem":287,"url":288,"year":205,"__hash__":289},"skills\u002Fskills\u002Felectron.yml","i-logos-electron",{},"Electron","skills\u002Felectron","https:\u002F\u002Fwww.electronjs.org","fraXMojywwTj5bFfI5bkZhPnQV48uvu0gcmqTT5a4_U",{"id":291,"category":197,"extension":198,"icon":292,"level":211,"meta":293,"name":294,"stem":295,"url":296,"year":272,"__hash__":297},"skills\u002Fskills\u002Fexpress.yml","i-simple-icons-express",{},"Express","skills\u002Fexpress","https:\u002F\u002Fexpressjs.com","HDN_-ZUR4vI-cmgZ4yy84nm94T5rgkV3mr3PQjeBwe4",{"id":299,"category":229,"extension":198,"icon":300,"level":200,"meta":301,"name":302,"stem":303,"url":304,"year":305,"__hash__":306},"skills\u002Fskills\u002Fffmpeg.yml","i-logos-ffmpeg-icon",{},"ffmpeg","skills\u002Fffmpeg","https:\u002F\u002Fffmpeg.org","2020","ApV9_VXvOROhOvHzPYhx23qctHIqsAdUiIIvG6U8HeE",{"id":308,"category":229,"extension":198,"icon":309,"level":211,"meta":310,"name":311,"stem":312,"url":313,"year":216,"__hash__":314},"skills\u002Fskills\u002Ffigma.yml","i-logos-figma",{},"Figma","skills\u002Ffigma","https:\u002F\u002Fwww.figma.com","7YpzoWeTiTmAMs8PL1jIfpLLzHc028OaNC-k2XmWF7c",{"id":316,"category":317,"extension":198,"icon":318,"level":211,"meta":319,"name":320,"stem":321,"url":322,"year":305,"__hash__":323},"skills\u002Fskills\u002Ffirebase.yml","Data","i-logos-firebase",{},"Firebase","skills\u002Ffirebase","https:\u002F\u002Ffirebase.google.com","2BZXkjqAiQI7NcBh95AwkW55Kg9OYJcTd4g7BZlVyH8",{"id":325,"category":197,"extension":198,"icon":326,"level":249,"meta":327,"name":328,"stem":329,"url":330,"year":243,"__hash__":331},"skills\u002Fskills\u002Fgo.yml","i-logos-go",{},"Go","skills\u002Fgo","https:\u002F\u002Fgo.dev","jfqLu9ALZexHbFIxbNX4hXCa9YWsGQ_J879h7nG3Mwg",{"id":333,"category":209,"extension":198,"icon":334,"level":211,"meta":335,"name":336,"stem":337,"url":338,"year":339,"__hash__":340},"skills\u002Fskills\u002Fgrafana.yml","i-logos-grafana",{},"Grafana","skills\u002Fgrafana","https:\u002F\u002Fgrafana.com","2019","bAJDLy0__P9oiyY9zBlhcQLKAc6ijpLfODLoQFmcXRk",{"id":342,"category":247,"extension":198,"icon":343,"level":249,"meta":344,"name":345,"stem":346,"url":347,"year":254,"__hash__":348},"skills\u002Fskills\u002Fhtml.yml","i-logos-html-5",{},"HTML","skills\u002Fhtml","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FHTML","uKm-23PNdCtyRNJPSwsp0T81LlpZYyDem_nanppkV40",{"id":350,"category":247,"extension":198,"icon":351,"level":249,"meta":352,"name":353,"stem":354,"url":355,"year":356,"__hash__":357},"skills\u002Fskills\u002Fjavascript.yml","i-logos-javascript",{},"JavaScript","skills\u002Fjavascript","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FJavaScript","2017","IAVd2T2nFt-Keg7ky5OkJQv0XHXgH5Q6azMVo_EwOZc",{"id":359,"category":360,"extension":198,"icon":361,"level":200,"meta":362,"name":363,"stem":364,"url":365,"year":366,"__hash__":367},"skills\u002Fskills\u002Fk6.yml","Testing","i-simple-icons-k6",{},"k6","skills\u002Fk6","https:\u002F\u002Fk6.io","2025","9LQe3jOXpzWYeu4o8j4frNKF_kRfmU34bztg9h0iybs",{"id":369,"category":209,"extension":198,"icon":370,"level":211,"meta":371,"name":372,"stem":373,"url":374,"year":216,"__hash__":375},"skills\u002Fskills\u002Fkubernetes.yml","i-logos-kubernetes",{},"Kubernetes","skills\u002Fkubernetes","https:\u002F\u002Fkubernetes.io","QZKWLGxmYYLjqMaWXYElwW6LzZIhRiWviV7EqzTuf20",{"id":377,"category":209,"extension":198,"icon":378,"level":200,"meta":379,"name":380,"stem":381,"url":382,"year":366,"__hash__":383},"skills\u002Fskills\u002Floki.yml","\u002Fimages\u002Fskills\u002Floki.png",{},"Loki","skills\u002Floki","https:\u002F\u002Fgrafana.com\u002Foss\u002Floki","6XbX8pKz3kJ-UNj2sa0D5jiJpCuOjHZPHW6K0p9yc5c",{"id":385,"category":317,"extension":198,"icon":386,"level":211,"meta":387,"name":388,"stem":389,"url":390,"year":305,"__hash__":391},"skills\u002Fskills\u002Fmongodb.yml","i-logos-mongodb-icon",{},"MongoDB","skills\u002Fmongodb","https:\u002F\u002Fwww.mongodb.com","vAymZsawe3eHWefRddwCPUkOz4ENH0f27f3c7qoPaiU",{"id":393,"category":197,"extension":198,"icon":394,"level":211,"meta":395,"name":396,"stem":397,"url":398,"year":216,"__hash__":399},"skills\u002Fskills\u002Fnest.yml","i-logos-nestjs",{},"Nest","skills\u002Fnest","https:\u002F\u002Fnestjs.com","_k_OLI2yWacjZ6bnL_2SY5foR4PTtG05W754HMLaw84",{"id":401,"category":197,"extension":198,"icon":402,"level":249,"meta":403,"name":404,"stem":405,"url":406,"year":272,"__hash__":407},"skills\u002Fskills\u002Fnode-js.yml","i-logos-nodejs-icon",{},"Node.js","skills\u002Fnode-js","https:\u002F\u002Fnodejs.org","EDZpDGWxfyGs0KkLE0Lb99w_kAQ3M6Q7drthHbUYEY0",{"id":409,"category":247,"extension":198,"icon":410,"level":249,"meta":411,"name":154,"stem":412,"url":413,"year":263,"__hash__":414},"skills\u002Fskills\u002Fnuxt.yml","i-logos-nuxt-icon",{},"skills\u002Fnuxt","https:\u002F\u002Fnuxt.com","kH1NvQG2PGmpWgMoKRLQGjTCwFTGQmiXgMDGdRNAcOI",{"id":416,"category":247,"extension":198,"icon":410,"level":211,"meta":417,"name":418,"stem":419,"url":420,"year":225,"__hash__":421},"skills\u002Fskills\u002Fnuxt-content.yml",{},"Nuxt Content","skills\u002Fnuxt-content","https:\u002F\u002Fcontent.nuxt.com","RgsSePMO7r_6Hu61Hnfy5f4ll2ofq37vk0rJxmPjfg0",{"id":423,"category":247,"extension":198,"icon":410,"level":211,"meta":424,"name":425,"stem":426,"url":427,"year":225,"__hash__":428},"skills\u002Fskills\u002Fnuxt-ui.yml",{},"Nuxt UI","skills\u002Fnuxt-ui","https:\u002F\u002Fui.nuxt.com","e8h3Pmq1FaZ6dXccd_HW3_NTbNofuk5zfmn7_FmlBnU",{"id":430,"category":197,"extension":198,"icon":431,"level":200,"meta":432,"name":433,"stem":434,"url":435,"year":436,"__hash__":437},"skills\u002Fskills\u002Fphp.yml","i-logos-php",{},"PHP","skills\u002Fphp","https:\u002F\u002Fwww.php.net","2016","s1Q64crnDcVTJ7GDn-w43Gl5HMI8gYVM7AOWotWdEWc",{"id":439,"category":247,"extension":198,"icon":440,"level":211,"meta":441,"name":442,"stem":443,"url":444,"year":263,"__hash__":445},"skills\u002Fskills\u002Fpinia.yml","i-logos-pinia",{},"Pinia","skills\u002Fpinia","https:\u002F\u002Fpinia.vuejs.org","otf3EcrCxdIwH7CiBpeIxBI-K0pma63F5TzHHSN51IA",{"id":447,"category":360,"extension":198,"icon":448,"level":211,"meta":449,"name":450,"stem":451,"url":452,"year":225,"__hash__":453},"skills\u002Fskills\u002Fplaywright.yml","i-logos-playwright",{},"Playwright","skills\u002Fplaywright","https:\u002F\u002Fplaywright.dev","U-Tn8P9DTjsve7P0YEyG-yEgkuI9kLgoY3KIcnUZ8Qw",{"id":455,"category":317,"extension":198,"icon":456,"level":249,"meta":457,"name":458,"stem":459,"url":460,"year":225,"__hash__":461},"skills\u002Fskills\u002Fpostgres.yml","i-logos-postgresql",{},"Postgres","skills\u002Fpostgres","https:\u002F\u002Fwww.postgresql.org","SkbJBjm46QnLyVmsyIEO7LGDxT46TkJ5yLBcO-KOl3A",{"id":463,"category":197,"extension":198,"icon":464,"level":211,"meta":465,"name":466,"stem":467,"url":468,"year":243,"__hash__":469},"skills\u002Fskills\u002Fprisma.yml","i-logos-prisma",{},"Prisma","skills\u002Fprisma","https:\u002F\u002Fwww.prisma.io","q8u6bLwKxVNFZN18eMkhkkQW9KO1tzZzNCryalAhOQU",{"id":471,"category":209,"extension":198,"icon":472,"level":200,"meta":473,"name":474,"stem":475,"url":476,"year":366,"__hash__":477},"skills\u002Fskills\u002Fprometheus.yml","i-logos-prometheus",{},"Prometheus","skills\u002Fprometheus","https:\u002F\u002Fprometheus.io","wFPFPMT9NMAGyNakkGxpy1sdEZkiIYGD14Z-a9iSh7Y",{"id":479,"category":197,"extension":198,"icon":480,"level":200,"meta":481,"name":482,"stem":483,"url":484,"year":225,"__hash__":485},"skills\u002Fskills\u002Fpruvious.yml","\u002Fimages\u002Fskills\u002Fpruvious.svg",{},"Pruvious","skills\u002Fpruvious","https:\u002F\u002Fpruvious.com","OPpO35l5b9442tiQxW7FFq8LEVi8h2xGuNHgriT2UXM",{"id":487,"category":247,"extension":198,"icon":488,"level":211,"meta":489,"name":490,"stem":491,"url":492,"year":272,"__hash__":493},"skills\u002Fskills\u002Freact.yml","i-logos-react",{},"React","skills\u002Freact","https:\u002F\u002Freact.dev","0GbioLLfFPZRDh0rOzkolvqdcZFEEMKUh0_3lzOVaL4",{"id":495,"category":317,"extension":198,"icon":496,"level":211,"meta":497,"name":498,"stem":499,"url":500,"year":225,"__hash__":501},"skills\u002Fskills\u002Fsqlite.yml","i-logos-sqlite",{},"SQLite","skills\u002Fsqlite","https:\u002F\u002Fwww.sqlite.org","gHx-0xMVX6TE88ObCbbLoWfkLG1t3B_z6zSzT8m__fI",{"id":503,"category":197,"extension":198,"icon":504,"level":211,"meta":505,"name":506,"stem":507,"url":508,"year":243,"__hash__":509},"skills\u002Fskills\u002Fstripe.yml","i-logos-stripe",{},"Stripe","skills\u002Fstripe","https:\u002F\u002Fstripe.com","UGj0EO6yOfztwtcQ_wMiqUU1UYgTLbB5jxl9e-asFpA",{"id":511,"category":247,"extension":198,"icon":512,"level":249,"meta":513,"name":514,"stem":515,"url":516,"year":243,"__hash__":517},"skills\u002Fskills\u002Ftailwind.yml","i-logos-tailwindcss-icon",{},"Tailwind","skills\u002Ftailwind","https:\u002F\u002Ftailwindcss.com","VkKWaTtKA70dUgAsMIDKN8N94TH1MsU8-b1kPUx-Wq8",{"id":519,"category":247,"extension":198,"icon":520,"level":200,"meta":521,"name":522,"stem":523,"url":524,"year":366,"__hash__":525},"skills\u002Fskills\u002Ftiptap.yml","i-custom-tiptap",{},"Tiptap","skills\u002Ftiptap","https:\u002F\u002Ftiptap.dev","gBw3cx61wA-4kZNeChkBoB38Z2aS7Y5P7_ufagI8BSU",{"id":527,"category":209,"extension":198,"icon":528,"level":200,"meta":529,"name":530,"stem":531,"url":532,"year":243,"__hash__":533},"skills\u002Fskills\u002Ftraefik.yml","i-simple-icons-traefikproxy",{},"Traefik","skills\u002Ftraefik","https:\u002F\u002Ftraefik.io","o-rECQEfSq4kbulKrfx14EeER1PTEYFavnEQHhAuaBw",{"id":535,"category":247,"extension":198,"icon":536,"level":249,"meta":537,"name":157,"stem":538,"url":539,"year":339,"__hash__":540},"skills\u002Fskills\u002Ftypescript.yml","i-logos-typescript-icon",{},"skills\u002Ftypescript","https:\u002F\u002Fwww.typescriptlang.org","C6S0SKAC_EKz2ITnMm4hCCUKG2P5KsOfbGXqMzFI-EY",{"id":542,"category":229,"extension":198,"icon":543,"level":211,"meta":544,"name":545,"stem":546,"url":547,"year":263,"__hash__":548},"skills\u002Fskills\u002Fvite.yml","i-logos-vitejs",{},"Vite","skills\u002Fvite","https:\u002F\u002Fvite.dev","TpxW7LK8p6-A-XypTE_uBmHo2vAWbB_1Zy8pSt8Ih8A",{"id":550,"category":360,"extension":198,"icon":551,"level":211,"meta":552,"name":553,"stem":554,"url":555,"year":243,"__hash__":556},"skills\u002Fskills\u002Fvitest.yml","i-logos-vitest",{},"Vitest","skills\u002Fvitest","https:\u002F\u002Fvitest.dev","IS5nla0e3iC4ACuhoQjqBEdsXwdYY2WRZ118YrtMNHg",{"id":558,"category":247,"extension":198,"icon":559,"level":249,"meta":560,"name":561,"stem":562,"url":563,"year":339,"__hash__":564},"skills\u002Fskills\u002Fvue.yml","i-logos-vue",{},"Vue","skills\u002Fvue","https:\u002F\u002Fvuejs.org","F0ztv5f98yIVCbyfDGbwlJ22KROp3yL3Izjp0VBWlAU",{"id":566,"category":247,"extension":198,"icon":567,"level":200,"meta":568,"name":569,"stem":570,"url":571,"year":216,"__hash__":572},"skills\u002Fskills\u002Fvuetify.yml","i-logos-vuetifyjs",{},"Vuetify","skills\u002Fvuetify","https:\u002F\u002Fvuetifyjs.com","g2xXVDYSXlGLfnyLDkx3zPBVc3BCYEiGx5Ilh5-pTT4",{"id":574,"category":247,"extension":198,"icon":575,"level":211,"meta":576,"name":577,"stem":578,"url":579,"year":243,"__hash__":580},"skills\u002Fskills\u002Fvueuse.yml","i-logos-vueuse",{},"VueUse","skills\u002Fvueuse","https:\u002F\u002Fvueuse.org","-6U_Vo_7APwR3Oo6rLI2mWO_Emse0aAoL1vL4noxZEk",{"id":582,"category":229,"extension":198,"icon":583,"level":211,"meta":584,"name":585,"stem":586,"url":587,"year":243,"__hash__":588},"skills\u002Fskills\u002Fwhisper.yml","i-simple-icons-openai",{},"Whisper","skills\u002Fwhisper","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper","KtdfiQb3uVjd4DFgV3SN8y6xCAu-eP81lC8nH3NM0S8",{"id":590,"category":197,"extension":198,"icon":591,"level":211,"meta":592,"name":593,"stem":594,"url":595,"year":243,"__hash__":596},"skills\u002Fskills\u002Fzod.yml","i-logos-zod",{},"Zod","skills\u002Fzod","https:\u002F\u002Fzod.dev","DLk6ZAEEgRjsJqbGw9uXcZmhZaVQZj7gSbhWpolBDNk",1784578080523]