Framework guidesOverview

Framework guides

Deploy a framework app on Lizard from source. Choose your framework and rendering mode below, prepare its production build, then deploy with Lizard CLI or connect a GitHub repository. Server apps run a process; static sites serve the generated files through nginx.

Choose your framework

These settings describe the standard project layouts in the linked guides. Commands assume npm for JavaScript projects. Custom output paths, adapters, and build overrides can change the result. To bring your own image instead, see Deploy a Docker container from a Dockerfile.

FrameworkBuildRuntime or outputService port
Next.jsnpm run buildnext start through the start script3000
Next.js static exportnpm run buildout/ through a Dockerfile80
React with Vitenpm run builddist/80
Vue with Vitenpm run builddist/80
Astronpm run builddist/, or the standalone Node adapter80 static; 3000 server
Nuxtnpm run buildnode .output/server/index.mjs3000
SvelteKitnpm run buildnode build with adapter-node3000
Node.js (Express)build script, if anystart script3000
FastAPIInstall Python dependenciesuvicorn main:app --host 0.0.0.0 --port 80008000
DjangoInstall Python dependenciesGunicorn with your WSGI module8000
StreamlitInstall Python dependenciesstreamlit run app.py from a Procfile8501
Gogo build to a static binary/app/server8080
Ruby on RailsThe Dockerfile Rails generatesThruster and Puma, or Puma alone8080 on Rails 8; 3000 on Rails 7.1 and 7.2
Docusaurusnpm run buildbuild/80
VitePressnpm run docs:builddocs/.vitepress/dist/ in this guide80
Hugohugo --minifypublic/80

Prepare the project

Run commands from the application directory. Commit source files, configuration, and the package lockfile. Exclude .env, local dependencies, and local build output from uploads. Node projects can select the Node major version in .nvmrc; the current default is 22. This selects a major version, not an exact patch release. Runtime versions lists the version files for Node.js, Python, Go and Ruby.

Install Lizard CLI and sign in once:

curl -fsSL https://lizard.build/install.sh | bash
lizard login

On Windows, run irm https://lizard.build/api/cli/install.ps1 | iex in PowerShell. A new account starts on no plan: until you start the 7-day Pro trial (card required), lizard add and lizard up return a Checkout link. lizard billing start opens it.

Each guide uses a new project and a service named web or api. lizard up --service web creates web if it does not exist yet, so check the name: a typo creates a second service. The guides run lizard add --service web (or api) first; you need that step only to set secrets or a domain before the first deploy. For an existing project, check lizard status --json and lizard ps --json before deploying. The port must match the process inside the container, which must listen on 0.0.0.0.

Lizard CLI 0.3.95 and later exclude macOS archive metadata during uploads. No COPYFILE_DISABLE setting is needed. Update older CLI versions before following these guides.

Choose GitHub or local source

The guide commands use lizard up to upload the current folder. That command changes an existing service to upload source. To keep git push to deploy, connect GitHub instead and use the guide’s build settings in the repository. Configure the service port from the table: nginx for a Vite, Astro, SvelteKit, Docusaurus or VitePress build listens on the port you set, or on 3000 if you set none.

Keep build settings consistent

These guides use lizardpack detection unless they call for a Dockerfile. Existing buildCommand or startCommand overrides take precedence over detection and the repository Dockerfile; a set dockerfilePath takes precedence over both. Check build decision order before switching build methods. Set scripts in package.json when a guide tells you to; adding a CLI override is a different build path.

Check a release

Read build logs, runtime logs, and the active URL. Test an inner route, a missing route, and any API or form action. A process that opens its port can still serve a broken page. For generated sites, use static routes and 404s to avoid returning the home page with HTTP 200 for every unknown URL.

Check shared caches, persistent local files and framework versions separately from runtime support. See limits, storage and recovery, and known issues when your app relies on those features.

See tested versions and cloud results for the September 9, 2026 deployment checks and their limits.

Updated