Skip to content

Framework Guides ​

These guides deploy a typical app of each kind from a Git repository. Each one shows a minimal app, what Zenavo detects, the settings it needs and the mistakes we see most often.

GuideCovers
Next.jsNext.js with the App Router or Pages Router, next start or output: 'standalone'
Node.js & ExpressExpress, Fastify, Koa and any Node.js server
PythonFastAPI, Django and Flask
Gonet/http, Gin, Echo, Fiber and any Go server
Static SitesPlain HTML and built sites: Vite, React, Vue, Astro, Hugo output

Every guide assumes you have a server and a project: see Quick Start.

What all of them have in common ​

  • Without a Dockerfile, zbpack builds the app. Check what it detected in the Build Plan Preview before deploying. A Dockerfile in the root directory is used instead, as is.
  • Listen on 0.0.0.0 and on $PORT. Zenavo sets PORT to the service's port, 8080 for zbpack builds. A server that only listens on localhost or 127.0.0.1 cannot be reached and the deploy never becomes healthy.
  • Configuration comes from variables. Set them on the service's Variable tab; a database's connection details arrive as <NAME>_CONNECTION_STRING and friends (Databases). Variables change on the next deployment.
  • The file system is not kept across deploys and restarts. Put uploads and other files that must survive on a volume, or in a database or object storage.
  • Monorepos set the service's Root Directory to the app's folder, and watch paths to build only when it changes.

Not affiliated with Zeabur.