Магазин упаковки, одноразовой посуды и хозтоваров на Океанском проспекте, 54 — торговый зал для розницы и оптовый отдел с доставкой по Владивостоку. Сайт устарел, а главное — прайс-лист жил во вложениях и мессенджерах: клиент просил цены, менеджер искал последнюю версию файла. Нужен был редизайн и одно место, где всегда лежит актуальный прайс — чтобы его можно было и скачать, и посмотреть онлайн.
Посмотрел, зачем на сайт приходят: узнать цену, заехать в магазин на Океанском, заказать доставку по городу. Каталог с корзиной здесь лишний — сайт собран вокруг прайс-листа и контактов.
Бумажная палитра, крупный дисплейный заголовок, моноширинные цифры. На главной прайс висит лентой чека — с настоящими позициями из файла, а не картинкой.
Excel-файл — рабочий документ компании, и менять эту привычку не стали. Менеджер загружает XLSX в админку, а сайт сам разбирает лист на категории и позиции.
Вход по логину и паролю, сессии хранятся в базе. Внутри — прайс-лист, товары, категории и партнёры: списки с поиском, массовыми действиями и загрузкой картинок.
Заголовки, условия доставки, режим работы, телефоны и адрес вынесены в отдельные текстовые файлы. Правка формулировки не требует лезть в вёрстку.
Сайт, база и веб-сервер собраны в один набор контейнеров. Образ собирается автоматически при обновлении кода, на сервере — HTTPS-сертификат. Всё уместилось в VPS с 1 ГБ памяти.
Админка — не витрина, а рабочее место менеджера: загрузить прайс, поправить карточку товара, добавить партнёра. Всё, что меняется чаще раза в год, вынесено из кода: цены живут в файле, тексты — в отдельных настройках, остальное — в базе.
Прайс ведут в Excel и будут вести дальше. Поэтому файл и есть источник: сайт не хранит копию цен, а каждый раз читает загруженный документ.
Загрузка. Менеджер кладёт свежий XLSX в админку. Прошлая версия удаляется вместе с файлом — на сайте всегда лежит одна, последняя.
Разбор. Сайт читает лист: строка без цены — заголовок категории, остальные — позиции. Артикул, продублированный в конце названия, убирается.
Таблица. Из разбора собирается страница прайса: 2 249 позиций, 242 категории и панель перехода к любой из них.
Лента. Тот же разбор даёт первые позиции для чека на главной — витрина и файл не могут разойтись.
«Прайс перестал быть вложением в письме. Менеджер загружает файл — и страница со ссылкой на скачивание, и таблица онлайн, и лента на главной обновляются вместе. Разработчик для этого больше не нужен.»