[{"data":1,"prerenderedAt":261},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-docs":130,"-use-cases-agencies":164,"-use-cases-agencies-siblings":251},[4,8,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126],{"title":5,"path":6,"stem":7},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F01.quickstart",{"title":9,"path":10,"stem":11,"children":12},"Guides","\u002Fdocs\u002Fguides","docs\u002F02.guides\u002Findex",[13,14,18,22,26,30,34,38,42,46],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},"Next.js","\u002Fdocs\u002Fguides\u002Fnextjs","docs\u002F02.guides\u002F1.nextjs",{"title":19,"path":20,"stem":21},"Nuxt","\u002Fdocs\u002Fguides\u002Fnuxt","docs\u002F02.guides\u002F2.nuxt",{"title":23,"path":24,"stem":25},"SvelteKit","\u002Fdocs\u002Fguides\u002Fsveltekit","docs\u002F02.guides\u002F3.sveltekit",{"title":27,"path":28,"stem":29},"Astro","\u002Fdocs\u002Fguides\u002Fastro","docs\u002F02.guides\u002F4.astro",{"title":31,"path":32,"stem":33},"Express","\u002Fdocs\u002Fguides\u002Fexpress","docs\u002F02.guides\u002F5.express",{"title":35,"path":36,"stem":37},"FastAPI","\u002Fdocs\u002Fguides\u002Ffastapi","docs\u002F02.guides\u002F6.fastapi",{"title":39,"path":40,"stem":41},"Django","\u002Fdocs\u002Fguides\u002Fdjango","docs\u002F02.guides\u002F7.django",{"title":43,"path":44,"stem":45},"Laravel","\u002Fdocs\u002Fguides\u002Flaravel","docs\u002F02.guides\u002F8.laravel",{"title":47,"path":48,"stem":49},"Go","\u002Fdocs\u002Fguides\u002Fgo","docs\u002F02.guides\u002F9.go",{"title":51,"path":52,"stem":53},"Services","\u002Fdocs\u002Fservices","docs\u002F03.services",{"title":55,"path":56,"stem":57},"Deployments","\u002Fdocs\u002Fdeployments","docs\u002F04.deployments",{"title":59,"path":60,"stem":61},"Builds","\u002Fdocs\u002Fbuilds","docs\u002F05.builds",{"title":63,"path":64,"stem":65},"Variables","\u002Fdocs\u002Fvariables","docs\u002F06.variables",{"title":67,"path":68,"stem":69},"Domains","\u002Fdocs\u002Fdomains","docs\u002F07.domains",{"title":71,"path":72,"stem":73},"PostgreSQL","\u002Fdocs\u002Fpostgres","docs\u002F08.postgres",{"title":75,"path":76,"stem":77},"Object storage","\u002Fdocs\u002Fobject-storage","docs\u002F09.object-storage",{"title":79,"path":80,"stem":81},"Volumes","\u002Fdocs\u002Fvolumes","docs\u002F10.volumes",{"title":83,"path":84,"stem":85},"Key-value store","\u002Fdocs\u002Fredis","docs\u002F11.redis",{"title":87,"path":88,"stem":89},"Workspaces","\u002Fdocs\u002Fworkspaces","docs\u002F12.workspaces",{"title":91,"path":92,"stem":93},"Projects","\u002Fdocs\u002Fprojects","docs\u002F13.projects",{"title":95,"path":96,"stem":97},"Environments","\u002Fdocs\u002Fenvironments","docs\u002F14.environments",{"title":99,"path":100,"stem":101},"Eject","\u002Fdocs\u002Feject","docs\u002F15.eject",{"title":103,"path":104,"stem":105},"API","\u002Fdocs\u002Fapi","docs\u002F16.api",{"title":107,"path":108,"stem":109},"CLI","\u002Fdocs\u002Fcli","docs\u002F17.cli",{"title":111,"path":112,"stem":113},"Claude Plugin & MCP","\u002Fdocs\u002Fclaude-plugin","docs\u002F18.claude-plugin",{"title":115,"path":116,"stem":117},"Metrics","\u002Fdocs\u002Fmetrics","docs\u002F19.metrics",{"title":119,"path":120,"stem":121},"Logs","\u002Fdocs\u002Flogs","docs\u002F20.logs",{"title":123,"path":124,"stem":125},"Billing","\u002Fdocs\u002Fbilling","docs\u002F21.billing",{"title":127,"path":128,"stem":129},"Self-hosting","\u002Fdocs\u002Fself-hosting","docs\u002F22.self-hosting",[131,132,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],{"title":5,"path":6,"stem":7},{"title":9,"path":10,"stem":11,"children":133,"page":-1},[134,135,136,137,138,139,140,141,142,143],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},{"title":19,"path":20,"stem":21},{"title":23,"path":24,"stem":25},{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":39,"path":40,"stem":41},{"title":43,"path":44,"stem":45},{"title":47,"path":48,"stem":49},{"title":51,"path":52,"stem":53},{"title":55,"path":56,"stem":57},{"title":59,"path":60,"stem":61},{"title":63,"path":64,"stem":65},{"title":67,"path":68,"stem":69},{"title":71,"path":72,"stem":73},{"title":75,"path":76,"stem":77},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85},{"title":87,"path":88,"stem":89},{"title":91,"path":92,"stem":93},{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125},{"title":127,"path":128,"stem":129},{"id":165,"title":166,"actions":167,"body":173,"description":243,"extension":244,"meta":245,"navigation":246,"path":247,"seo":248,"stem":249,"__hash__":250},"solutions\u002F1.use-cases\u002F1.agencies.md","Agencies",[168,171],{"label":169,"to":170},"Start free","https:\u002F\u002Flucity.cloud\u002Fapp\u002Flogin",{"label":172,"to":6},"See the quickstart",{"type":174,"value":175,"toc":235},"minimark",[176,180,184,189,192,195,198,203,207,211,215,218,222,225,229,232],[177,178,179],"p",{},"Every client engagement ends with the same two questions. Where does our data live, and what happens to all of this when you walk away? Most platforms make the first question awkward and the second one impossible, which is how \"we'll migrate off later\" becomes someone else's problem.",[181,182],"feature-cards",{":items":183},"[{\"icon\":\"i-lucide-gauge\",\"title\":\"Ship at PaaS speed\",\"text\":\"Connect the client's repository and deploy. No Dockerfile, no pipeline to build, no infrastructure ticket.\"},{\"icon\":\"i-lucide-map-pin\",\"title\":\"Answer the hosting question\",\"text\":\"European infrastructure today, with Swiss residency planned. A straight answer for the client's legal team.\"},{\"icon\":\"i-lucide-package-open\",\"title\":\"Hand it over intact\",\"text\":\"Eject to standard Helm charts and values. The client runs it themselves, without you in the loop.\"}]",[185,186,188],"h2",{"id":187},"the-handover-problem","The handover problem",[177,190,191],{},"You need PaaS speed while you build. Your client, especially in banking, insurance or the public sector, needs data residency and the ability to operate the thing after your contract ends.",[177,193,194],{},"Traditional platforms give you the first and quietly deny the second. Deployment config, environment variables, promotion workflow, database setup: all proprietary, all stuck where they are. When the engagement ends you hand over a source repository and a prayer, and the client's new team starts from a blank page.",[177,196,197],{},"Raw Kubernetes is the other extreme. Your team should not need to become infrastructure engineers to ship a marketing site with a database behind it. You have deadlines and a fixed budget, not a platform engineering department.",[199,200],"flow-diagram",{":nodes":201,"caption":202},"[{\"label\":\"Client repository\",\"sub\":\"Their code, untouched by the platform\",\"icon\":\"i-simple-icons-github\"},{\"label\":\"Lucity\",\"sub\":\"Builds, deploys, manages environments\",\"icon\":\"i-lucide-boxes\",\"tone\":\"primary\"},{\"label\":\"Client's own cluster\",\"sub\":\"Helm release, database, bucket\",\"icon\":\"i-lucide-server\"}]","The same artefacts run the app during the engagement and after it.",[185,204,206],{"id":205},"what-the-engagement-looks-like","What the engagement looks like",[208,209],"step-flow",{":steps":210},"[{\"title\":\"Connect the repository\",\"text\":\"Lucity detects the framework and builds from source. First deploy takes minutes, not a sprint.\"},{\"title\":\"Review with the client\",\"text\":\"Give each environment its own URL. Stakeholders click a link instead of asking you to \\\"put it on the test server\\\".\"},{\"title\":\"Promote, don't rebuild\",\"text\":\"The image that passed staging is the image that goes to production. Same digest, no surprise rebuild on launch day.\"},{\"title\":\"Hand over and leave\",\"text\":\"Eject produces the chart, the values, and a setup guide. The client points their own tooling at it and carries on.\"}]",[185,212,214],{"id":213},"what-the-client-actually-receives","What the client actually receives",[177,216,217],{},"Eject is not an export button that produces a CSV and a shrug. It writes out the deployment as plain infrastructure-as-code:",[181,219],{":items":220,":columns":221},"[{\"icon\":\"i-lucide-file-code\",\"title\":\"The chart and its values\",\"text\":\"The same Helm chart that was running the application, with the values computed for each environment.\"},{\"icon\":\"i-lucide-layers\",\"title\":\"Every environment\",\"text\":\"Development, staging and production, each with its own configuration, kept separate exactly as they ran.\"},{\"icon\":\"i-lucide-database\",\"title\":\"Databases and storage\",\"text\":\"PostgreSQL clusters and buckets described as standard operator resources, not platform-specific magic.\"},{\"icon\":\"i-lucide-book-open\",\"title\":\"A setup guide\",\"text\":\"Prerequisites, the commands to apply it, and where to change things afterwards.\"}]","2",[177,223,224],{},"There is no Lucity dependency in the output. That is the part worth saying out loud in a pitch: the client is not buying a dependency on your agency or on us.",[185,226,228],{"id":227},"why-this-wins-work","Why this wins work",[177,230,231],{},"Ejectability is a commercial argument, not just a technical one. It turns the awkward end-of-contract conversation into a selling point: the client keeps the infrastructure, their in-house team can take over on a Monday, and nothing has to be rebuilt to make that happen.",[177,233,234],{},"Agencies that hand over cleanly get called back. That is the whole pitch.",{"title":236,"searchDepth":237,"depth":237,"links":238},"",2,[239,240,241,242],{"id":187,"depth":237,"text":188},{"id":205,"depth":237,"text":206},{"id":213,"depth":237,"text":214},{"id":227,"depth":237,"text":228},"Ship client projects at PaaS speed, then hand them over as infrastructure the client actually owns.","md",{},true,"\u002Fuse-cases\u002Fagencies",{"title":166,"description":243},"1.use-cases\u002F1.agencies","KP3nn8bV98BbrJIFr2vBEP5xMepy9_BBDTiLHvi6ZpE",[252,253,257],{"path":247,"title":166,"description":243},{"path":254,"title":255,"description":256},"\u002Fuse-cases\u002Fstartups","Startups & Small Teams","The simplicity you came for, without the rebuild you were dreading when you outgrow it.",{"path":258,"title":259,"description":260},"\u002Fuse-cases\u002Fplatform-teams","Platform Teams","Give developers the self-service experience they keep asking for, on the cluster your security team already approved.",1793355964534]