Демо-проект

Магазин 3D-печати: PrintCraft

Каталог с вариантами цвета, страница печати на заказ, корзина.

разработка · Next.js 15 · TypeScript · Tailwind · Zustand

Открыть демо

17страниц в статическом экспорте
9товаров в каталоге, три категории
5 цветовпластика, свотчи в карточке товара
до 12 симв.имя для гравировки ночника, обязательно
без серверастатический экспорт, хостится где угодно
Первый экран демо: Магазин 3D-печати: PrintCraft

Задача

PrintCraft - мастерская 3D-печати: печатает на Bambu Lab из PLA и PETG вещи для дома, рабочего стола и детей, плюс берёт печать на заказ по моделям клиентов. Такому бизнесу нужен интернет-магазин 3D-печати, а не витрина в соцсетях: каталог с выбором цвета пластика, корзина, оформление заказа и отдельная страница для заявок «напечатайте по моей модели». Отдельная сложность - именной ночник-литофан: без поля для имени ребёнка мастерская просто не узнает, что печатать. Демо-проект: компания вымышленная, задача типовая и настоящая.

Решение

Формат - тактильный минимализм, «скандинавская лавка»: светлый тёплый фон, предмет как герой, фото товара на однотонной плашке, один терракотовый акцент. Карточки без рамок и теней - внимание на вещи, а не на интерфейсе. Технически это Next.js 15 со статическим экспортом: на выходе обычные HTML-страницы, хостятся где угодно, сервера не требуют.

  • Каталог фильтруется по трём категориям на клиенте, без перезагрузки; счётчик показывает, сколько вещей видно.
  • Свотчи цвета пластика прямо в карточке. Выбранный цвет входит в ключ позиции корзины: одно кашпо в мяте и в терракоте - две разные строки, а не одна с количеством 2.
  • Именной ночник - персонализируемый товар: обязательное поле имени до 12 символов, значение хранится в позиции корзины и повторяется в оформлении заказа, чтобы покупатель проверил его перед печатью.
  • Корзина на Zustand с persist в localStorage - переживает закрытие вкладки. Счётчик в шапке рендерится только после mount: иначе статический HTML и клиент разошлись бы при гидрации.
  • Страница печати на заказ: три шага (модель или идея, расчёт в течение дня, печать за 3-5 дней) и форма заявки.
  • Инфографика собрана из inline SVG-компонентов: схемы габаритов товара, сравнение PLA и PETG, таймлайн доставки. Каждая крупная цифра со страницы объяснена визуально.

Детали, которые легко не заметить

  • Маска телефона в оформлении заказа смотрит на язык браузера: русскоязычным и родственным локалям - формат +7, остальным - +1. Локаль определяется после mount, иначе ломается гидрация экспорта.
  • Поле гравировки размечено честно: aria-invalid при ошибке, текст подсказки через aria-describedby, предупреждение «после запуска печати изменить имя не получится».
  • В FAQ прописан возврат по ст. 26.1 закона «О защите прав потребителей»: 7 дней на отказ, а именной ночник возврату не подлежит - изготовлен по индивидуальному заказу. Обещания страницы сверены между собой: крючки «держат до 5 кг» одинаково в карточке и в FAQ.
  • Юридическая гигиена демо: страница-дисклеймер «мастерской PrintCraft не существует», robots noindex в metadata и файл _headers с X-Robots-Tag: noindex - экспорт не конкурирует в поиске с реальными магазинами.
  • Согласие на обработку персональных данных - обязательный чекбокс со ссылкой на отдельную страницу политики, в обеих формах.
  • prefers-reduced-motion гасит анимации, переходы и плавный скролл до 0,01 мс.

Цифры

Всё посчитано по исходникам и статическому экспорту: 17 страниц, 9 товаров в трёх категориях, 5 цветов пластика. Корзина и формы живут на клиенте, поэтому магазин разворачивается как набор статических файлов - без сервера и его расходов.