- Q-02: цены mass в USD $6.99 и $69.90, пресеты пополнения в RUB и USD. - D-025: реферальный бонус — 30 дней к ключу обоим вместо денег; продления без оплаты (key-extensions); крайние случаи — Q-19. - Q-08, Q-09: help@veilix.app и help@veilixvpn.com, часы по Москве. - Q-16: ящики на почтовом хостинге (R-18), на этапе 2 — Chatwoot по IMAP. - R-01 сделано; R-17: путь HMR в Next 16.4 — /_next/hmr. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6.5 KiB
6.5 KiB
Этап 1a. Фундамент
Статус: готово 21.10.2026. Остался R-17 (root, nginx), см. раздел 6.
1. Цель
Рабочий каркас: одно приложение отвечает на все dev-домены, определяет сайт, язык и валюту, показывает оболочку обоих брендов в своих цветах; админка с базовыми справочниками.
2. Входит
- Проект: Next.js 16.4, Payload 3.x (или 4, если вышел стабильный), TypeScript strict, pnpm, ESLint, Prettier. Структура папок — 02-architecture.md, раздел 3.
- PostgreSQL: адаптер с
idType: 'uuid', push в dev, настроенные миграции для prod. - Payload: админка только на хосте админки;
adminsс ролями; плагин multi-tenant (полеsite); локализацияen, ru, de, fr, esс откатом наen; интерфейс админкиruиen;filterAvailableLocales. - Коллекции:
sites,domains,currencies,countries,locations,tags,tariffs,payment-systems(пока только адаптерmanual),media— по 03-data-model.md. - Proxy: Host → домен → сайт и тип фронтенда; префиксы языков (next-intl, английский без префикса); определение языка по 06-i18n.md, раздел 4; cookie валюты; внутренние маршруты; закрыть
/adminи REST Payload на доменах брендов. - Темы: токены брендов (07-frontend.md, раздел 4), Tailwind v4,
data-site,data-theme, три режима темы без мигания; шрифты черезnext/font. - Оболочки: шапка и подвал маркетинговых сайтов обоих брендов с переключателями языка, валюты и темы; оболочка кабинета (боковая панель и мобильные вкладки) с заглушками страниц.
- Начальные данные (seed): 2 сайта, dev-домены, валюты, 30 стран и RU, 30 локаций на каждом сайте, тарифы dedicated (3 уровня) и mass (месяц, год) с ценами в RUB и USD, платёжная система
manual. /svc/health.- systemd user-юнит
veilix-dev.service; текст конфигурации nginx для dev-хостов на согласование. - Раздел «Команды» в CLAUDE.md.
3. Не входит
Страницы по макетам (1b), вход (1c), биллинг (1d).
4. Перед стартом
Root: R-00…R-06 (09-infrastructure.md, раздел 8). Открытых решений к этапу нет.
5. Готово, когда
dev.veilix.appиdev.veilixvpn.comоткрываются по HTTPS: шапка и подвал в цветах бренда, три режима темы.- Работают
/ru,/de,/fr,/es; первый заход без префикса перенаправляет по правилам определения языка; поисковые боты не перенаправляются. - Переключатель валюты запоминает выбор.
dev.plc.veilix.cc/admin: переключение сайтов, справочники редактируются, локализованные поля переключаются по языкам, у сайта видны только его языки.- В URL админки — UUID.
dev.my.*показывает оболочку кабинета;/adminна доменах брендов — 404.pnpm build, линтер и проверка типов проходят.
6. Итоги
Проверено curl через nginx и напрямую на 127.0.0.1:3100: пункты 2, 3, 5, 6 и 7, а также HTTPS, lang, data-site, скрипт темы в <head> и токены обоих брендов в CSS. Внешний вид сайтов и кабинета и админку (пункты 1 и 4) проверил пользователь в браузере, первый администратор создан.
Решения и отклонения от плана:
- Стек: TypeScript 6.0 и ESLint 9.39 вместо последних 7 и 10 — их пока не поддерживают плагины (02-architecture.md, раздел 1).
- Внутренние маршруты — по хосту, а не по коду сайта; домены proxy берёт у
/svc/internal/domainsс кэшем на 15 секунд (D-022). - Языки сайта — поле
sites.locales(D-023); перенаправление на язык из cookie (D-024). - В
sitesсделаны толькоcode,name,orderPrefixиlocales; остальные поля добавят этапы, которые ими пользуются (03-data-model.md, раздел 3.1). - Таблицы переводов Payload — с суффиксом
_l10n; для вопросов push в dev —pnpm db:reset. - Миграции: механизм проверен на пустой схеме; начальную миграцию создаём перед первой выкладкой (1h).
- Mass в USD — $6.99 и $69.90: сначала временные, утверждены в Q-02.
- Адаптация макетов: переключатели для 5 языков и валюты, «Политика cookies» в подвале, подписи кабинета mass как у dedicated (07-frontend.md, раздел 7).
Осталось:
- R-17 (root):
location /_next/hmrс большимproxy_read_timeoutв nginx dev — иначе горячая перезагрузка переподключается после 30 секунд тишины. - На этап 1b: серверная отрисовка 404 и 500 (07-frontend.md, раздел 7.16), цвета карты, пересборка страниц по событию из Payload.