Tissura: интернет-магазин премиальных тканей на Laravel и Nuxt
Федеральная сеть салонов премиальных тканей переезжала со старого движка на собственную связку Laravel + Nuxt. Задача — сохранить позиции в поиске, ускорить каталог и собрать оплату, доставку и товарный учёт в один контур.
Результат в цифрах
Исходная ситуация
Каталог тканей живёт по своим правилам: у одной позиции десятки вариантов цвета и состава, покупателю нужен образец, а решение о покупке он принимает после консультации. Старый движок не тянул ни фасетный отбор по таким свойствам, ни быстрый поиск по коллекциям, ни нормальную выгрузку из 1С.
Отдельный риск — переезд: у сайта уже были позиции в поиске, и любая потеря адресов означала обнуление органического трафика.
Что сделали
Спроектировали интерфейс каталога и карточки товара под сложные свойства тканей, собрали фронтенд на Nuxt и бэкенд на Laravel, написали собственную админку — без привязки к готовой CMS, потому что ни одна не умеет работать с товарной матрицей такого размера.
Настроили обмен с 1С по товарам и остаткам, подключили оплату, доставку и подсказки адресов, а до релиза собрали карту переадресаций со всех старых URL.
Обмен с 1С по расписанию: цены, остатки и новые коллекции подтягиваются в каталог без выгрузок руками. Статус заказа меняется в учётной системе — покупатель видит изменение и получает письмо.
SEO-атрибуты наследуются: заполнил у раздела — у дочерних страниц подставилось. Ручная работа уходит только на верхний уровень каталога.
Премиальные ткани продаются не кнопкой «в корзину», а консультацией: покупателю важно понять состав, плотность, поведение в носке и то, как ткань выглядит при дневном свете. Интернет-магазин Tissura нужно было перестроить так, чтобы онлайн-каталог работал наравне с салоном — и при этом не потерять ни одной позиции, заработанной старым сайтом.
Клиент и контекст
Tissura — федеральная сеть салонов премиальных европейских тканей и фурнитуры с головными офисами в Санкт-Петербурге и Москве. Это не масс-маркет: ассортимент строится вокруг коллекций европейских производителей, а средний чек и цикл сделки заметно выше, чем в обычном интернет-магазине.
Каталог такой структуры плохо ложится в готовые решения. У одной ткани одновременно меняются состав, плотность, ширина, цвет и назначение — и покупатель ищет не «ткань», а «плотный хлопок шириной 150 см оттенка пыльной розы». Чем больше свойств, тем важнее, как именно каталог их показывает.
Задача: что не работало на старом сайте
- Каталог не держал товарную матрицу. Фасетный отбор по десяткам свойств на старом движке либо тормозил, либо не строился вовсе.
- Товарный учёт жил отдельно. Цены и остатки приходилось синхронизировать с 1С вручную, а значит — с задержкой и с ошибками.
- Поиск по каталогу не выручал. Покупатель, который знал артикул или название коллекции, уходил перебирать разделы.
- Переезд грозил потерей позиций. Смена движка без карты переадресаций означает, что все накопленные адреса отдают 404, а поисковая система заново пересобирает сайт с нуля.
- Оплата упиралась в один эквайринг. Сбербанк уходил на ЮKassa, и переход нужно было провести без остановки продаж.

Как мы подошли к решению
Мы не стали искать готовую CMS под эту задачу — под неё не подходит ни одна коробка. Вместо этого собрали собственную систему на связке Laravel (бэкенд и REST API) и Nuxt.js (фронтенд), упаковали всё в Docker и развели среду разработки и прода так, чтобы релиз не зависел от настроек конкретного сервера.
Дизайн начинали с чёрно-белого интерактивного прототипа: согласовывали информационную архитектуру и логику переходов, не отвлекаясь на цвет и декор. Премиальная эстетика подключалась уже на этапе визуального дизайна, когда структура была утверждена.
Своя админка вместо готовой CMS
Nuxt и Vuetify дали гибкий интерфейс управления: каталог, коллекции, свойства товаров и контентные страницы редактируются из одной панели. Кастомные поля позволили описать свойства тканей так, как они устроены в реальности, — без костылей вида «характеристика № 7».
Фасетный фильтр по сложным свойствам
Отбор построен на специализированной библиотеке фасетного поиска: покупатель последовательно сужает выборку по составу, цвету, плотности и назначению, а фильтр показывает, сколько позиций останется при каждом следующем клике. Это снимает главную боль каталогов с широкой матрицей — «нажал не то и получил пустую выдачу».

Интернационализация и версионирование API
Сайт работает с несколькими языковыми версиями: интерфейсные строки и контент переводятся на стороне фронтенда и бэкенда независимо. REST API версионирован — новые интеграции можно подключать, не ломая работающие.
Реализация: по шагам
Перенос данных со старой системы
Миграция включала заказы, товары, пользователей и историю. Переносили не «названия и цены», а всю структуру: категории, свойства, привязки и остатки — чтобы после релиза не пришлось вбивать каталог заново.
Обмен с 1С
Товары и остатки подтягиваются из учётной системы автоматически. Статус заказа меняется в 1С — покупатель видит актуальное состояние заказа и получает уведомление при изменении. Отдельная задача — корректная обработка позиций, которые есть у нескольких поставщиков: за это отвечает логика складов.

