От статического зоопарка доменов до одного ядра на Next: лендинг ковровой студии и перенос в свой boilerplate

Введение

Несколько лет назад пришла задача сверстать лендинг для студии тафтинга (ковровая вышивка пистолетом) в Казани — MatyrKover. Формулировка обычная: дизайн в сеть, быстрый результат. Но «просто сверстать» было скучно, и я усложнил задачу: поднять много доменов под разные ключи, отдать всё статикой и автоматизировать деплой. Статика, GitHub Actions, Docker, nginx, сертификаты — в итоге за пару вечеров получился рабочий конвейер. Кстати, частично работающее решение находится так же в OpenSource.

Со временем накопились накладные расходы: сертификаты, продление доменов, отсутствие нормальной аналитики по заявкам и единой точки входа. Плюс внешняя реальность: когда Telegram перестаёт быть надёжным каналом для уведомлений админу, классическая схема «форма → бот» ломается без вашей вины. Да, я использую именно ТГ для доставки заявок, это было самое простое решение на тот момент, оно пока так же сохранено в новой реализации.

Я решил не чинить N отдельных статических сайтов, а перенести лендинг на свой production-ready boilerplate на Next.js — с полноценным бэкендом, админкой и заделом под контент и ЛК. Ниже — как устроен перенос, как я сохранил трафик с сателлитов без дублирования бэкенда на каждом домене, и что уже даёт платформа «из коробки».

От статического зоопарка доменов до одного ядра на Next: лендинг ковровой студии и перенос в свой boilerplate

Что было: мультидоменная статика без «сервера»

Когда пришла новая задача - генерация сертификатов и онлайн оплата, я столкнулся с тем, что чтобы для статики сделать такую реализацию понадобиться интеграция платежного шлюза и какой нибудь новый бэк, в который будут отлетать запросы со всех источников. Мне показалось это довольно трудозатратным и сложным в будущей поддержке. А тут, карты сошлись, я не так давно реализовал свой единый бойлерплейт на Next.js, о котором уже писал ранее на VC. В общем, далее:

Изначально Next.js я не брал: задачи динамического рендера и API не было — нужен был быстрый лендинг и выдача HTML с nginx. Взял Vite, свой пайплайн и обеспечил:

  • сборку и деплой в GitHub Actions;
  • на сервере — Docker, скрипты для статики, генерации конфигов nginx и выпуска сертификатов (тоже в рамках CI).

Цель была простая: занять ключевые домены в нише и своем ГЕО (Казань) и висеть в выдаче без постоянных ручных действий. В целом цель отработала: отдельная глубокая SEO-кастомизация под каждый домен и ключ не делалась — хотелось минимум сопровождения при максимуме охвата.

Минус: сертификаты и домены требуют внимания раз в год; список доменов со временем сократил — оставил то, что реально окупает поддержку.

Пример конфига для кастомизации под различные домены 
Пример конфига для кастомизации под различные домены 

Зачем вообще уходить со статики на Next boilerplate

На статике упираешься в три вещи:

  1. N доменов = N мест, где что-то может отвалиться (DNS, серты, кэш).
  2. Нет единого места для заявок, аналитики и понимания, кто клиент.
  3. Интеграции (мессенджеры, почта, CRM) хочется держать на одном домене и одном API, а не копировать костыли.

Свой boilerplate на Next уже включает то, что для бизнес-сайта критично: авторизация, роли, статьи, дашборды, задел под расширение. Лендинг студии — хороший «первый клиент» для этой базы.

Под капотом уже есть ролевая поддержка, поддержка приватности статей и доступа по ссылоке. А так же полный пример к внедрению по различным JSONLD схемам, мета тегам и так далее.

Процесс работы со встроенным ИИ
Процесс публикации/генерации аудио версии из статьи

Перенос лендинга: что реально заняло время

Алгоритм был простым:

  • вынес компоненты и UI-kit лендинга в структуру проекта boilerplate;
  • перелинковал картинки, перенёс шрифты, обновил прелоады и стили под Next.

