Skip to content

Workflow templates

When you create a new workflow, you pick a template — that fills in the step graph with sane defaults for that stack. Edit afterwards if you need to.

Single-app templates

IDNameDefault target pathHealthcheckNotes
blankBlankEmpty graph; build it yourself
staticStatic site (pre-built)/var/www/sitehttp://localhost/git pull → flatten → nginx reload. Good for landing pages.
phpPHP app/var/www/apphttp://localhost/composer install → php-fpm reload
wordpressWordPress/var/www/wphttp://localhost/theme/plugin pull → wp cache flush → php-fpm reload
reactReact (Vite / CRA)/var/www/reacthttp://localhost/npm ci → build → nginx reload
nextjsNext.js/opt/nextapphttp://127.0.0.1:3000/Auto-detects standalone vs default mode, runs under pm2
nodejsNode.js (Express / API)/opt/nodeapphttp://127.0.0.1:3000/healthnpm ci → optional build → pm2
djangoDjango/opt/django-apphttp://127.0.0.1:8000/pip → migrate → collectstatic → gunicorn restart
flaskFlask/opt/flask-apphttp://127.0.0.1:8000/pip → gunicorn restart
fastapiFastAPI/opt/fastapi-apphttp://127.0.0.1:8000/healthpip → uvicorn restart

Combined templates (frontend + backend)

IDWhat it builds
react-vite-nodejsReact (Vite) frontend + Node.js Express backend on the same server
nextjs-nodejsNext.js + a separate Node backend
react-djangoReact frontend + Django API backend

Universal template

IDWhat it does
dockergit pull → docker compose builddocker compose up -d → healthcheck. Works for any stack with a Dockerfile. This is what Mezzanine uses to deploy itself.

Pre-flight

IDWhat it does
preflightInspect-only — checks which tools (node, npm, python, php, docker, etc.) are installed on the target. Useful as the first run on a new server to figure out which template to pick.

Where they live in the code

frontend/lib/workflow-templates.ts — single file, one array. Add a new template by adding a new entry. The wizard picks them up automatically.

Adding your own

If your stack isn’t covered, the cleanest path is:

  1. Start from the closest existing template
  2. Run a preflight first to confirm your tools are present
  3. Build the workflow as blank and add steps manually
  4. If you’ll reuse the shape — copy your final step graph into workflow-templates.ts as a new entry and PR it