WORK 01 · Featured
Маркетинговые сайты · Линейка коммерческих сайтов
Серия маркетинговых сайтов на block-CMS
Серия сайтов на одном каркасе: оффер и токены, не новый Django каждый раз.
Роль: Архитектура повторяемого каркаса
- 1 каркасна серию ниш
- 17–25типов блоков
- SEOв базовом слое
- −$на каждый следующий сайт
Задача
Каждый «дорогой сайт с нуля» снова оплачивает админку, формы, 404, sitemap и деплой. К третьей нише бюджет уходит в инфраструктуру, а не в оффер — команды копируют старый репозиторий вместе с долгом.
Результат
Контракт блоков, seed за минуты, SEO в base, один процесс gunicorn/nginx. Новый сайт — тема, набор блоков и тексты; платформа уже есть.
- Django
- PostgreSQL
- Whitenoise
- gunicorn
- nginx
Живой сайт
Экраны block-CMS
Админка, палитра блоков, токены ниш, SEO, лиды, деплой и серия витрин — каркас, не один лендинг.
Каркас окупается на серии
«Сайт как у дорогих брендов» — это админка, лиды, SEO и деплой. Если собирать с нуля каждый раз, маржа съедается инфраструктурой.
Это не кейс про один лендинг. Это продукт-каркас: второй и третий коммерческий сайт не оплачивают заново налог на Django. Ставка — окупиться уже на двух–трёх запусках в год: следующий платит за оффер и дизайн-токены, не за платформу.
Без каркаса к третьей нише команды копируют старый репозиторий вместе с багами, секретами и catch-all URL. Бюджет уходит в инфраструктуру, а не в то, что конвертит.
Если ниша одна и навсегда — каркас избыточен. Если линейка — он окупается раньше, чем кажется.
- Один позвоночник на серию ниш
- Новый сайт ≠ новый startproject
- Считать: стоимость каркаса / число ниш за год
Page + PageBlock как контракт
Редактор собирает экран из известных типов; разработчик добавляет тип один раз.
Page — slug, шаблон (home / service / contacts), SEO-поля. На странице — упорядоченные PageBlock: тип + JSON payload. Рядом SiteSettings, Lead с источником и seed, который поднимает рабочий каркас за минуты, а не «пустой Django».
Контент правится в админке, не через PR на каждый абзац. Inline-блоки, понятные русские названия типов, JSON только где нужны списки — с предсказуемой схемой. Иначе админка становится свалкой, и снова зовут разработчика «поменять порядок плиток».
Палитра, не page-builder
17–25 типов под воронку — свобода внутри контракта, не «любой дизайн из админки».
Типы заточены под услуговый и коммерческий лендинг: hero с формой, trust, плитки услуг, процесс, отзывы, карта, CTA, документы. Не сто конструкторов ради демо — набор, которым реально собирается сайт.
Сознательно не строили drag-and-drop page-builder и не выносили контент в headless без фронтенд-команды. Обещать «что угодно из админки» — способ убить дизайн и скорость правок одновременно.
- Без обязательного React «на вырост»
- Новый тип блока — один раз на серию
- Имена типов и схема payload — священны
Ниша = токены и payload
Фон, акцент, шрифты, набор блоков и копирайт — каркас один, форков пять не будет.
Услуговый B2B тянет sidebar и hero с формой; медиа и fashion наращивают доменные модели поверх того же принципа «страница = композиция блоков». Правило границы: пригодится следующей нише — в каркас; разовый эксперимент клиента — тема и payload.
Иначе через год получите пять несовместимых форков под видом «одной серии». Code review смотрит на переносимость: можно ли поднять другой бренд, не вырезая половину шаблонов.
SEO в позвоночнике
Canonical, OG, robots, sitemap в base — дёшево в каркасе, дорого после запуска рекламы.
SEO — слой платформы, не плагин «когда будет трафик». Приоритеты в sitemap у страниц; брендовая 404 с полезными ссылками — битый URL с рекламы не обязан быть тупиком.
Это то, что команды забывают в копипасте и вспоминают, когда уже льют бюджет. В каркасе оно поднимается вместе с seed.
Lead с источником
Без source сайт «красивый», но слепой: непонятно, что усиливать.
Контракт Lead (поля + источник) нельзя ломать между запусками — иначе ломается аналитика. Hero, CTA и контакты пишут, откуда пришла заявка. Фильтр в админке экономит часы разборов «откуда лид».
После релиза минимум наблюдаемости: логи, доступ к Lead, проверка форм и sitemap. «Сайт запущен» — это не только DNS, а живой конверсионный контур.
Деплой копируется
gunicorn, nginx, systemd, Whitenoise, миграции, seed — процесс, не папка с костылями.
Следующий сайт копирует рецепт запуска. Чеклист против типичных ловушек копипаста: старые slug и секреты, catch-all раньше префиксов, media/static в nginx, блок «только для клиента» вне реестра типов.
Один процесс деплоя на всю серию — часть продукта. Иначе каждый запуск снова изобретает прод и снова платит разработчиком за одну и ту же боль.
- settings_dev / prod и секреты через окружение
- Catch-all URL всегда последним
- Seed поднимает каркас, не пустой проект
Граница каркаса и кастома
Тот же service-шаблон, другой payload — пока это маркетинговая оболочка.
Длинная услуга собирается из той же палитры, что главная. Меняется акцент и тексты, не уникальная вёрстка на каждую нишу.
Когда появляются кабинет, очереди, биллинг или тяжёлый UGC — это другой класс продукта. Каркас остаётся для маркетинговых оболочек; доменные apps наращиваются рядом. Набить портал одними PageBlock — путь к нечитаемому JSON и боли редактора.
- Не универсальный page-builder ради демо
- Не headless без команды на фронт
- Не «любой дизайн из админки»
Итог
Итог
Block-CMS — способ продавать серию «дорогих» сайтов без серии инфраструктурных долгов. Редактор получает админку, бизнес — предсказуемый запуск, разработка — один позвоночник вместо зоопарка копий.
Следующий сайт платит за оффер и токены. Платформа, SEO, лиды и деплой уже куплены каркасом — если вы реально запускаете линейку, а не один лендинг навсегда.
Request this case
Соберём архитектуру под вашу задачу
Вакансии не рассматриваю. Создаю галеру. Лично — консультации и проектирование. Форм на сайте нет — пишите в Telegram или на почту.