Files
andreypr207andClaude Opus 5.5 20491d1ba4 Этап 1b: сайт
- Страницы обоих брендов из блоков Payload (D-029): главная, цены,
  локации, поддержка, 4 юридические, 404 и 500. Коллекции pages
  (черновики и версии) и faq с местами показа, 12 типов блоков; поля
  sites — почта и Telegram поддержки, часы работы, SEO по умолчанию.
- Карта и глобус рисуются на сервере (d3-geo), контуры во внешнем
  SVG через <use>; выбор локации синхронизирован между картой и сеткой.
- Тексты сайта и юридические черновики на 5 языках: de, fr, es —
  перевод с глоссарием; seed создаёт страницы и FAQ, только если их
  нет, SEED_CONTENT=reset пересоздаёт.
- SEO: title и описания, canonical, hreflang с x-default,
  sitemap.xml и robots.txt на каждый домен, картинки для соцсетей.
- Статическая сборка и пересборка через revalidatePath из хуков
  Payload (D-030); /svc/internal/revalidate для проверки.
- 404 — статичная страница со статусом 404 через proxy; на сайте
  только опубликованные страницы.
- Производительность: Client Hints темы Payload только в админке,
  предзагрузка 2 файлов шрифтов вместо 6; Lighthouse mobile 97–99.
- Контраст --ink-3 по WCAG AA, радиокнопки вместо div role=button.
- Документация: итоги 1b, глоссарий de/fr/es, трактовки юридических
  черновиков подтверждены, переносимые вопросы — в этапах 3e–3h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 04:53:15 +02:00

6.5 KiB

Veilix — правила для сессий Claude

Сервис продажи VPN двух брендов на одном бэкенде: Вейликс (dedicated, veilix.app) и ВейликсВПН (mass, veilixvpn.com). Карта документации — docs/00-index.md.

1. Порядок работы в сессии

  1. Прочитай этот файл, затем docs/00-index.md и файл текущего этапа в docs/stages/. Остальные документы — по ссылкам из файла этапа.
  2. Перед началом работ сверь с пользователем план этапа: что делаем, что не делаем, какие вопросы открыты. Код не пишем, пока план этапа не подтверждён.
  3. Нашлось противоречие между документами, макетом и задачей — сначала обсуждаем, потом делаем.
  4. Есть отраслевой стандарт лучше предложенного решения или решение получается кастомным — обсуди с пользователем.
  5. В конце этапа обнови документацию: статус этапа в docs/00-index.md, решения в docs/decisions/, изменения модели данных в docs/03-data-model.md.

2. Общение

  1. Язык — русский.
  2. Нумерация пунктов в чате и в документации — только цифры и латинские буквы (1, 2, 3 и a, b, c). Кириллические буквы как маркеры не используем: не путаются латинская A и русская А, латинская B и русская В.

3. Сервер и права

  1. Всё, что требует root (пакеты, nginx, сертификаты, роли PostgreSQL, Postfix, DNS, loginctl), делает пользователь. Сформулируй, что и зачем нужно сделать, и жди. Обходные пути внутри своего пользователя не ищем.
  2. Окружения на одном сервере, под разными пользователями ОС: a. dev — пользователь vx_dev (под ним работают сессии Claude): /home/vx_dev/veilix_dev (рабочая копия git), база veilix_dev, домены dev.*, порт 3100; b. prod — пользователь vx_prod: /home/vx_prod/veilix (релизы и симлинк current), база veilix_prod, основные домены, порт 3000. У vx_dev доступа к prod нет.
  3. Выкладка в prod — только по явной команде пользователя в текущей сессии и только командой выкладки (docs/02-architecture.md, раздел 5).

4. Технические правила

  1. Стек и версии — docs/02-architecture.md. Payload 3.x; код пишем совместимо с Payload 4: в Local API всегда явно указываем overrideAccess.
  2. ID — только UUID (idType: 'uuid'). Наружу не отдаём последовательных номеров: номера заказов, ключей и реферальные коды — случайные.
  3. Деньги — целые числа в минимальных единицах (копейки, центы) плюс код валюты. Никаких float.
  4. Секреты — только в .env вне git.
  5. Тексты интерфейса — через next-intl, контент — локализованные поля Payload. Строк на одном языке в коде компонентов нет.
  6. Макеты — в design/handoff/project/. Воспроизводим их по коду макетов (разметка, CSS-переменные), а не по скриншотам.
  7. Коммиты и push в Gitea — по просьбе пользователя.

5. Команды

Из /home/vx_dev/veilix_dev под vx_dev. Dev-сервер работает под systemd, вручную pnpm dev не запускаем: порт 3100 занят.

Команда Что делает
systemctl --user restart veilix-dev перезапустить dev-сервер (pnpm dev, 127.0.0.1:3100); юнит — ops/systemd/veilix-dev.service
journalctl --user -u veilix-dev -f логи dev-сервера
pnpm lint ESLint
pnpm typecheck типы маршрутов Next и tsc --noEmit
pnpm test модульные тесты (Vitest, файлы *.test.ts)
pnpm build production-сборка; dev-серверу не мешает, он пишет в .next/dev
pnpm format Prettier (pnpm format:check — только проверка)
pnpm seed начальные данные dev; повторный запуск обновляет справочники и возвращает значения seed, а страницы и FAQ создаёт, только если их нет. SEED_CONTENT=reset — пересоздать страницы и FAQ, SEED_ENV=prod — данные prod
pnpm generate:types типы Payload в src/payload-types.ts после изменения коллекций
pnpm generate:importmap карта импортов админки после добавления своих компонентов
pnpm db:reset очистить veilix_dev (только её), если push схемы задаёт вопросы (переименование, удаление): без терминала их некому подтвердить. Затем перезапуск dev-сервера и pnpm seed
pnpm payload migrate:create <имя> миграция для prod; до первой выкладки (3h) миграции не создаём

Проверка без nginx: curl -A 'Mozilla/5.0' -H 'Host: dev.veilix.app' http://127.0.0.1:3100/…. Без браузерного User-Agent curl считается ботом и не перенаправляется; заголовок X-Geo-Country так можно подставить, через nginx — нет.