Суммарно локально от «папки с версткой» до крутящегося лендинга с полноценной подложкой ушло порядка получаса–часа — потому что каркас приложения, роутинг и инфраструктура уже были готовы; работа была в миграции фронта и ассетов, а не в изобретении проекта с нуля. Так же допом заняла доп кастомизаций встроенной SEO поддержки и улучшения общих показателей GEO и SEO. По анализу сайта активно пользовался CLAUDE скиллом - must have, по ощущениям, для улучшений производительности и показателей выдачи. После доработок под GEO сайт студии стал активно рекомендоваться в ChatGPT, Claude и Grok. Gemini заработал с пол пинка, он активно использует устаревшую информацию в сети, а DeepSeek с оф. сайта вовсе работает на старом слепке данных сети, хотя и пользуется выходом в интернет. У самого сайта студии низкий рейтинг ссылочной массы, возможно это так же активно влияет на показатели. В PageSpeed анализе для мобилок сайт все еще находится в желтой зоне по производительности, там нужно копаться по неиспользуемому js коду скриптов метрик и yclients, а так же по жирному чанку css. Это, в основном, изначальные проблемы первичной реализации сайта компании.

Проблема N доменов: одно «ядро» и редирект заявки

Чтобы не отказываться от действующих ключевых доменов и не тащить в них лишнюю логику backend'а, выбрал следующую схему обработки:

  • на сателлитах остаётся минимум UI — в том числе кнопки заявки;
  • один домен выбран ядром — на него идёт основной трафик и обработка заявок;
  • при отправке с сателлита, если данные заполнены, пользователь уходит редиректом на корневый сайт, при необходимости с данными в хеше (или в query), после чего на ядре выполняется запрос отправки заявки уже в фоне на клиенте.

Эта схема помогает мне:

  • не дублировать секреты и API на N доменах;
  • централизовать логику и аналитику;
  • сохранить простую статику там, где она ещё нужна с низким приоритетом поддержки.
Процесс "переноса" трафика

О Telegram и внешних ограничениях

В моем кейсе заявки уходили только в Telegram, а доступ к мессенджеру у части аудитории нестабилен, форма на сайте перестаёт быть «достаточной» без резервного канала (почта, CRM, собственные уведомления на бэкенде). Перенос на полноценный Next с API — как раз про то, чтобы не зависеть от одного канала доставки.

Помимо всего прочего, в текущем БП есть реализация поддержки ИИ функций через api Openai, если Вы собираетесь использовать эти функции, то в БП уже заложена интеграция проксей, для обхода блокировок запросов в ИИ сервисы/шлюзы, при желании, можно отказаться от OpenAI и ходить, например, через ИИ провайдеров на подобии OpenRouter.

Заключение

Мультидоменная статика отлично подходит для быстрого захвата выдачи, но плохо масштабируется как продукт для бизнеса. Перенос готового лендинга в свой Next boilerplate оказался дешёвым по времени именно потому, что инфраструктура и админка уже были; самое интересное инженерно — схема с ядром и редиректом заявки, чтобы не плодить бэкенды по доменам.

Если тема зайдёт — во второй части можно развернуть обзор возможностей boilerplate отдельно (архитектура, модули, как подключаются новые сущности). В этой статье я хотел связать историю доменов, миграцию UI и практический трюк с трафиком в одну связную картину.

БП писал для своих нужд. MVP, мини продукты, сайт матур ковра вот, тоже был одной из причин. Я технарь, мне не интересны визуальные low/no-code решения. А еще у меня всегда основной затык - трафик, хотелось сделать готовый минимум, чтобы стартануть с реализацией только бизнес логики продукта, не пытаясь победить деплой/безопасность или SEO, теперь еще и GEO... Буду рад критике или любым другим комментариям. Спасибо, что дочитали.

Помогите понять. Интересно?
Да
Нет
1
Начать дискуссию