Оплата, доставка, адреса
Платёжный контур начинали на Сбербанке, а затем перевели на ЮKassa — собственной интеграцией по API, а не готовым модулем. Такой подход даёт полный контроль над сценариями: частичные возвраты, повторные попытки оплаты, нестандартные случаи. Доставку подключили через СДЭК, подсказки адресов — через DaData. Поиск по каталогу вынесли на внешний сервис, чтобы он не зависел от нагрузки на сайт.
Способы оформления заказа
Покупка возможна тремя путями: в один клик, через корзину и через видеоконсультацию с экспертом. Последний сценарий важнее, чем кажется: для премиального сегмента это способ снять возражения до оплаты — покупатель показывает задачу, ему подбирают ткань.

Тестирование и отладка
Проект вёл полный цикл тестов: unit и feature. Отправку транзакционных писем проверяли через MailHog — до прода это ловит все проблемы с шаблонами и очередями. Внутренние процессы Laravel отслеживали через Telescope, тесты запускали параллельно через Paratest.
Сохранить позиции при переезде
До релиза мы собрали структуру нового сайта и карту переадресаций со всех старых адресов. Это ключевая часть проекта с точки зрения SEO: смена движка сама по себе не снижает позиции — их снижает потеря URL. Каждая старая страница получила постоянный редирект на новую.

SEO-атрибуты с наследованием
У каждой сущности — раздела, коллекции, товара — есть свои SEO-поля, и они наследуются от родителя. Заполнять метатеги у тысяч товаров вручную не нужно: базовые значения приходят сверху, уникальные дописываются там, где это действительно влияет на выдачу.

Результат
Магазин переехал на новую платформу с сохранением всех старых адресов, а учётная система, оплата, доставка и поиск собрались в один контур. Каталог получил фасетный отбор, который не тормозит на широкой матрице, а редактор — панель, где свойства тканей описываются так, как они устроены в жизни.
Дальше проект живёт на поддержке: расширяем функциональность, добавляем новые сценарии покупки и обновляем контент.
Что забрали в другие проекты
- Прототип до визуала. Чёрно-белый интерактивный макет согласуется быстрее и снимает половину правок на этапе дизайна.
- Карта редиректов — до релиза, а не после. Это единственный способ переехать без просадки органики.
- Своя интеграция вместо готового модуля — там, где платёжные сценарии нестандартные.
Частые вопросы
Можно ли перенести интернет-магазин на новый движок без потери позиций в поиске?
Да. Условие — собрать карту 301-переадресаций со всех старых адресов до релиза и сохранить структуру разделов. В проекте Tissura это позволило перейти на Laravel и Nuxt, не потеряв накопленную органику.
Зачем писать свою CMS, если есть готовые?
Для широкой товарной матрицы со сложными свойствами готовые решения требуют костылей: свойства не помещаются в стандартную модель, фильтры тормозят, обмен с 1С обрастает доработками. Своя админка на Nuxt и Vuetify оказалась дешевле в поддержке, чем бесконечная доработка коробки.
Как устроен обмен с 1С в интернет-магазине тканей?
По расписанию: из учётной системы приходят товары, цены, остатки и новые коллекции, обратно уходят заказы. Покупатель видит изменение статуса заказа и получает письмо — без ручной выгрузки и сверки таблиц.
Разработка и доработка сайтов — направление, в рамках которого шёл проект. Если у вас похожая задача — напишите нам, разберём ваш случай и предложим решение.
Стек проекта
Услуги этого кейса
Дизайн сайтов
от 1 500 ₽
Создание сайтов под ключ
Условия на странице
Программирование и доработка сайтов
от 2 000 ₽
SEO-продвижение на фреймворке
от 40 000 ₽
Другие кейсы
Интеграция с Mindbox: единый профиль клиента вместо трёх баз
У ритейлера жили три несвязанные базы клиентов: сайт, 1С и офлайн. Мы провели очистку данных, написали собственный PHP SDK для…
Лендинг Kingster: презентация линейки снеков для партнёров
Производителю снеков нужна была витрина продукта для переговоров с дистрибьюторами: быстро, ярко, с интерактивной подачей линейки вкусов. Собрали промо-лендинг от…
Перенос «Мечты Гурмана» с самописной CMS на 1С-Битрикс
Магазин деликатесов работал на самописной CMS, которая не тянула развитие. Перенесли каталог целиком — товары, цены, остатки, бейджи и бренды…
Хотите такой же результат?
Начнем с аудита точек роста — покажем, где у вашего сайта утекает трафик.
Получить аудит точек роста →