Главная
Все проекты

Первая кровельная

Бесшовная миграция десятилетнего корпоративного портала на современный стек технологий.

Роль

Lead Developer, Full-stack разработчик, SEO-специалист

Год

2023

Стек

Next.js App RouterReactTypeScriptStrapiPostgreSQLDockerDokployDocker HubZodReact Hook Form

Первая кровельная

Задача

Десятилетний PHP-портал был медленным и хрупким. Бизнесу нужна была современная платформа — без потери накопленного SEO-веса, сотен страниц контента и единого дня простоя.

Этапы

01

Логика и этапы реализации

🔍 1. Аудит legacy-системы и проектирование базы данных

  • Проанализировал 10-летний PHP-код, выявил и устранил критические уязвимости (включая захардкоженные в исходниках чувствительные данные).
  • Зафиксировал и сохранил всю структуру URL старого сайта, чтобы полностью исключить просадку SEO-трафика при переезде.
  • Спроектировал новую реляционную модель данных: связал сущности на уровне Strapi CMS и настроил базу PostgreSQL так, чтобы страницы услуг могли динамически выводить именно те объекты, где эти услуги применялись.
02

UI/UX рефакторинг и контентный апгрейд

  • Полностью ликвидировал хаос из навязчивых сторонних чатов, поп-апов и неуместных лоадеров старого сайта.
  • Разработал чистый, адаптивный интерфейс с фокусом на мобильную конверсию и удобную карту движения пользователя (CJM).
  • Структурировал накопленную за года базу объектов и организовал полный рерайт текстов для всех кейсов в портфолио.
03

Разработка фронтенда и рантайм-оптимизация

  • Перенес клиентскую часть на Next.js App Router с упором на Server Components для мгновенного рендеринга маркетинговых страниц.
  • Оптимизировал скорость загрузки с помощью динамического импорта (Dynamic Imports) для тяжелых блоков — например, для интерактивной карты проектов с динамической кластеризацией.
  • Обеспечил безопасность и отказоустойчивость клиентских форм, связав React Hook Form со строгой валидацией данных через Zod.
04

Автоматизация маркетинга и локальное SEO

  • Разработал модуль централизованного управления ценами: базовая стоимость услуги меняется в админке один раз и автоматически обновляет сайт.
  • Написал скрипт автоматической генерации YML-фидов для выгрузки актуального прайс-листа в геосервисы (Яндекс Бизнес, Яндекс Услуги, 2ГИС), что дало мощный буст поведенческим факторам и позициям в регионе.
05

Контейнеризация и современный DevOps

  • Полностью изолировал компоненты приложения, упаковав их в Docker-контейнеры.
  • Развернул self-hosted оркестратор Dokploy для удобного управления инфраструктурой.
  • Настроил бесшовный CI/CD пайплайн: при пуше код автоматически собирается в готовые образы на Docker Hub и деплоится на сервер без единой секунды даунтайма.

Процесс

Второе дыхание для legacy-портала

Миграция десятилетнего сайта — это как пересадка сердца пациенту прямо во время марафона.

Старый PHP-портал был медленным и хрупким, но стабильно приносил реальные заявки из поиска. Бизнесу требовалась современная платформа без единого дня простоя и малейшего риска потери накопленных SEO-позиций.


1. Стратегия и перепроектирование архитектуры

Мы начали с глубокого аудита контента. Старая структура была бережно сохранена и переложена в новые, логичные сущности внутри Headless CMS Strapi, к которой была подключена надежная база данных PostgreSQL.

Для улучшения поведенческих факторов, критически важных для органической выдачи, была разработана динамическая система таблиц с ценами:

  • Централизованное управление: базовая цена задается один раз и автоматически подтягивается на соответствующие страницы услуг.
  • Автоматическая синхронизация: эти же данные формируют динамический YML-файл, который обновляет прайс-листы на внешних площадках (2ГИС, Яндекс Бизнес и Яндекс Услуги).

2. Бескомпромиссная производительность

Новая платформа создавалась с максимальным упором на скорость загрузки и отзывчивость интерфейса. Фронтенд спроектирован на базе Next.js с использованием серверных компонентов (Server Components).

Чтобы максимально облегчить первоначальную загрузку:

  • Для тяжелых клиентских элементов применяется динамический импорт.
  • Каталог полностью работает на серверных роутах и стриминга NextJS

Результат: мучительные 4,2 секунды загрузки навсегда остались в прошлом.


3. Новый UI/UX и сложный функционал

Опираясь на бизнес-цели заказчика и конкурентный анализ рынка, мы выработали свежую цветовую схему, определили современную графику и полностью переработали карту движения пользователя (CJM).

Одной из ключевых фич стала интерактивная карта реализованных проектов с динамической кластеризацией объектов в зависимости от масштаба.

Магия под капотом: Я настроил глубокие реляционные связи между сущностями на уровне Strapi. Теперь, при заходе на страницу конкретной услуги, бэкенд автоматически собирает, возвращает и отображает именно те объекты, которые были реализованы в рамках этой услуги.

Результаты

4.2с → 1.5с

Общее время загрузки портала сократилось почти на 3 секунды.

LCP 1.8s

Выдающийся показатель Largest Contentful Paint на мобильных устройствах (Lighthouse). На десктопе показатели стремятся к нулю.

0s TBT и 0 CLS

Достигнуто полное отсутствие блокировки основного потока (Total Blocking Time) и сдвигов макета (Cumulative Layout Shift) на мобильных.

SEO Boost

Благодаря радикальному техническому улучшению сайта и ускорению отклика по Lighthouse, позиции сайта в органической выдаче заметно выросли.

Экраны