Deployment

Phase 0 deploy — static export Next.js → Cloudflare Pages через git integration.

Live (Phase 0): https://arno-ijr.pages.dev (opens in a new tab)

Ключевой gotcha (2026)

Cloudflare объединил UI "Workers & Pages". Через Create application ты попадаешь в Worker-like flow с минимумом полей. Но для static-сайта всё равно нужен Pages-style wrangler.jsonc в repo root:

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "arno",
  "compatibility_date": "2026-05-20",
  "pages_build_output_dir": "./apps/web/out"
}

Не пиши assets.directory (это для чистых Workers со static assets — другой тип проекта).

Одноразовая настройка

  1. Залогинься в Cloudflare dashboard → Workers & PagesCreate applicationPagesConnect to Git
  2. Выбери GitHub аккаунт ChrisPianof → repo arno
  3. Project name: arno (даст arno.pages.dev; если занято — arno-app или подобное)
  4. Branch: main
  5. Build settings:
    • Framework preset: None (не Next.js preset — мы делаем static export сами)
    • Build command: corepack enable && pnpm install --frozen-lockfile && pnpm --filter @arno/web build
    • Build output directory: apps/web/out
    • Root directory: (оставить пустым = repo root)
  6. Environment variables:
    • NODE_VERSION = 20
    • PNPM_VERSION = 11.1.3
  7. Save and Deploy

После первого deploy

  • Public URL появится: https://arno.pages.dev (или назначенный)
  • Subsequent push к main → auto-rebuild + redeploy
  • Preview deploys per PR — включены by default

Custom domain (post-MVP)

В master spec §III.2.9 — Porkbun как separate registrar. DNS TTL 300s. Подключение domain → Pages — позже (Phase 16).

SPOF mitigation (master spec §III.2.9)

Сразу после первого deploy:

  • Добавить второго admin'а в Cloudflare account (hardware key 2FA)
  • Сохранить CF API token в 2 password manager backups
  • Documentировать в docs/runbooks/cloudflare_account_loss.md (Phase 16)

Troubleshooting

Build fails с "pnpm: command not found":

  • Проверь PNPM_VERSION env var
  • Альтернатива: npm install -g pnpm@11.1.3 && pnpm install && pnpm build

Static export output empty:

  • Проверь next.config.mjs имеет output: "export"
  • apps/web/out/index.html должен существовать после pnpm --filter @arno/web build

404 on routes:

  • trailingSlash: true в next.config.mjs — обязательно для static export

Когда менять deploy strategy

Static export достаточен до Phase 8 (introduce Auth). Phase 8-9 — переход на:

  • Вариант A: @cloudflare/next-on-pages adapter — Edge runtime
  • Вариант B: Workers Static Assets с OpenNext — современнее, ближе к Vercel

Решение в Phase 8 после оценки экосистемы (2026).