АРТстиль: интернет-магазин рекламного агентства с обменом с 1С
- Языка витрины
- 3
- Валюты
- 4
- Миграция
- WordPress → Next.js
Задача
Заменить WordPress-сайт рекламного агентства собственным магазином: товары с ценой — в корзину и заказ, услуги с ценой «от» — в заявку, а все заказы и заявки — в 1С.
Решение
pnpm-монорепозиторий: Next.js 16 (App Router) и REST API на NestJS 11 с PostgreSQL и Prisma; заказы и заявки уходят в 1С и на почту через transactional outbox; Docker Compose и Nginx на одной облачной VM с ночными бэкапами.
Архитектура
В каталоге два типа позиций. Товары с ценой, например каждый дорожный знак, попадают в корзину и становятся заказом; услуги с ценой «от» или по расчёту оформляются заявкой с удобными клиенту способами связи. Витрина на русском, румынском и английском с языковым префиксом в каждом адресе, а при первом заходе язык выбирается по cookie, стране посетителя и настройкам браузера. Цены показываются в четырёх валютах по курсу национального банка, итог всегда пересчитывает сервер.
Заказ или заявка записываются вместе с событием outbox в одной транзакции, а фоновый обработчик доставляет их в 1С и на почту с повторами и паузами между попытками, поэтому ничего не теряется, даже если 1С временно недоступна. В админке — каталог с фото и видео, заказы, заявки, клиенты и реквизиты, цвета сайта и состояние обмена с 1С с ручным повтором. Покупатели могут входить через Google и вести избранное.
Проект работает в Docker Compose за Nginx на одной облачной VM. База и загруженные файлы каждую ночь копируются в бэкап, в том числе в Google Drive, и есть инструкция по восстановлению всего сайта на другом сервере.
