Интернет-магазин под ключ: от каталога до интеграций

Интернет-магазин клиента с каталогом на 20 000 SKU тормозил при каждом запросе. OpenCart-инсталляция на shared-хостинге с PHP 7.4 отдавала страницу каталога за 5 секунд — LCP составлял 8 секунд, половина пользователей уходили до загрузки. После миграции на PostgreSQL 15 с JSONB-атрибутами и подключе

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Интернет-магазин под ключ: от каталога до интеграций
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    983
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    997

Интернет-магазин клиента с каталогом на 20 000 SKU тормозил при каждом запросе. OpenCart-инсталляция на shared-хостинге с PHP 7.4 отдавала страницу каталога за 5 секунд — LCP составлял 8 секунд, половина пользователей уходили до загрузки. После миграции на PostgreSQL 15 с JSONB-атрибутами и подключения Elasticsearch 8.x время падения до 200 мс, CLS упал с 0.35 до 0.02. Так рождается правильный интернет-магазин — не шаблон, а архитектура, где каждая деталь влияет на скорость и конвейер заказов.

Разработка начинается не с выбора цвета кнопок, а с бизнес-модели: управление складом, ценообразование, логистика, маркетинг — всё должно быть согласовано до строки кода. Неправильный выбор стека на старте экономит время, но через год превращается в технический долг. Мы проводим бесплатный аудит и предлагаем оптимальные решения.

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

Как выбрать стек технологий для интернет-магазина?

Выбор стека решается исходя из трёх факторов: объём каталога, сценарии интеграций, планируемая нагрузка. Типовые варианты:

Сценарий Стек Обоснование
До 1 000 SKU, B2C, быстрый старт Shopify + кастомный фронт на Next.js Shopify берёт на себя платежи, хостинг, PCI DSS. Подписка от $29/мес.
1 000–50 000 SKU, сложные фильтры Laravel/Django + React/Vue, Elasticsearch Гибкость в модели данных, полнотекстовый поиск. Лицензия Elastic Platinum ~$2000/год.
Высоконагруженный маркетплейс Microservices, Kafka, отдельные сервисы корзины/заказов Масштабирование по компонентам.
B2B с личными кабинетами и прайс-листами Custom ERP-интеграция, контрактные цены Стандартные решения не закрывают логику ролей.

Для большинства проектов среднего размера оптимален монолит с чёткими границами модулей — быстрее в разработке, проще в поддержке.

Почему модель данных каталога критична?

Модель данных каталога определяет всё остальное. Распространённая ошибка — делать таблицу products с колонками color, size, material напрямую. Это работает до первого нестандартного товара. Правильный подход: EAV (Entity-Attribute-Value) или JSONB-атрибуты в PostgreSQL. Пример схемы:

products (id, sku, slug, base_price, status) product_variants (id, product_id, sku, price_delta, stock) variant_attributes (variant_id, attribute_id, value) attributes (id, name, type, filterable, sortable) 

Для каталогов с разнородными товарами (электроника + одежда + мебель) используем product types — каждый тип задаёт собственный набор атрибутов. Именно так работает Akeneo PIM, который подключается при каталогах от 10 000 SKU.

Поиск и фильтрация

Стандартный SQL-поиск LIKE '%запрос%' не годится даже для каталога на 500 позиций — нет релевантности, морфологии, синонимов. Опции:

  • PostgreSQL FTS с ts_vector — подходит до ~5 000 товаров, настройка под русский язык через ispell или hunspell
  • Elasticsearch — full-featured: нечёткий поиск, буст по полям, синонимы, перколятор для «похожих товаров». Согласно Elasticsearch Reference, агрегации позволяют вычислять количество документов для каждого значения фильтра.
  • Typesense — проще в эксплуатации, хорошо для небольших команд

Фильтры по атрибутам строим через агрегации Elasticsearch: пользователь видит только те значения фильтров, которые дадут ненулевой результат. Это faceted search — стандарт для ecommerce.

Как реализовать faceted search

  1. Определите атрибуты товаров, которые будут фильтрами (цена, бренд, размер).
  2. Создайте mapping для индекса с корректными типами (keyword, float).
  3. Проиндексируйте товары с их атрибутами.
  4. Выполните агрегации по каждому фильтру в одном запросе.
  5. На фронтенде отобразите агрегированные значения и обновляйте результаты при выборе фильтров.

