Кастомный интернет-магазин и headless — витрина на TypeScript/Astro (или PHP), когда коробка не описывает воронку: свои цены B2B, странные комплекты, витрина, которой нужна скорость как у маркетингового сайта. Каталог и заказы при этом могут жить в 1С, в своём API или в CMS.
Не подходит, если хватает Битрикса или WooCommerce: headless дороже в эксплуатации. Не делаю «самописный ввод карты» и не прячу каталог в пустой SPA без HTML для поисковика.
На выходе: IA, карточки и листинги, корзина, оплата через ЮKassa или редирект-кассу, личный кабинет опта при необходимости, логи и staging. Остатки — из обмена с 1С. SEO витрины — серверный HTML, как на маркетинговых сайтах. Пример коммерческой витрины: euromoskitka.
Срок узкого MVP чаще 8–16 недель в зависимости от бэкенда и кассы.
Кастом имеет смысл, когда хотя бы одно из условий верно: чужие темы не держат Core Web Vitals на карточках; B2B-цены нельзя выразить модулем; нужна витрина, которую команда деплоит как обычное TypeScript-приложение. Иначе вы платите за уникальность, которую покупатель не видит. Деплой, секреты кассы, очередь обмена и откат релиза описываем в runbook. Дизайн «как в Figma до пикселя» без готовой дизайн-системы удлиняет срок — это честно закладываем, а не прячем в «под ключ».
На кастоме я закладываю админку ровно настолько, насколько команда будет ей пользоваться: карточки, заказы, статусы. Полноценный PIM «на всякий случай» раздувает срок. Платежи идут через виджет ЮKassa; корзина хранит только id предложений и цену с сервера, чтобы её нельзя было подменить в браузере. Тесты критичного пути — добавить в корзину, оплатить тестовой кассой, увидеть заказ в 1С или в админке — входят в приёмку, не в «потом напишем».

