Skip to content

Deploy & ops

Vercel auto-deploys every push to main (project chivalry3dconfig, team adamduce83’s projects). There is no manual deploy step.

  1. Branch or edit, commit, push to main — that is the deploy.
  2. Watch it: Vercel dashboard → chivalry3dconfig → Deployments (appears ~1 min after the push, source = git).

Each of these has bitten us before.

  • vercel.jsonfunctions.includeFiles: "tenants/**" — without it the serverless functions can’t read the tenant JSON/catalogue files at runtime (they aren’t statically imported, so Vercel’s tracer misses them).
  • middleware.js matcher must exclude brand.js — it’s fetched on the gate page before login; if the middleware blocks it, tenants aren’t themed. (Same reason gate.html, api/, vendor/ and image types are excluded.)
  • Per-tenant secrets only, keyed by _<ENV>. Never add a global ODOO_URL on Vercel — every tenant would push to the wrong Odoo.
  • VIZ_SECRET must be set — the gate fails closed without it (no one can log in).

For a *.goask.com.au subdomain: add the domain in Vercel (Settings → Domains), then a Cloudflare DNS record — A <sub> 76.76.21.21 (DNS only / grey cloud).

Odoo runs in a separate repo/host: goask-3d-configurator-odoo — a Dockerfile (FROM odoo:18) + start.sh, on Railway alongside a Postgres.

  • Oz Chivalry: https://ozchivalry-odoo.up.railway.app — DB chivalry, admin / admin (demo password — secure before real use).
  • Odoo refuses to run as the Postgres superuserstart.sh creates a dedicated odoo role.
  • Odoo has no --admin-passwd CLI flag — set the master password via config/env, not a flag.
  • Products are matched by SKU (default_code) — seeded codes must match the tenant’s catalog.js.