Чуйгун
Техническая документация

Деплой

Целевой стек Cloudflare Workers + Supabase, снятие блокера с Next 15, шаги деплоя, env-переменные, DNS/SSL и урок про печать по LAN.

Целевой стек (эконом, #58)

  • Фронт: Cloudflare Workers через @opennextjs/cloudflare. Бэк: Supabase (уже в проде). DNS: Cloudflare.
  • Цена: Supabase Pro $25 + Cloudflare Workers $0–5 ≈ $30/мес (фиксированная, не pay-as-you-go). Vercel Pro $20/сайт признан расточительным для мультисайтового MonsterDEVZ.
  • Custom Domain api.chuygun.kg на Supabase не берём ($10/мес add-on) — бэк-адрес из кода, брендинг закрытого POS не нужен (#59). Бэк на дефолтном onwzbtknxtdituwrcxvn.supabase.co.

Блокер и его снятие

OpenNext дропает Next 14 в Q1 2026 → был обязателен апгрейд на Next 15+ (сделан, #57: 14.2.15 → 15.5.20, React 18 → 19; codemod для async request APIs cookies / params).

Монорепо-нюансы OpenNext:

  • outputFileTracingRoot обязателен.
  • Удалён лишний package-lock (ломал сборку).
  • Лимит размера воркера 10 MiB gzip (Paid) — проверять из-за i18n (ru/en/uz) + shadcn; при превышении lazy-load тяжёлого.

Шаги деплоя на Cloudflare (после Next 15)

  1. npm i -D @opennextjs/cloudflare wrangler.
  2. wrangler.jsonc в apps/web/ (worker chuygun-web, compatibility_date ≥ 2024-09-23, флаг nodejs_compat).
  3. open-next.config.ts.
  4. Cloudflare → Workers & Pages → Connect to Git → репо, Root apps/web, build через OpenNext.
  5. Прописать env в Cloudflare Dashboard (список ниже), привязать домен chuygun.kg к воркеру.
  6. Смоук-тест: логин официанта → меню → заказ → realtime касса/кухня → печать.

Env-переменные

Публичные (NEXT_PUBLIC_*): SUPABASE_URL, SUPABASE_ANON_KEY, SITE_URL (→ боевой домен, иначе QR/ссылки укажут на старый URL), PRINT_AGENT_URL, MAP_LAT, MAP_LNG, VAPID_PUBLIC_KEY.

Серверные секреты (Cloudflare Secret, не plaintext): SUPABASE_SERVICE_ROLE, VAPID_PRIVATE_KEY, VAPID_SUBJECT, PUSH_NOTIFY_SECRET.

Значения секретов — см. закрытый файл доступов. В git не коммитить.

Cloudflare DNS / SSL

  • Регион Supabase — Asia-Pacific (Tokyo); при Vercel-варианте регион был переключён fra1 → sin1 (#24, Singapore ближе к Tokyo).
  • (Legacy Vercel-runbook) Cloudflare-прокси в режиме «DNS only» (серое облако): Vercel сам выпускает Let's Encrypt-cert, двойное проксирование ломает renewal. SSL/TLS mode — Full (strict). На Cloudflare Workers прокси нативный.

Урок про права / «Initializing» (LAN vs USB печать, #44)

macOS 26 убрал raw-очереди CUPS → ломает node-thermal-printer printer:auto. Прямой libusb упирается в LIBUSB_ERROR_ACCESS без sudo (принтер «Initializing» / не печатает).

Решение: печать через LAN tcp://IP:9100 — работает на любой ОС без прав и автозапуска-от-root. USB оставлен резервом под Windows-кассу (#45).

Статус (02.07.2026)

  • Supabase prod развёрнут (onwzbtknxtdituwrcxvn, Asia-Pacific), 51+ миграций, меню/столы залиты (#41).
  • Домен chuygun.kg подключён к Cloudflare, NS сменены в cctld, ждём активацию.

Vercel-дубли в MonsterDEVZ удалять ТОЛЬКО после того, как Cloudflare заработает.

Порядок для владельца (когда придёт банк-карта): оплатить Supabase Pro $25, Cloudflare Workers Free/$5, продлить chuygun.kg в cctld (~3011 сом/год).

На этой странице