Сайт был красивым, но неподвижным: каждая правка текста, картинки или описания для поисковиков шла через разработчика и новую сборку. Нужно было отдать сайт команде целиком — вместе с настройками для поиска и общим оформлением.
Клиент пришёл с готовым сайтом и макетами. Я разобрал вёрстку на блоки и составил карту: что на каждой странице должно стать полем, которое клиент меняет сам — заголовок, текст, картинка, плашка, карточка.
Спроектировал структуру админки: 14 типов контента. Внутрь уехали не только тексты страниц, но и меню, подвал, ссылки и мелкие служебные подписи вроде «Показать ещё».
Страница стала набором блоков: их можно переставлять, копировать и собирать из них новые страницы. Чтобы выпустить ещё один лендинг, разработчик больше не нужен.
Цвета, шрифты и отступы вынесены в отдельный раздел админки. Меняешь их в одном месте — обновляется весь сайт сразу.
Блог с категориями, тегами и авторами. Свёрстан один в один по макетам; в редакторе статей есть таблицы, картинки и вставные блоки, а на выходе — лента для читалок и подписок.
Страницы отдаются посетителю мгновенно, из готового кэша. После правки в админке сайт сам пересобирает только то, что изменилось. Черновик можно посмотреть до публикации.
Между админкой и сайтом стоит один слой-переводчик: он забирает данные из Strapi, подбирает нужный язык и отдаёт странице всё уже готовым. Вёрстка не знает, откуда пришёл текст, — поэтому новое поле в админке появляется на сайте без правок в коде.
Отдельный CLI-скрипт переводит сайт целиком: английская версия — эталон, остальные локали догоняют её автоматически.
Снимок. Скрипт забирает из админки английскую версию текстов и сохраняет её как образец.
Сравнение. Новый снимок сравнивается с прошлым — в работу уходят только те строки, которые правда изменились.
Перевод. Изменения уходят в языковую модель одним пакетом, структура текстов при этом сохраняется.
Раскладка. Готовые переводы возвращаются в админку по своим языкам — сайт подхватывает их сам.
«На сайте не осталось компонента, который нельзя поменять из админки. Тексты, порядок блоков, мета-теги, цвета и отступы уехали в CMS — сайт перестал быть хардкодом и стал продуктом, который команда ведёт сама.»