[{"data":1,"prerenderedAt":126},["ShallowReactive",2],{"i-heroicons:home":3,"i-heroicons:user":8,"i-heroicons:document-text":10,"i-heroicons:briefcase":12,"i-heroicons:magnifying-glass":14,"i-mdi:instagram":16,"i-mdi:twitter":18,"i-mdi:github":20,"i-mdi:linkedin":22,"all-series":24,"i-heroicons:play":118,"i-heroicons:book-open":120,"i-heroicons:clock":122,"i-heroicons:list-bullet":124},{"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=\"1.5\" d=\"m2.25 12l8.955-8.955a1.124 1.124 0 0 1 1.59 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"\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=\"1.5\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0a3.75 3.75 0 0 1 7.5 0M4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.9 17.9 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632\"\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=\"1.5\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9\"\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=\"1.5\" d=\"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18c-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 0 0 .75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48 48 0 0 0-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A24 24 0 0 1 12 15.75a24 24 0 0 1-7.577-1.22a2 2 0 0 1-.673-.38m0 0A2.18 2.18 0 0 1 3 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48 48 0 0 1 3.413-.387m7.5 0V5.25A2.25 2.25 0 0 0 13.5 3h-3a2.25 2.25 0 0 0-2.25 2.25v.894m7.5 0a49 49 0 0 0-7.5 0M12 12.75h.008v.008H12z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m21 21l-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"currentColor\" d=\"M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4zm9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8A1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5a5 5 0 0 1-5 5a5 5 0 0 1-5-5a5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M22.46 6c-.77.35-1.6.58-2.46.69c.88-.53 1.56-1.37 1.88-2.38c-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29c0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15c0 1.49.75 2.81 1.91 3.56c-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.2 4.2 0 0 1-1.93.07a4.28 4.28 0 0 0 4 2.98a8.52 8.52 0 0 1-5.33 1.84q-.51 0-1.02-.06C3.44 20.29 5.7 21 8.12 21C16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56c.84-.6 1.56-1.36 2.14-2.23\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":23},"\u003Cpath fill=\"currentColor\" d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93zM6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37z\"\u002F>",[25,65,91],["Reactive",26],{"id":27,"title":28,"description":29,"slug":27,"tags":30,"coverImage":38,"category":39,"difficulty":40,"status":41,"prerequisites":42,"learningOutcomes":46,"estimatedReadingTime":53,"articles":54,"createdAt":63,"updatedAt":64},"building-arlon-dev","Building arlon.dev","A transparent, episode-by-episode account of building arlon.dev from scratch: planning, tech stack decisions, tradeoffs, deployment, and the lessons learned along the way.",[31,32,33,34,35,36,37],"development","nuxt","tech-stack","planning","deployment","open-source","static-sites",null,"Platform Engineering","intermediate","active",[43,44,45],"Basic understanding of TypeScript and modern JavaScript","Some experience with Vue.js or a similar component framework","Familiarity with web development concepts (APIs, deployment, CI\u002FCD)",[47,48,49,50,51,52],"How to plan and scope a developer platform from first principles","How to select a tech stack focused on free, sustainable tools","How to build a fast, SEO-optimised static site with Nuxt 4","How to design a content architecture that scales with a growing knowledge base","Deployment strategies and CI\u002FCD pipelines for GitHub Pages","Real-world tradeoffs: what to build, what to skip, and when to revisit","66",[55],{"id":56,"title":57,"slug":58,"order":59,"estimatedReadingTime":60,"published":61,"publishedAt":62},"blog\u002Fblog\u002Fbuilding-arlon-dev.md","The Planning, Tech Stack, and Tradeoffs (Building arlon.dev: Episode 1)","\u002Fblog\u002Fbuilding-arlon-dev",1,8,true,["Date","2025-07-01T00:00:00.000Z"],["Date","2025-07-01T00:00:00.000Z"],["Date","2026-05-24T07:40:20.753Z"],["Reactive",66],{"id":67,"title":68,"description":69,"slug":67,"tags":70,"coverImage":38,"category":76,"difficulty":40,"status":41,"prerequisites":77,"learningOutcomes":81,"estimatedReadingTime":87,"articles":88,"createdAt":89,"updatedAt":90},"engineering-decisions","Engineering Decisions","Decision retrospectives from real engineering work. Each post covers one hard call: the situation, the options, the pressures, what was chosen, and what held. Not tutorials. Post-mortems.",[71,72,73,74,75],"architecture","decision-making","engineering-leadership","tradeoffs","retrospectives","Engineering Leadership",[78,79,80],"Some professional experience shipping software to production","Familiarity with common web architecture patterns","No specific technology knowledge required. Decisions are technology-agnostic where possible.",[82,83,84,85,86],"How to frame architectural decisions using constraints, not just best practices","What the real pressures behind common engineering calls look like","How to evaluate tradeoffs under timeline and team-size pressure","What to watch for when a past decision is about to become a liability","How to document and communicate engineering decisions to non-technical stakeholders","42",[],["Date","2026-06-03T00:00:00.000Z"],["Date","2026-05-24T07:40:20.753Z"],["Reactive",92],{"id":93,"title":94,"description":95,"slug":93,"tags":96,"coverImage":38,"category":39,"difficulty":40,"status":41,"prerequisites":102,"learningOutcomes":107,"estimatedReadingTime":114,"articles":115,"createdAt":116,"updatedAt":117},"multi-tenant-saas","Multi-Tenant SaaS Architecture","The complete architectural guide to building multi-tenant SaaS from the ground up. Data isolation, tenant routing, provisioning, feature flags, billing, and everything that gets complicated when multiple customers share the same system.",[97,98,71,99,100,101],"multi-tenancy","saas","laravel","platform-engineering","database-design",[103,104,105,106],"Solid understanding of relational databases and SQL","Experience building and deploying a web application to production","Basic familiarity with authentication and authorization concepts","Laravel experience helpful but not required. Examples are translatable.",[108,109,110,111,112,113],"How to choose a tenant isolation model that fits your product, team, and scale","How tenant routing and resolution works across domain, subdomain, and path strategies","How to build a provisioning pipeline that handles concurrent sign-ups without blocking","How to enforce feature flags and plan limits without leaking between tenants","How to structure billing and subscription state so it doesn't become a debugging nightmare","How to migrate an existing single-tenant system to multi-tenant without a big bang","56",[],["Date","2026-07-01T00:00:00.000Z"],["Date","2026-05-24T07:40:20.753Z"],{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":119},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":121},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 6.042A8.97 8.97 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A9 9 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.97 8.97 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A9 9 0 0 0 18 18a8.97 8.97 0 0 0-6 2.292m0-14.25v14.25\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":123},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0a9 9 0 0 1 18 0\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":125},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0M3.75 12h.007v.008H3.75zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0m-.375 5.25h.007v.008H3.75zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0\"\u002F>",1779608420628]