Техническая документация
Инфраструктура
Домены, репозитории, итоговый эконом-стек хостинга, железо на объекте и сводка по безопасности инфраструктуры.
Домены
- Гостевой
chuygun.kg— на фронте (Cloudflare Workers, бесплатно). Регистрация / продление в cctld (~3011 сом/год). - Бэк на дефолтном
onwzbtknxtdituwrcxvn.supabase.co— Custom Domainapi.chuygun.kgне берём (#59, экономия $120/год).
NEXT_PUBLIC_SITE_URL обязательно на боевой домен, иначе QR-коды и ссылки укажут на старый Vercel-URL.
Репозитории
- Кор-репо:
chuygunkg/chuygun(основной, с него собирается Cloudflare). Доп:MonsterDEVZ/chuygun. Оба синхронны. Продакшн-ветка —main. - Монорепо:
apps/web(Next.js),print-agent(локальный daemon, вне workspaces),db/migrations,docs,supabase. Rootpackage.json—workspaces: ["apps/*"].
Эконом-стек (итог #58, #59)
Supabase Pro $25 (хранилище фото 100 ГБ, realtime, бэкапы) + Cloudflare Workers $0–5 ≈ $30/мес. Фиксированная цена, не «сгорающий» pay-as-you-go, коммерция разрешена.
Отвергнуто:
- Vercel ($45, расточительно)
- Cloudflare Pages (не тянет Next SSR без Workers)
- дешёвый VPS 1 ГБ (нет Node/WebSocket или мало RAM)
- Render $7
WebSocket/realtime на Cloudflare не проблема — идёт браузер → Supabase напрямую (getBrowserSupabase()), фронт-хостинг в цепочке не участвует.
Оплата: заказчик регистрирует Supabase/Cloudflare на свою карту; агентство — техподдержка почасово после сдачи.
Железо на объекте
- Принтер XPrinter XP-T80Q (LAN TCP 9100, статический IP по DHCP-резерву).
- Планшеты Redmi Pad SE 8.7 4G, HyperOS / Android 14, глобальная версия — Google-сервисы есть, Chrome из Play Market напрямую, Gbox не нужен (#40). Система — PWA в Chrome (не приложение из магазина). Планшет = «окно» в систему: не печатает, не хранит данные; нужен стабильный Chrome + Wi-Fi.
Настройка планшета:
- Chrome в «Без ограничений» по батарее (HyperOS убивает фон).
- PWA «на главный экран».
- Киоск-режим (закрепление приложений или Fully Kiosk Browser + PIN на выход).
- Экран не гаснет.
- Свой логин на каждого официанта.
Безопасность инфраструктуры (сводка)
Детали — SECURITY.md.
- Секретов в репо нет (
scripts/secrets-scan.sh,.gitignoreблокирует.env*,.vercel/). Service-role / VAPID — только в env хостинга или закрытом файле доступов. - Security-заголовки в
apps/web/vercel.json/(.*): HSTSmax-age=63072000; includeSubDomains; preload, X-Content-Type-Options nosniff, X-Frame-Options DENY, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy. Ожидаемая оценка SSL Labs A+. - CSP пока не выставлен (Yandex map iframe + inline JSON-LD) — nonce-based policy в бэклоге US-13.x.
- Rate-limit: WAF (login 10/мин, admin 60/мин, api 120/мин) + in-code
lib/security/rate-limit.ts. Логин через server-route/api/auth/loginс LOGIN_RULE 10/мин (#23).