[{"data":1,"prerenderedAt":182},["ShallowReactive",2],{"i-lucide:languages":3,"i-lucide:chevron-down":8,"i-lucide:moon":10,"i-lucide:menu":12,"i-lucide:mail":14,"i-lucide:github":16,"i-lucide:linkedin":19,"cases-list-en":21,"i-lucide:arrow-right":180},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 8l6 6m-7 0l6-6l2-3M2 5h12M7 2h1m14 20l-5-10l-5 10m2-4h6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17,"hidden":18},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4\"\u002F>\u003Cpath d=\"M9 18c-4.51 2-5-2-7-2\"\u002F>\u003C\u002Fg>",true,{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":20,"hidden":18},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2a2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6M2 9h4v12H2z\"\u002F>\u003Ccircle cx=\"4\" cy=\"4\" r=\"2\"\u002F>\u003C\u002Fg>",[22],{"id":23,"title":24,"body":25,"client":42,"clientUrl":39,"description":153,"draft":6,"extension":154,"image":155,"keywords":156,"meta":160,"navigation":18,"path":161,"results":162,"sector":172,"seo":173,"stem":174,"tags":175,"testimonial":177,"year":178,"__hash__":179},"cases_en\u002Fen\u002Fetudes-de-cas\u002Frealmly.md","Realmly: A SaaS Platform for On-Demand Minecraft Servers",{"type":26,"value":27,"toc":144},"minimark",[28,33,44,48,51,80,84,87,112,116,131],[29,30,32],"h2",{"id":31},"the-context","The context",[34,35,36,43],"p",{},[37,38,42],"a",{"href":39,"rel":40},"https:\u002F\u002Frealmly.cloud",[41],"nofollow","Realmly"," is a platform for renting Minecraft servers on demand. Players want to spin up a private server in seconds, install their favourite plugins, and play with friends — without ever touching a config file.",[29,45,47],{"id":46},"the-challenge","The challenge",[34,49,50],{},"Building such a product raises several technical hurdles:",[52,53,54,62,68,74],"ul",{},[55,56,57,61],"li",{},[58,59,60],"strong",{},"On-demand provisioning",": every game server must be created, started, stopped and deleted dynamically based on user needs.",[55,63,64,67],{},[58,65,66],{},"Plugin management",": let users install and configure various Minecraft plugins without breaking their server — including non-technical users.",[55,69,70,73],{},[58,71,72],{},"Backups",": game worlds represent dozens of hours of play. Losing them is unacceptable: backups must be automatic and restorable.",[55,75,76,79],{},[58,77,78],{},"Admin interface",": expose all this complexity through a clean web interface, where competitors often require hand-edited YAML files.",[29,81,83],{"id":82},"the-solution","The solution",[34,85,86],{},"I designed and built the platform end to end:",[52,88,89,95,101,107],{},[55,90,91,94],{},[58,92,93],{},"Vue.js 3 frontend",": a smooth user interface to manage servers, plugins and backups, with complex states (starting, stopping, installing) represented clearly.",[55,96,97,100],{},[58,98,99],{},"Docker infrastructure",": each game server runs in its own isolated container. Provisioning becomes reproducible, resources are controlled, and a failing server doesn't impact the others.",[55,102,103,106],{},[58,104,105],{},"Backup automation",": scheduled snapshots and one-click restoration from the interface.",[55,108,109,111],{},[58,110,66],{},": an integrated catalogue with one-click installs and version handling.",[29,113,115],{"id":114},"what-this-project-illustrates","What this project illustrates",[34,117,118,119,122,123,126,127,130],{},"Realmly brings together the three skills I offer my clients: demanding ",[58,120,121],{},"frontend development"," (complex UI, many asynchronous states), ",[58,124,125],{},"DevOps"," (containerisation, orchestrating dynamic workloads) and ",[58,128,129],{},"product thinking"," (a user journey designed for players, not sysadmins).",[34,132,133,134,138,139,143],{},"Got a similar project in mind? ",[37,135,137],{"href":136},"\u002Fen\u002F#contact","Let's talk"," or ",[37,140,142],{"href":141},"\u002Fen\u002Fdevis","estimate its budget in 2 minutes",".",{"title":145,"searchDepth":146,"depth":146,"links":147},"",3,[148,150,151,152],{"id":31,"depth":149,"text":32},2,{"id":46,"depth":149,"text":47},{"id":82,"depth":149,"text":83},{"id":114,"depth":149,"text":115},"End-to-end design and development of Realmly, a SaaS for renting on-demand Minecraft servers: admin interface, plugin management, automated backups — all containerized with Docker.","md","\u002Fprojects\u002Frealmly.png",[157,158,125,159],"Vue.js","Docker","SaaS",{},"\u002Fen\u002Fetudes-de-cas\u002Frealmly",[163,166,169],{"value":164,"label":165},"24\u002F7","Game server hosting without interruption",{"value":167,"label":168},"0","Manual intervention for backups",{"value":170,"label":171},"1 click","Plugin installation and management","Gaming \u002F SaaS",{"title":24,"description":153},"en\u002Fetudes-de-cas\u002Frealmly",[157,158,159,176],"Gaming",null,"2024","7Vx1oTdwor79Dwv3Sd7qpMeKNm8CU3H3VNZnISw8Hpk",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":181},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1789936607962]