Корзина и чекаут

Корзина — место, где теряется 60–80% конверсии. Критичные решения:

  • Гостевая корзина хранится в Redis с TTL 30 дней, при авторизации мержится с серверной. Без гостевой корзины регистрация становится барьером.
  • Чекаут в один экран статистически лучше многошагового для B2C. Для B2B наоборот — нужны шаги: реквизиты, адрес доставки, одобрение менеджера.
  • Расчёт доставки в реальном времени: API СДЭК, Boxberry, Nova Poshta, DHL. Ставки зависят от веса, габаритов, точки отправления — вычисляется на лету, не хранится в таблице.
  • Платёжный шлюз: Stripe для международных, CloudPayments / ЮKassa для РФ/СНГ, Fondy / WayForPay для Украины. Интеграция идёт через webhook-подтверждения, статус заказа меняется только после верификации подписи. Комиссия Stripe — 2.9% + 30¢ за транзакцию.

Управление заказами

Жизненный цикл заказа — конечный автомат (state machine). Состояния: draft → pending_payment → paid → processing → shipped → delivered → completed. Плюс боковые ветки: cancelled, refunded, on_hold. Библиотеки: winzou/state-machine для Laravel, xstate если часть логики на фронте. Каждый переход состояния — событие, которое тригерит уведомления (email, SMS, push), обновление склада, запись в лог.

Интеграции

Типовой набор для полноценного магазина:

  • 1С / МойСклад / Retailio — синхронизация остатков и цен через очередь (RabbitMQ/Redis Queue) с интервалом 5–15 минут
  • CRM (AmoCRM, HubSpot) — автоматическая передача заказов и лидов
  • Email-маркетинг (Klaviyo, Mailchimp, Sendpulse) — триггерные цепочки: брошенная корзина, постпродажа, реактивация
  • Аналитика: GA4 с Enhanced Ecommerce + серверный GTM для точных данных без влияния блокировщиков рекламы
Детальная схема интеграции с 1С Для обмена данными с 1С используем CommerceML (cml) — XML-формат. Создаётся очередь RabbitMQ, куда 1С отправляет изменения. Consumer на PHP/Laravel разбирает XML и обновляет базу. Обратная синхронизация заказов в 1С — через REST API. Все операции логируются для отладки.

Производительность и SEO

Страницы каталога должны кешироваться. Стратегия: stale-while-revalidate — отдаём кеш немедленно, обновляем в фоне. Redis для серверного кеша, CDN (Cloudflare) для статики. SEO-специфика ecommerce:

  • Канонические URL для страниц с фильтрами — без этого поисковики видят тысячи дублей
  • hreflang для мультиязычных магазинов
  • Schema.org разметка: Product, Offer, AggregateRating — влияет на rich snippets
  • Пагинация через rel="next"/"prev" или бесконечная прокрутка с SSR-рендером первого экрана

Что входит в работу

  • Техническое задание с описанием функциональности и интеграций
  • Прототипирование интерфейсов (Figma)
  • Разработка бэкенда с модулями каталога, корзины, заказов, личного кабинета
  • Фронтенд на современном стеке (React/Vue) с адаптивной вёрсткой
  • Интеграции с платёжными системами, службами доставки, складскими системами
  • Тестирование (unit, интеграционное, нагрузочное)
  • Деплой на продакшн и настройка мониторинга
  • Документация по администрированию
  • Поддержка после запуска (гарантия на исправление ошибок в течение месяца)

Сроки и этапы

Типовой интернет-магазин среднего масштаба (1 000–10 000 SKU, стандартный чекаут):

Этап Длительность
Аналитика и проектирование 2–3 недели
Бэкенд: каталог + корзина + заказы 4–6 недель
Фронтенд 4–6 недель
Интеграции (1С, платёжка, доставка) 2–4 недели
Тестирование и запуск 1–2 недели

Итого: 12–20 недель для полноценного проекта без готовых шаблонов. Проекты на Shopify с минимальными кастомизациями — 4–8 недель. Ключевой принцип: интернет-магазин запускается не тогда, когда готово всё, а когда готово достаточно для первых продаж. Остальное — итерации. Свяжитесь с нами для обсуждения деталей.