[{"data":1,"prerenderedAt":790},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-docs":130,"-docs-guides-nextjs":164,"-docs-guides-nextjs-surround":698,"doc-previews":703},[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},[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,"body":167,"description":691,"extension":692,"links":693,"meta":694,"navigation":695,"path":16,"seo":696,"stem":17,"__hash__":697},"docs\u002Fdocs\u002F02.guides\u002F1.nextjs.md","Deploy a Next.js app",{"type":168,"value":169,"toc":682},"minimark",[170,179,184,187,212,220,224,242,285,288,295,299,310,314,321,331,334,338,357,610,613,620,624,630,633,657,661,678],[171,172,173,174,178],"p",{},"Next.js needs no configuration to deploy here. Point Lucity at the repository and it recognizes the framework, runs your build script, and starts the server the way ",[175,176,177],"code",{},"next start"," expects. What follows is the short list of things that are worth knowing anyway.",[180,181,183],"h2",{"id":182},"start-from-a-fresh-app","Start from a fresh app",[171,185,186],{},"If you want something to try this on:",[188,189,194],"pre",{"className":190,"code":191,"language":192,"meta":193,"style":193},"language-bash shiki shiki-themes gruvbox-dark-medium gruvbox-dark-medium gruvbox-dark-medium","npx create-next-app@latest my-app\n","bash","",[175,195,196],{"__ignoreMap":193},[197,198,201,205,209],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"sX5TD","npx",[197,206,208],{"class":207},"sQLXx"," create-next-app@latest",[197,210,211],{"class":207}," my-app\n",[171,213,214,215,219],{},"Push it to GitHub, then follow the ",[216,217,218],"a",{"href":6},"quickstart"," to connect the repository. Nothing in the generated project needs changing first.",[180,221,223],{"id":222},"what-the-builder-does-with-it","What the builder does with it",[171,225,226,227,230,231,234,235,238,239,241],{},"The ",[216,228,229],{"href":60},"build"," runs ",[175,232,233],{},"npm run build"," and the service starts with ",[175,236,237],{},"npm run start",", which is ",[175,240,177],{}," in a stock project. Two details follow from that:",[243,244,245,265],"ul",{},[246,247,248,256,257,260,261,264],"li",{},[249,250,251,252,255],"strong",{},"Your ",[175,253,254],{},"start"," script is the contract."," Change it and Lucity uses whatever you changed it to. Delete it and detection falls back to the ",[175,258,259],{},"main"," field, then ",[175,262,263],{},"index.js",".",[246,266,267,270,271,274,275,277,278,280,281,284],{},[249,268,269],{},"The port comes from us."," Lucity sets ",[175,272,273],{},"PORT"," in the container and ",[175,276,177],{}," reads it, which is why the default project works untouched. If you define your own ",[175,279,273],{}," ",[216,282,283],{"href":64},"variable",", yours wins and the service must listen on it.",[171,286,287],{},"Telemetry is switched off during the build, so you will not see the Next.js notice in your build logs.",[171,289,290,291,294],{},"You do not need ",[175,292,293],{},"output: \"standalone\"",". That mode exists to shrink Docker images, and there is no Dockerfile here to shrink.",[180,296,298],{"id":297},"static-exports-are-a-different-deployment","Static exports are a different deployment",[171,300,301,302,305,306,309],{},"Set ",[175,303,304],{},"output: \"export\""," in ",[175,307,308],{},"next.config.ts"," and the shape of the deployment changes: the build produces static files and Lucity serves them from a static web server instead of running Node. Faster, cheaper, and no server runtime, but API routes, server actions and anything else that runs per request stop working. Choose deliberately.",[180,311,313],{"id":312},"which-variables-are-frozen","Which variables are frozen",[171,315,316,317,320],{},"Anything prefixed ",[175,318,319],{},"NEXT_PUBLIC_"," is inlined into the JavaScript bundle when the build runs. Everything else is read at runtime by the server.",[171,322,323,324,327,328,330],{},"That difference matters here because ",[216,325,326],{"href":64},"variables"," normally take effect without a rebuild: change one, the service rolls out in seconds with the same image. A ",[175,329,319],{}," value is already baked into that image, so it will not change until the next build. Set public values before you build, and treat editing one as a code change.",[171,332,333],{},"Server-side variables have no such catch. A rotated database password reaches the running app on the next rollout.",[180,335,337],{"id":336},"reading-a-database-from-server-components","Reading a database from server components",[171,339,340,341,344,345,348,349,352,353,356],{},"Add a ",[216,342,343],{"href":72},"PostgreSQL database"," and link ",[175,346,347],{},"DATABASE_URL"," to its ",[175,350,351],{},"fqdn-uri",". From there it is ordinary Next.js: ",[175,354,355],{},"pg",", Prisma, Drizzle, whichever client you like.",[188,358,362],{"className":359,"code":360,"language":361,"meta":193,"style":193},"language-ts shiki shiki-themes gruvbox-dark-medium gruvbox-dark-medium gruvbox-dark-medium","\u002F\u002F app\u002Fpage.tsx\nimport { Pool } from 'pg';\n\nconst pool = new Pool({ connectionString: process.env.DATABASE_URL });\n\nexport default async function Page() {\n  const { rows } = await pool.query('SELECT title FROM posts ORDER BY votes DESC');\n  return \u003Cul>{rows.map(row => \u003Cli key={row.title}>{row.title}\u003C\u002Fli>)}\u003C\u002Ful>;\n}\n","ts",[175,363,364,370,402,409,460,465,489,527,604],{"__ignoreMap":193},[197,365,366],{"class":199,"line":200},[197,367,369],{"class":368},"sIIdi","\u002F\u002F app\u002Fpage.tsx\n",[197,371,373,377,381,385,388,391,394,396,399],{"class":199,"line":372},2,[197,374,376],{"class":375},"sJHtc","import",[197,378,380],{"class":379},"si-ur"," {",[197,382,384],{"class":383},"sIi04"," Pool",[197,386,387],{"class":379}," }",[197,389,390],{"class":375}," from",[197,392,393],{"class":379}," '",[197,395,355],{"class":207},[197,397,398],{"class":379},"'",[197,400,401],{"class":379},";\n",[197,403,405],{"class":199,"line":404},3,[197,406,408],{"emptyLinePlaceholder":407},true,"\n",[197,410,412,416,419,423,426,428,432,435,438,441,444,446,449,451,453,455,458],{"class":199,"line":411},4,[197,413,415],{"class":414},"sjx4h","const",[197,417,418],{"class":383}," pool",[197,420,422],{"class":421},"s3drp"," =",[197,424,425],{"class":414}," new",[197,427,384],{"class":203},[197,429,431],{"class":430},"spvMa","(",[197,433,434],{"class":379},"{",[197,436,437],{"class":430}," connectionString",[197,439,440],{"class":379},":",[197,442,443],{"class":383}," process",[197,445,264],{"class":379},[197,447,448],{"class":383},"env",[197,450,264],{"class":379},[197,452,347],{"class":383},[197,454,387],{"class":379},[197,456,457],{"class":430},")",[197,459,401],{"class":379},[197,461,463],{"class":199,"line":462},5,[197,464,408],{"emptyLinePlaceholder":407},[197,466,468,471,474,477,480,483,486],{"class":199,"line":467},6,[197,469,470],{"class":375},"export",[197,472,473],{"class":375}," default",[197,475,476],{"class":414}," async",[197,478,479],{"class":414}," function",[197,481,482],{"class":203}," Page",[197,484,485],{"class":379},"()",[197,487,488],{"class":379}," {\n",[197,490,492,495,497,500,502,504,507,509,511,514,516,518,521,523,525],{"class":199,"line":491},7,[197,493,494],{"class":414},"  const",[197,496,380],{"class":379},[197,498,499],{"class":383}," rows",[197,501,387],{"class":379},[197,503,422],{"class":421},[197,505,506],{"class":375}," await",[197,508,418],{"class":383},[197,510,264],{"class":379},[197,512,513],{"class":203},"query",[197,515,431],{"class":430},[197,517,398],{"class":379},[197,519,520],{"class":207},"SELECT title FROM posts ORDER BY votes DESC",[197,522,398],{"class":379},[197,524,457],{"class":430},[197,526,401],{"class":379},[197,528,530,533,536,538,541,543,546,549,552,554,556,559,562,564,566,568,571,574,576,578,581,583,585,588,590,592,594,596,598,600,602],{"class":199,"line":529},8,[197,531,532],{"class":375},"  return",[197,534,535],{"class":430}," \u003C",[197,537,243],{"class":203},[197,539,540],{"class":430},">",[197,542,434],{"class":379},[197,544,545],{"class":430},"rows.map(",[197,547,548],{"class":383},"row",[197,550,551],{"class":414}," =>",[197,553,535],{"class":430},[197,555,246],{"class":203},[197,557,558],{"class":203}," key",[197,560,561],{"class":430},"=",[197,563,434],{"class":379},[197,565,548],{"class":203},[197,567,264],{"class":379},[197,569,570],{"class":383},"title",[197,572,573],{"class":379},"}",[197,575,540],{"class":430},[197,577,434],{"class":379},[197,579,580],{"class":430},"row.",[197,582,570],{"class":383},[197,584,573],{"class":379},[197,586,587],{"class":421},"\u003C\u002F",[197,589,246],{"class":383},[197,591,540],{"class":421},[197,593,457],{"class":430},[197,595,573],{"class":379},[197,597,587],{"class":421},[197,599,243],{"class":383},[197,601,540],{"class":421},[197,603,401],{"class":379},[197,605,607],{"class":199,"line":606},9,[197,608,609],{"class":379},"}\n",[171,611,612],{},"One thing to watch: pages that hit the database while being statically generated need that database reachable at build time. Either mark those routes dynamic, or fetch on the client.",[171,614,615,616,619],{},"For uploads, add a ",[216,617,618],{"href":76},"bucket"," and use the AWS SDK against the credentials Lucity injects. The local filesystem is not the place: it disappears with the container.",[180,621,623],{"id":622},"when-the-build-runs-out-of-memory","When the build runs out of memory",[171,625,626,629],{},[175,627,628],{},"next build"," is the memory-hungry part of a Next.js deployment. A large app can exhaust what the\nbuild environment has, and the logs end abruptly with a killed process rather than an error.",[171,631,632],{},"Raising the service's memory does not help: that setting applies to the running container, while\nbuilds run in a shared build environment with its own fixed ceiling. Reduce what the build needs\ninstead:",[243,634,635,648,654],{},[246,636,637,638,641,642,645,646,264],{},"Cap the Node heap so V8 collects rather than grows: set ",[175,639,640],{},"NODE_OPTIONS"," to\n",[175,643,644],{},"--max-old-space-size=3072"," as a ",[216,647,283],{"href":64},[246,649,650,651,653],{},"Turn off production source maps in ",[175,652,308],{}," if you have them on.",[246,655,656],{},"Split the work: precompute large data at request time or in a background job rather than\ngenerating thousands of pages at build time.",[180,658,660],{"id":659},"next-steps","Next steps",[243,662,663,668,673],{},[246,664,665,667],{},[216,666,63],{"href":64}," for the build-time and runtime split",[246,669,670,672],{},[216,671,67],{"href":68}," to put the app on a hostname you own",[246,674,675,677],{},[216,676,55],{"href":56}," for what happens on each push",[679,680,681],"style",{},"html pre.shiki code .sX5TD, html code.shiki .sX5TD{--shiki-light:#FABD2F;--shiki-default:#FABD2F;--shiki-dark:#FABD2F}html pre.shiki code .sQLXx, html code.shiki .sQLXx{--shiki-light:#B8BB26;--shiki-default:#B8BB26;--shiki-dark:#B8BB26}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sIIdi, html code.shiki .sIIdi{--shiki-light:#928374;--shiki-light-font-style:italic;--shiki-default:#928374;--shiki-default-font-style:italic;--shiki-dark:#928374;--shiki-dark-font-style:italic}html pre.shiki code .sJHtc, html code.shiki .sJHtc{--shiki-light:#FB4934;--shiki-default:#FB4934;--shiki-dark:#FB4934}html pre.shiki code .si-ur, html code.shiki .si-ur{--shiki-light:#A89984;--shiki-default:#A89984;--shiki-dark:#A89984}html pre.shiki code .sIi04, html code.shiki .sIi04{--shiki-light:#83A598;--shiki-default:#83A598;--shiki-dark:#83A598}html pre.shiki code .sjx4h, html code.shiki .sjx4h{--shiki-light:#FE8019;--shiki-default:#FE8019;--shiki-dark:#FE8019}html pre.shiki code .s3drp, html code.shiki .s3drp{--shiki-light:#8EC07C;--shiki-default:#8EC07C;--shiki-dark:#8EC07C}html pre.shiki code .spvMa, html code.shiki .spvMa{--shiki-light:#EBDBB2;--shiki-default:#EBDBB2;--shiki-dark:#EBDBB2}",{"title":193,"searchDepth":372,"depth":372,"links":683},[684,685,686,687,688,689,690],{"id":182,"depth":372,"text":183},{"id":222,"depth":372,"text":223},{"id":297,"depth":372,"text":298},{"id":312,"depth":372,"text":313},{"id":336,"depth":372,"text":337},{"id":622,"depth":372,"text":623},{"id":659,"depth":372,"text":660},"Deploy a Next.js app on Lucity, with a database, environment variables that behave, and no Dockerfile.","md",null,{},{"title":15},{"title":166,"description":691},"dLTdNFNMCsy7Cs3d7haimdtQEeekLFEBZ1Tfzt99eJA",[699,701],{"title":9,"path":10,"stem":11,"description":700,"children":-1},"Deploy guides for the frameworks people actually ship: Next.js, Nuxt, SvelteKit, Astro, Express, FastAPI, Django, Laravel, and Go.",{"title":19,"path":20,"stem":21,"description":702,"children":-1},"Deploy a Nuxt app on Lucity. Nitro output, runtime config, and a database, with no preset to pick.",[704,707,709,710,712,715,718,721,724,727,730,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,778,782,786],{"path":6,"title":705,"description":706},"Deploy your first service","Deploy an app to Lucity, put it on a public domain, and connect a PostgreSQL database and an object storage bucket in about fifteen minutes.",{"path":708,"title":9,"description":693},"\u002Fdocs\u002Fguides\u002F.navigation",{"path":16,"title":166,"description":691},{"path":20,"title":711,"description":702},"Deploy a Nuxt app",{"path":24,"title":713,"description":714},"Deploy a SvelteKit app","Deploy a SvelteKit app on Lucity. One adapter change stands between a fresh project and a running service.",{"path":28,"title":716,"description":717},"Deploy an Astro site","Deploy an Astro site on Lucity, static by default and server rendered when you add an adapter.",{"path":32,"title":719,"description":720},"Deploy an Express API","Deploy an Express API on Lucity. Three requirements, none of them platform-specific.",{"path":36,"title":722,"description":723},"Deploy a FastAPI service","Deploy a FastAPI service on Lucity. Detection is picky about layout, and the fix is one setting.",{"path":40,"title":725,"description":726},"Deploy a Django project","Deploy a Django project on Lucity, with migrations that run themselves and static files that do not.",{"path":44,"title":728,"description":729},"Deploy a Laravel application","Deploy a Laravel application on Lucity, with migrations, caches and a queue worker, and no server to configure.",{"path":48,"title":731,"description":732},"Deploy a Go service","Deploy a Go service on Lucity. Compiled in the build, shipped as a binary, nothing else in the image.",{"path":10,"title":734,"description":700},"Deploy your framework",{"path":52,"title":51,"description":736},"Services are the deployable units of a project: what they are, how they are configured, and how they scale.",{"path":56,"title":55,"description":738},"How a deployment goes live on Lucity, and the ways to trigger one.",{"path":60,"title":59,"description":740},"How Lucity turns your source code into a container image.",{"path":64,"title":63,"description":742},"Configuration for your services: service variables, shared variables, and dynamic variables.",{"path":68,"title":67,"description":744},"Put a service on the internet. Use a platform hostname for quick tests, or a domain you own.",{"path":72,"title":71,"description":746},"Managed PostgreSQL databases, replicated and backed up, connected to your services without copying credentials.",{"path":76,"title":75,"description":748},"S3-compatible buckets for uploads, exports and anything else your service needs to keep.",{"path":80,"title":79,"description":750},"Persistent disks for services that need to keep state on the filesystem.",{"path":84,"title":83,"description":752},"A Redis®-compatible key-value store for caching, sessions and queues.",{"path":88,"title":87,"description":754},"Workspaces represent your organization in Lucity, with their own members, isolation and billing.",{"path":92,"title":91,"description":756},"Projects group services, databases and the environments they run in.",{"path":96,"title":95,"description":758},"Development, staging, production: isolated copies of the same application.",{"path":100,"title":99,"description":760},"Download a project as a Helm chart and run it on a Kubernetes cluster of your own.",{"path":104,"title":103,"description":762},"The GraphQL API behind the dashboard, with an interactive playground.",{"path":108,"title":107,"description":764},"Deploy and manage your services from a terminal or a CI pipeline.",{"path":112,"title":111,"description":766},"Deploy and manage your services from Claude Code, Codex, Cursor or any other MCP client.",{"path":116,"title":115,"description":768},"CPU and memory for every service, and disk usage for every volume.",{"path":120,"title":119,"description":770},"What your services print while they run, and the output of every deployment step.",{"path":124,"title":123,"description":772},"Plans, resource usage, the free trial, and what happens when a payment fails.",{"path":128,"title":127,"description":774},"Run the whole platform on a Kubernetes cluster you own, using the same two Helm charts we run ourselves.",{"path":776,"title":777,"description":693},"\u002Flegal\u002F.navigation","Legal",{"path":779,"title":780,"description":781},"\u002Flegal\u002Fdata-processing-agreement","Data Processing Agreement","How Lucity processes personal data on your behalf.",{"path":783,"title":784,"description":785},"\u002Flegal\u002Fprivacy-policy","Privacy Policy","How Lucity handles your data.",{"path":787,"title":788,"description":789},"\u002Flegal\u002Fterms-of-use","Terms of Use","Terms governing your use of Lucity.",1791216729052]