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.

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
FastAPIInstall Python dependenciesuvicorn main:app --host 0.0.0.0 --port 80008000
DjangoInstall Python dependenciesGunicorn with your WSGI module8000
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.

Install Lizard CLI and sign in once:

npm install -g @lizard-build/cli
lizard login

Each guide uses a new project and a service named web or api. Create that service with lizard add --service web (or api) before the first lizard up --service call. up --service selects an existing service; it does not create a missing named service. 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 excludes 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.

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. 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.

Runtime support does not imply shared caches, persistent local files, or every framework version. 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