[{"data":1,"prerenderedAt":544},["ShallowReactive",2],{"\u002Fprojects\u002Fmcsm":3,"skills":183},{"id":4,"title":5,"body":6,"description":148,"extension":149,"featured":150,"image":33,"languages":151,"links":158,"meta":168,"navigation":150,"path":169,"seo":170,"skills":173,"stem":181,"__hash__":182},"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,[152,155],{"language":153,"percentage":154},"Nuxt",75,{"language":156,"percentage":157},"TypeScript",25,[159,164],{"label":160,"icon":161,"to":162,"target":163,"external":150},"Website","lucide-globe","https:\u002F\u002Fdocs.mcsm.niki2k1.dev","_blank",{"label":165,"icon":166,"to":167,"external":150},"Github Projekt","i-mdi-github","https:\u002F\u002Fgithub.com\u002FNiki2k1\u002Fmcsm",{},"\u002Fprojects\u002Fmcsm",{"title":171,"description":172},"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.",[174,175,176,177,178,179,180],"nuxt","typescript","tailwind","docker","drizzle-orm","sqlite","nuxt-ui","projects\u002Fmcsm","coeCV2_1KjBqYAKhl7LRjk9n_L_X2hFEv8SJQIf-qB8",[184,196,206,216,226,235,244,253,261,270,278,287,295,304,312,321,330,338,346,354,362,370,377,385,392,401,409,417,425,433,441,449,457,465,473,481,489,496,504,512,520,528,536],{"id":185,"category":186,"extension":187,"icon":188,"learning":189,"meta":190,"name":191,"stem":192,"url":193,"year":194,"__hash__":195},"skills\u002Fskills\u002Fai-sdk.yml","Backend","yml","i-logos-vercel-icon",false,{},"AI SDK","skills\u002Fai-sdk","https:\u002F\u002Fai-sdk.dev","2025","1mBkxvpH9fbkLSxIap-yeeGejww5ztNxB7wSAbDmM9o",{"id":197,"category":198,"extension":187,"icon":199,"learning":189,"meta":200,"name":201,"stem":202,"url":203,"year":204,"__hash__":205},"skills\u002Fskills\u002Fazure.yml","DevOps","i-logos-microsoft-azure",{},"Azure","skills\u002Fazure","https:\u002F\u002Fazure.microsoft.com","2021","vw269UMDaJq9v2qcGXnrXzH74pLA2gatTzqA8Dq1v7U",{"id":207,"category":208,"extension":187,"icon":209,"learning":189,"meta":210,"name":211,"stem":212,"url":213,"year":214,"__hash__":215},"skills\u002Fskills\u002Fclaude-code.yml","Tooling","i-logos-claude-icon",{},"Claude Code","skills\u002Fclaude-code","https:\u002F\u002Fclaude.com\u002Fclaude-code","2026","4F2KUh6Seai8OvBJPIFhOqpZ_QakT56lWZyU0ePb9Vg",{"id":217,"category":218,"extension":187,"icon":219,"learning":189,"meta":220,"name":221,"stem":222,"url":223,"year":224,"__hash__":225},"skills\u002Fskills\u002Fcss.yml","Frontend","i-logos-css-3",{},"CSS","skills\u002Fcss","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FCSS","2013","xnDn-Dys3IkC7Xj6qE-V8jh5Q4I0soz4epXhBx1YO34",{"id":227,"category":186,"extension":187,"icon":228,"learning":189,"meta":229,"name":230,"stem":231,"url":232,"year":233,"__hash__":234},"skills\u002Fskills\u002Fdeno.yml","i-logos-deno",{},"Deno","skills\u002Fdeno","https:\u002F\u002Fdeno.com","2022","DOrhV6qIdkii8bVNtLMj9gBRNQZrm3g3T2Ar1en_5HI",{"id":236,"category":198,"extension":187,"icon":237,"learning":189,"meta":238,"name":239,"stem":240,"url":241,"year":242,"__hash__":243},"skills\u002Fskills\u002Fdocker.yml","i-logos-docker-icon",{},"Docker","skills\u002Fdocker","https:\u002F\u002Fwww.docker.com","2018","tgE6E7XO_ihXArVHlPuMdrtRlyiG4O-piS7hDuyN0LU",{"id":245,"category":186,"extension":187,"icon":246,"learning":189,"meta":247,"name":248,"stem":249,"url":250,"year":251,"__hash__":252},"skills\u002Fskills\u002Fdrizzle-orm.yml","\u002Fimages\u002Fskills\u002Fdrizzle.png",{},"Drizzle ORM","skills\u002Fdrizzle-orm","https:\u002F\u002Form.drizzle.team","2023","Cteh1LJol3EmKLNQ6-Xp9JPNgWr_gLLZTPPS5Ve3_wE",{"id":254,"category":208,"extension":187,"icon":255,"learning":189,"meta":256,"name":257,"stem":258,"url":259,"year":214,"__hash__":260},"skills\u002Fskills\u002Felectron.yml","i-logos-electron",{},"Electron","skills\u002Felectron","https:\u002F\u002Fwww.electronjs.org","OCEdlk1lXiQvLRbI8w8m6PKRrxGClteNlxxY3w0Hw4c",{"id":262,"category":208,"extension":187,"icon":263,"learning":189,"meta":264,"name":265,"stem":266,"url":267,"year":268,"__hash__":269},"skills\u002Fskills\u002Fffmpeg.yml","i-logos-ffmpeg-icon",{},"ffmpeg","skills\u002Fffmpeg","https:\u002F\u002Fffmpeg.org","2020","BK213YxQ3ysvef-K01LS6RAmC4RK_lCoCD6jo-miAko",{"id":271,"category":208,"extension":187,"icon":272,"learning":189,"meta":273,"name":274,"stem":275,"url":276,"year":204,"__hash__":277},"skills\u002Fskills\u002Ffigma.yml","i-logos-figma",{},"Figma","skills\u002Ffigma","https:\u002F\u002Fwww.figma.com","hHo_oIYyN6LCYpg5ag6_ivzmLNJxu3t88g2NlR5G3iU",{"id":279,"category":280,"extension":187,"icon":281,"learning":189,"meta":282,"name":283,"stem":284,"url":285,"year":268,"__hash__":286},"skills\u002Fskills\u002Ffirebase.yml","Data","i-logos-firebase",{},"Firebase","skills\u002Ffirebase","https:\u002F\u002Ffirebase.google.com","Tjx0KzEIQ-upHqYMQW65lscJu_1b06ucEesJE6Knnvg",{"id":288,"category":186,"extension":187,"icon":289,"learning":189,"meta":290,"name":291,"stem":292,"url":293,"year":251,"__hash__":294},"skills\u002Fskills\u002Fgo.yml","i-logos-go",{},"Go","skills\u002Fgo","https:\u002F\u002Fgo.dev","dkstKol2GEgXui60k6nnL05awYUCcqAp2FfBjWfQYqQ",{"id":296,"category":198,"extension":187,"icon":297,"learning":189,"meta":298,"name":299,"stem":300,"url":301,"year":302,"__hash__":303},"skills\u002Fskills\u002Fgrafana.yml","i-logos-grafana",{},"Grafana","skills\u002Fgrafana","https:\u002F\u002Fgrafana.com","2019","cgVCQk51aFFxBPk3iOpeMPKRXDGurAPzzt9gxAgC0fI",{"id":305,"category":218,"extension":187,"icon":306,"learning":189,"meta":307,"name":308,"stem":309,"url":310,"year":224,"__hash__":311},"skills\u002Fskills\u002Fhtml.yml","i-logos-html-5",{},"HTML","skills\u002Fhtml","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FHTML","CrBlKWAd3h-0m9zGIrHdUz5Fc-IOhAxgm5Bpb96T1Ps",{"id":313,"category":218,"extension":187,"icon":314,"learning":189,"meta":315,"name":316,"stem":317,"url":318,"year":319,"__hash__":320},"skills\u002Fskills\u002Fjavascript.yml","i-logos-javascript",{},"JavaScript","skills\u002Fjavascript","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FJavaScript","2017","XRWMFbBK0v2sYSgjNwtI0myasYmUgwIIgA_TN2AmYNQ",{"id":322,"category":323,"extension":187,"icon":324,"learning":189,"meta":325,"name":326,"stem":327,"url":328,"year":194,"__hash__":329},"skills\u002Fskills\u002Fk6.yml","Testing","i-simple-icons-k6",{},"k6","skills\u002Fk6","https:\u002F\u002Fk6.io","8fhSvBrK_BgKwWCt3Tmzz-HXkL5y014K6sYk0k9xhZo",{"id":331,"category":198,"extension":187,"icon":332,"learning":189,"meta":333,"name":334,"stem":335,"url":336,"year":204,"__hash__":337},"skills\u002Fskills\u002Fkubernetes.yml","i-logos-kubernetes",{},"Kubernetes","skills\u002Fkubernetes","https:\u002F\u002Fkubernetes.io","xCZ4Gsp234ek6wo-Tv2DueA5QL1-J_89VGbUuuVFSAk",{"id":339,"category":198,"extension":187,"icon":340,"learning":189,"meta":341,"name":342,"stem":343,"url":344,"year":194,"__hash__":345},"skills\u002Fskills\u002Floki.yml","\u002Fimages\u002Fskills\u002Floki.png",{},"Loki","skills\u002Floki","https:\u002F\u002Fgrafana.com\u002Foss\u002Floki","cFWkr1e6Rtz6VnytVFTaJrLbFj8EwdEi_ZmVJC0CWjA",{"id":347,"category":280,"extension":187,"icon":348,"learning":189,"meta":349,"name":350,"stem":351,"url":352,"year":268,"__hash__":353},"skills\u002Fskills\u002Fmongodb.yml","i-logos-mongodb-icon",{},"MongoDB","skills\u002Fmongodb","https:\u002F\u002Fwww.mongodb.com","EMAWfathFaXDR1LbYAqSW5m1MojA25uxQj4pm8ol2VI",{"id":355,"category":186,"extension":187,"icon":356,"learning":189,"meta":357,"name":358,"stem":359,"url":360,"year":204,"__hash__":361},"skills\u002Fskills\u002Fnest.yml","i-logos-nestjs",{},"Nest","skills\u002Fnest","https:\u002F\u002Fnestjs.com","Hgl5WH94HFBXXqsiVCOABduoR5dufSPZ069hD2-mjzA",{"id":363,"category":186,"extension":187,"icon":364,"learning":189,"meta":365,"name":366,"stem":367,"url":368,"year":242,"__hash__":369},"skills\u002Fskills\u002Fnode-js.yml","i-logos-nodejs-icon",{},"Node.js","skills\u002Fnode-js","https:\u002F\u002Fnodejs.org","IfYW4VFQggNM27BNB1orXr7wZgpfhJcnkWvHvVV3N3A",{"id":371,"category":218,"extension":187,"icon":372,"learning":189,"meta":373,"name":153,"stem":374,"url":375,"year":233,"__hash__":376},"skills\u002Fskills\u002Fnuxt.yml","i-logos-nuxt-icon",{},"skills\u002Fnuxt","https:\u002F\u002Fnuxt.com","0dHbPhYrt1IarfalVUKs3JlAEdUa4Bh3lkJLeiK9-TA",{"id":378,"category":218,"extension":187,"icon":372,"learning":189,"meta":379,"name":380,"stem":381,"url":382,"year":383,"__hash__":384},"skills\u002Fskills\u002Fnuxt-content.yml",{},"Nuxt Content","skills\u002Fnuxt-content","https:\u002F\u002Fcontent.nuxt.com","2024","FN8rkG_0kDcWPTvKAFxiceiczmM6chbhLr4UtEBoQSw",{"id":386,"category":218,"extension":187,"icon":372,"learning":189,"meta":387,"name":388,"stem":389,"url":390,"year":383,"__hash__":391},"skills\u002Fskills\u002Fnuxt-ui.yml",{},"Nuxt UI","skills\u002Fnuxt-ui","https:\u002F\u002Fui.nuxt.com","U_xnpchv5X0bNSjVbg_s4S8VvlyGXuPuad47fJ7Nh_U",{"id":393,"category":186,"extension":187,"icon":394,"learning":189,"meta":395,"name":396,"stem":397,"url":398,"year":399,"__hash__":400},"skills\u002Fskills\u002Fphp.yml","i-logos-php",{},"PHP","skills\u002Fphp","https:\u002F\u002Fwww.php.net","2016","wjO8f0xvxKes4qzvF2WzRU7lIQcJvtpYtXqJFOdsKO0",{"id":402,"category":218,"extension":187,"icon":403,"learning":189,"meta":404,"name":405,"stem":406,"url":407,"year":233,"__hash__":408},"skills\u002Fskills\u002Fpinia.yml","i-logos-pinia",{},"Pinia","skills\u002Fpinia","https:\u002F\u002Fpinia.vuejs.org","99h3WNn7vA6eufxkelGxNIMNObH1-WP5-2fu9S6XXhQ",{"id":410,"category":323,"extension":187,"icon":411,"learning":189,"meta":412,"name":413,"stem":414,"url":415,"year":383,"__hash__":416},"skills\u002Fskills\u002Fplaywright.yml","i-logos-playwright",{},"Playwright","skills\u002Fplaywright","https:\u002F\u002Fplaywright.dev","AoW_aN5LhgN4e9uKjNnKpz5V757tr5KLt6DVw10UBBA",{"id":418,"category":280,"extension":187,"icon":419,"learning":189,"meta":420,"name":421,"stem":422,"url":423,"year":383,"__hash__":424},"skills\u002Fskills\u002Fpostgres.yml","i-logos-postgresql",{},"Postgres","skills\u002Fpostgres","https:\u002F\u002Fwww.postgresql.org","su4sWxWoUqrCudlr7G3YHZ8YWtSeO-nrstf_afOLFxM",{"id":426,"category":186,"extension":187,"icon":427,"learning":189,"meta":428,"name":429,"stem":430,"url":431,"year":251,"__hash__":432},"skills\u002Fskills\u002Fprisma.yml","i-logos-prisma",{},"Prisma","skills\u002Fprisma","https:\u002F\u002Fwww.prisma.io","RRXpaB0s-W-szvXSqzfY2ndDeVyxiZBOlxwG1EBs_cU",{"id":434,"category":198,"extension":187,"icon":435,"learning":189,"meta":436,"name":437,"stem":438,"url":439,"year":194,"__hash__":440},"skills\u002Fskills\u002Fprometheus.yml","i-logos-prometheus",{},"Prometheus","skills\u002Fprometheus","https:\u002F\u002Fprometheus.io","2xw3iYiE-B4gNJzO_iTWWg5xDbj3uAKDXsZZE-z2IGg",{"id":442,"category":186,"extension":187,"icon":443,"learning":189,"meta":444,"name":445,"stem":446,"url":447,"year":383,"__hash__":448},"skills\u002Fskills\u002Fpruvious.yml","\u002Fimages\u002Fskills\u002Fpruvious.svg",{},"Pruvious","skills\u002Fpruvious","https:\u002F\u002Fpruvious.com","bGPCLGIdYlKY3b2zME0Ro_3FmDKskef330Mp1iEktXE",{"id":450,"category":218,"extension":187,"icon":451,"learning":189,"meta":452,"name":453,"stem":454,"url":455,"year":242,"__hash__":456},"skills\u002Fskills\u002Freact.yml","i-logos-react",{},"React","skills\u002Freact","https:\u002F\u002Freact.dev","dxdtWS17VxrfxB0vfdIdUUtJ0s5cQk_xGKzBSJVfyYA",{"id":458,"category":280,"extension":187,"icon":459,"learning":189,"meta":460,"name":461,"stem":462,"url":463,"year":383,"__hash__":464},"skills\u002Fskills\u002Fsqlite.yml","i-logos-sqlite",{},"SQLite","skills\u002Fsqlite","https:\u002F\u002Fwww.sqlite.org","ZfVq4U-Z1EY4DPCKzmdVqIKf0OEcF1EekTKH2DNSzP4",{"id":466,"category":186,"extension":187,"icon":467,"learning":189,"meta":468,"name":469,"stem":470,"url":471,"year":251,"__hash__":472},"skills\u002Fskills\u002Fstripe.yml","i-logos-stripe",{},"Stripe","skills\u002Fstripe","https:\u002F\u002Fstripe.com","_x0LNPSd6awAphomuzhSoIc5OdXjBdRs3M0BWFXQUrU",{"id":474,"category":218,"extension":187,"icon":475,"learning":189,"meta":476,"name":477,"stem":478,"url":479,"year":251,"__hash__":480},"skills\u002Fskills\u002Ftailwind.yml","i-logos-tailwindcss-icon",{},"Tailwind","skills\u002Ftailwind","https:\u002F\u002Ftailwindcss.com","5wgReFoYMdp4Tmpwoo6MZFwMewkmtcGWhgvnnC-EOOw",{"id":482,"category":218,"extension":187,"icon":483,"learning":189,"meta":484,"name":485,"stem":486,"url":487,"year":194,"__hash__":488},"skills\u002Fskills\u002Ftiptap.yml","i-custom-tiptap",{},"Tiptap","skills\u002Ftiptap","https:\u002F\u002Ftiptap.dev","V5mfUkQonZKLbd0yncoWZOdkk82rQyMTe37U6kp5NgQ",{"id":490,"category":218,"extension":187,"icon":491,"learning":189,"meta":492,"name":156,"stem":493,"url":494,"year":302,"__hash__":495},"skills\u002Fskills\u002Ftypescript.yml","i-logos-typescript-icon",{},"skills\u002Ftypescript","https:\u002F\u002Fwww.typescriptlang.org","rR0SA5MfUyyw1ANKSZnrrkfEVvKCmehJ46CjisLby7k",{"id":497,"category":208,"extension":187,"icon":498,"learning":189,"meta":499,"name":500,"stem":501,"url":502,"year":233,"__hash__":503},"skills\u002Fskills\u002Fvite.yml","i-logos-vitejs",{},"Vite","skills\u002Fvite","https:\u002F\u002Fvite.dev","1tSUul7kX6bJZnMTYRHmCV74rEv_fn7J-XV-Ej3Mh-s",{"id":505,"category":323,"extension":187,"icon":506,"learning":189,"meta":507,"name":508,"stem":509,"url":510,"year":251,"__hash__":511},"skills\u002Fskills\u002Fvitest.yml","i-logos-vitest",{},"Vitest","skills\u002Fvitest","https:\u002F\u002Fvitest.dev","G3IMb5JUloSrenF5DrZ4dvcG7TEcZjdm8n00mKHlsQU",{"id":513,"category":218,"extension":187,"icon":514,"learning":189,"meta":515,"name":516,"stem":517,"url":518,"year":302,"__hash__":519},"skills\u002Fskills\u002Fvue.yml","i-logos-vue",{},"Vue","skills\u002Fvue","https:\u002F\u002Fvuejs.org","unIA1s0givQCTkmQeSeYNXHOFvElG51dXx4lnGu30kI",{"id":521,"category":218,"extension":187,"icon":522,"learning":189,"meta":523,"name":524,"stem":525,"url":526,"year":204,"__hash__":527},"skills\u002Fskills\u002Fvuetify.yml","i-logos-vuetifyjs",{},"Vuetify","skills\u002Fvuetify","https:\u002F\u002Fvuetifyjs.com","RNsWGrQ0FGL0GovLNQqG9l1CDnQ-Ard9rMvGGghANkY",{"id":529,"category":218,"extension":187,"icon":530,"learning":189,"meta":531,"name":532,"stem":533,"url":534,"year":251,"__hash__":535},"skills\u002Fskills\u002Fvueuse.yml","i-logos-vueuse",{},"VueUse","skills\u002Fvueuse","https:\u002F\u002Fvueuse.org","ZHNliHlj8KLTUjhhcl8Q_PulagOD0NDqkzppbWrawF4",{"id":537,"category":186,"extension":187,"icon":538,"learning":189,"meta":539,"name":540,"stem":541,"url":542,"year":251,"__hash__":543},"skills\u002Fskills\u002Fzod.yml","i-logos-zod",{},"Zod","skills\u002Fzod","https:\u002F\u002Fzod.dev","dMyz1nN9Y7OF5kItnMlKbilQpHTFvoiKQw84OY_cyiM",1780859594349]