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.
| Guide | Covers |
|---|---|
| Next.js | Next.js with the App Router or Pages Router, next start or output: 'standalone' |
| Node.js & Express | Express, Fastify, Koa and any Node.js server |
| Python | FastAPI, Django and Flask |
| Go | net/http, Gin, Echo, Fiber and any Go server |
| Static Sites | Plain 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
Dockerfilein the root directory is used instead, as is. - Listen on
0.0.0.0and on$PORT. Zenavo setsPORTto the service's port, 8080 for zbpack builds. A server that only listens onlocalhostor127.0.0.1cannot 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_STRINGand 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.