PageSourceSearch

https://lizard.build/docs/_next/static/chunks/pages/getting-started-cddb5e809b068ab0.js

js lizard.build collected 2026-10-05 05:12:55 UTC 16,388 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6651],{2419:function(i,s,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/getting-started",function(){return e(6740)}])},6740:function(i,s,e){"use strict";e.r(s),e.d(s,{useTOC:function(){return d}});var n=e(4512),l=e(8542),h=e(6827),r=e(266),a=e(7641);function d(i){return[{value:"1. Install the CLI",id:"1-install-the-cli",depth:2},{value:"2. Log in",id:"2-log-in",depth:2},{value:"3. Deploy",id:"3-deploy",depth:2},{value:"Option A — Deploy a GitHub repo (recommended)",id:"option-a--deploy-a-github-repo-recommended",depth:3},{value:"Option B — Deploy local code",id:"option-b--deploy-local-code",depth:3},{value:"4. Watch it build and run",id:"4-watch-it-build-and-run",depth:2},{value:"5. Add a database (optional)",id:"5-add-a-database-optional",depth:2},{value:"Next steps",id:"next-steps",depth:2},{value:"Hosting costs",id:"hosting-costs",depth:2}]}s.default=(0,l.c)(function(i){let{toc:s=d(i)}=i,e={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...(0,r.a)(),...i.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{children:"App quickstart"}),"\n",(0,n.jsxs)(e.p,{children:["Ship your first app to Lizard in a few minutes. You’ll need Node.js 18+ and npm — a Lizard account is created automatically the first time you ",(0,n.jsx)(e.code,{children:"lizard login"}),". You’ll install the CLI, log in, and deploy — either straight from a GitHub repo or from a local directory."]}),"\n",(0,n.jsx)(e.h2,{id:s[0].id,children:s[0].value}),"\n",(0,n.jsxs)(e.p,{children:["Install the ",(0,n.jsx)(e.code,{children:"lizard"})," binary globally from npm:"]}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"npm"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" install"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" -g"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" @lizard-build/cli"})]})})}),"\n",(0,n.jsxs)(e.p,{children:["Verify it’s on your ",(0,n.jsx)(e.code,{children:"PATH"}),":"]}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" --version"})]})})}),"\n",(0,n.jsxs)(e.blockquote,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsxs)(e.strong,{children:["Don’t use ",(0,n.jsx)(e.code,{children:"npx"}),"."]})," Always use the globally installed ",(0,n.jsx)(e.code,{children:"lizard"})," binary. Running ",(0,n.jsx)(e.code,{children:"npx @lizard-build/cli"})," pulls a throwaway copy whose version may drift from the platform. Upgrade in place later with ",(0,n.jsx)(e.code,{children:"lizard upgrade"}),"."]}),"\n"]}),"\n",(0,n.jsxs)(e.blockquote,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Permission errors (EACCES)?"})," Don’t use ",(0,n.jsx)(e.code,{children:"sudo"}),". Point npm at a user-owned prefix instead:"]}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsxs)(e.code,{children:[(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"mkdir"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" -p"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" ~/.npm-global"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"npm"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" config"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" set"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" prefix"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" ~/.npm-global"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"echo"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:" '"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:"export PATH=~/.npm-global/bin:$PATH"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:"'"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#34D399","--shiki-light":"#03070E"},children:" >>"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" ~/.zshrc"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:" &&"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" source"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" ~/.zshrc"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"npm"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" install"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" -g"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" @lizard-build/cli"})]})]})}),"\n"]}),"\n",(0,n.jsx)(e.h2,{id:s[1].id,children:s[1].value}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" login"})]})})}),"\n",(0,n.jsx)(e.p,{children:"This opens your browser to authenticate, then drops back to your terminal once you confirm. In CI or other non-interactive environments, authenticate with a token instead:"}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsxs)(e.code,{children:[(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#34D399","--shiki-light":"#03070E"},children:"export"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:" LIZARD_TOKEN"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#34D399","--shiki-light":"#03070E"},children:"="}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:"lzd_xxx"})]}),"\n",(0,n.jsx)(e.span,{children:(0,n.jsx)(e.span,{style:{"--shiki-dark":"#5F646D","--shiki-light":"#03070E"},children:"# or"})}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" login"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" --token"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" lzd_xxx"})]})]})}),"\n",(0,n.jsx)(e.p,{children:"Check who you are at any time:"}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" whoami"})]})})}),"\n",(0,n.jsx)(e.h2,{id:s[2].id,children:s[2].value}),"\n",(0,n.jsx)(e.p,{children:"Pick the path that matches where your co
1de lives."}),"\n",(0,n.jsx)(e.h3,{id:s[3].id,children:s[3].value}),"\n",(0,n.jsx)(e.p,{children:"If your code is on GitHub, create a service straight from the repo. Lizard clones it, auto-detects the stack, builds it, and returns a live URL:"}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" add"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" -r"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" your-org/your-app"})]})})}),"\n",(0,n.jsx)(e.p,{children:"Pushes to the tracked branch will auto-redeploy from then on. For private repos, connect the GitHub App first:"}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" git"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" connect"})]})})}),"\n",(0,n.jsx)(e.h3,{id:s[4].id,children:s[4].value}),"\n",(0,n.jsxs)(e.p,{children:["From inside your project directory, upload and deploy the current folder (respects ",(0,n.jsx)(e.code,{children:".gitignore"}),"):"]}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsx)(e.code,{children:(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" up"})]})})}),"\n",(0,n.jsxs)(e.p,{children:["If the directory isn’t linked to a project yet, ",(0,n.jsx)(e.code,{children:"up"})," will create or select one interactively. In CI, link explicitly first with ",(0,n.jsx)(e.code,{children:"lizard init --name my-project"}),"."]}),"\n",(0,n.jsxs)(e.p,{children:["Either way, when the build finishes you’ll get a generated URL like ",(0,n.jsx)(e.code,{children:"https://your-app-production.onlizard.com"}),"."]}),"\n",(0,n.jsx)(e.h2,{id:s[5].id,children:s[5].value}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsxs)(e.code,{children:[(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" ps"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#5F646D","--shiki-light":"#03070E"},children:"          # services in the project, with status + URL"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" logs"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#5F646D","--shiki-light":"#03070E"},children:"        # last runtime log lines"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" logs"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" --build"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#5F646D","--shiki-light":"#03070E"},children:"  # the most recent build's logs"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" open"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#5F646D","--shiki-light":"#03070E"},children:"        # open the project in the dashboard"})]})]})}),"\n",(0,n.jsx)(e.h2,{id:s[6].id,children:s[6].value}),"\n",(0,n.jsx)(e.p,{children:"Provision a managed Postgres and reference it from your service:"}),"\n",(0,n.jsx)(e.pre,{icon:a.Fx,tabIndex:"0","data-language":"bash","data-word-wrap":"",children:(0,n.jsxs)(e.code,{children:[(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" add"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" postgres"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" secrets"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" set"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" DATABASE_URL="}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:"'"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:"${{postgres.DATABASE_URL}}"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#858B94","--shiki-light":"#03070E"},children:"'"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" --service"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" your-app"})]}),"\n",(0,n.jsxs)(e.span,{children:[(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:"lizard"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" redeploy"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#D4A574","--shiki-light":"#03070E"},children:" --service"}),(0,n.jsx)(e.span,{style:{"--shiki-dark":"#E9EDF4","--shiki-light":"#03070E"},children:" your-app"})]})]})}),"\n",(0,n.jsxs)(e.p,{children:["The ",(0,n.jsx)(e.code,{children:"${{postgres.DATABASE_URL}}"})," reference is resolved at deploy time and rotates automatically with the addon. See ",(0,n.jsx)(e.a,{href:"/addons",children:"Managed Addons"}),"."]}),"\n",(0,n.jsx)(e.h2,{id:s[7].id,children:s[7].value}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:(0,n.jsx)(e.a,{href:"/concepts/architecture",children:"Core Concepts"})})," — understand projects, services, and the build pipeline."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:(0,n.jsx)(e.a,{href:"/deploy/github",children:"Deploying from GitHub"})})," — branches, monorepos, and auto-redeploys."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:(0,n.jsx)(e.a,{href:"/variables",children:"Variables & Secrets"})})," — scoping and precedence."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:(0,n.jsx)(e.a,{href:"/networking",children:"Networking"})})," — attach your own hostname with automatic TLS."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:(0,n.jsx)(e.a,{href:"https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production",children:"Deploying an app your AI IDE built"})})," — the same three steps handed to an agent instead, for an app written in Google Antigravity."]}),"\n"]}),"\n",(0,n.jsx)(e.h2,{id:s[8].id,children:s[8].value}),"\n",(0,n.jsxs)(e.p,{children:["Lizard uses ",(0,n.jsx)(e.a,{href:"/platform/billing",children:"pay as you go"})," with no monthly subscription. Resource usage draws from your account balance. Purchased credits do not expire; trial credits do. Check ",(0,n.jsx)(e.a,{href:"https://lizard.build/pricing",children:"pricing"})," and your account limits before deploying."]})]})},"/getting-started",{filePath:"pages/getting-started.mdx",pageMap:h.v,frontMatter:{description:"Install the lizard CLI, log in, and ship your first app from a GitHub repo or a local folder in a few minutes, then add a database."}
1,title:"App quickstart"},"undefined"==typeof RemoteContent?d:RemoteContent.useTOC)}},function(i){i.O(0,[8542,6827,2888,9774,179],function(){return i(i.s=2419)}),_N_E=i.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.