Разработка сайта
Собственный сайт агентства WAIMA на статическом генераторе
Описание проекта
Текущий сайт агентства WAIMA работает на WordPress с темой Avada — 33 страницы услуг по SEO и 31 кейс в портфолио. Агентство готовит переезд на новый сайт собственной разработки: он собран самописным генератором на Node.js без внешних зависимостей — данные и шаблоны на входе, статические файлы `dist/` на выходе, которые можно выложить на любой хостинг.
Портфолио перенесено с прежнего сайта: 37 кейсов выгружены и разложены по единой структуре, картинки проектов пересобираются отдельным скриптом на Pillow. Точечные правки контента, которые должны пережить повторную выгрузку, хранятся отдельно от исходной выгрузки, в объекте `overrides`.
Центральная часть сайта — посадочные страницы услуг, которые собираются автоматически на пересечении осей таксономии: направление продвижения (SEO, создание сайта, редизайн), тип сайта, CMS, тематика. Страница создаётся только если под неё есть достаточно кейсов, а более узкая (дочерняя) страница — только если добавляет кейсы сверх родительской; так исключаются пустые и дублирующие друг друга страницы. Каждый кейс автоматически ссылается на 3–6 подходящих посадочных страниц.
Сборка поддерживает два режима: превью-выкладка с `noindex` в мета-тегах и заголовке `X-Robots-Tag`, без `sitemap.xml` — и боевая сборка с полноценной индексацией. Пока сайт не готов к запуску, его выкладывают только превью-режимом, чтобы не получить дубли контента с работающим waima-russia.ru — тексты кейсов и части посадочных переписаны с него же.
Итого генератор на момент подготовки кейса собирает 105 страниц: главную, список кейсов с фильтрами, 37 страниц кейсов, хаб услуг и 62 посадочные страницы услуг, плюс несколько заглушек для разделов, которые ещё не готовы (цены, о нас, контакты).
Задачи
- Перевести сайт агентства с WordPress/Avada на собственную статическую платформу.
- Перенести и разложить по единой структуре портфолио из 37 кейсов.
- Построить масштабируемую систему посадочных страниц услуг без ручного дублирования контента.
- Исключить дорвей-страницы: не создавать разделы без достаточного числа кейсов или без кейсов, каких нет у родительской страницы.
- Автоматически генерировать sitemap.xml, robots.txt и .htaccess, привязанные к одному месту настройки домена.
- Не допустить попадания недоделанного сайта в индекс поисковиков до готовности.
Что сделали
- Написали генератор `build.mjs` на Node.js без внешних зависимостей: данные и шаблоны на входе, статический `dist/` на выходе.
- Построили систему посадочных страниц на пересечении осей таксономии (`taxonomy.mjs`, `landings.mjs`): хаб услуг, страницы по направлению, по направлению и типу сайта/CMS/тематике — с двумя правилами против пустых и дублирующих страниц.
- Перенесли портфолио — 37 кейсов, с автоматической перелинковкой на 3–6 релевантных посадочных страниц у каждого (`landingsForProject`).
- Настроили подготовку изображений проектов отдельным Python-скриптом на Pillow.
- Сделали локальный сервер для просмотра сборки и `deploy.sh` для выкладки на Бегет — с превью-режимом (noindex, без sitemap) и боевым.
- Автоматизировали генерацию `sitemap.xml`, `robots.txt` и `.htaccess` (канонический домен, редиректы на https и без www) из одной точки настройки — `site.origin`.
Результат
Генератор на текущий момент собирает 105 страниц: главную, каталог кейсов с фильтрами, 37 кейсов, хаб услуг и 62 посадочные страницы услуг. Сайт выложен только в превью-режиме (закрыт от индексации), поскольку часть контента переписана с работающего waima-russia.ru и публикация в боевом режиме дала бы дубли — на боевой домен сайт переключат, когда контент будет готов.
