DM Shop — обзор проекта
DM Shop — интернет-магазин электроники с полноценной админ-панелью. Система построена на микросервисной архитектуре: отдельный Spring Boot бэкенд, Next.js фронтенд и Python-мок внешнего поставщика.

Компоненты системы
| Компонент | Стек | Назначение |
|---|---|---|
| back/ | Spring Boot 4 / Java 21 | REST API, бизнес-логика, работа с БД |
| front/ | Next.js 16 / React 19 / TypeScript | Клиентская витрина и админ-панель |
| mock-api/ | Python FastAPI | Мок API склада mphone для разработки |
| PostgreSQL 15 | Docker | Основная реляционная база данных |
| SeaweedFS | Docker | S3-совместимое хранилище файлов/изображений |
Схема взаимодействия
Браузер (Next.js)
↕ REST / JSON (порт 3000 → 8080)
Spring Boot API
↕ JDBC/JPA
PostgreSQL (порт 45432)
↕ S3 API (порт 8333)
SeaweedFS
↕ HTTP (порт 8010)
mock-api / mphone API
Ключевые возможности
- Каталог товаров с категориями, брендами и атрибутами
- Корзина, избранное, недавно просмотренные и оформление заказов
- JWT-аутентификация с пятью ролями:
USER,EDITOR,MANAGER,ADMIN,SUPER_ADMIN - Загрузка и хранение изображений через S3 (медиатека)
- Синхронизация каталога из внешней системы mphone (по расписанию, каждые 5 минут)
- Загрузка атрибутов и изображений из XML-фида (Яндекс.Маркет YML) через многоэтапный пайплайн
- Автоматический парсинг изображений товаров с сайта поставщика (очередь + лог загрузок)
- Управление баннерами, преимуществами, отзывами, конфигурацией сайта
- Обработка заказов с передачей во внешнюю систему mphone и расчётом доставки
- Заявки с сайта (обратная связь) с защитой от спама
- Email-уведомления о новых заказах и заявках
- Учёт лицензии (баланс часов поддержки)
:::tip Часто задаваемые вопросы Если вы только знакомитесь с системой — загляните в раздел FAQ: там собраны ответы на типичные вопросы администраторов и разработчиков. :::
Раздел технической документации
| Документ | Содержание |
|---|---|
| Архитектура | Слои, паттерны, поток данных, фоновые задачи |
| Бэкенд | Spring Boot: контроллеры, сервисы, репозитории |
| База данных | Схема таблиц, миграции Liquibase |
| Безопасность | JWT, Spring Security, пять ролей и правила доступа |
| Синхронизация с mphone | Интеграция с mphone API, расписание, фоновые задачи |
| XML-пайплайн | Этапы загрузки фида, снепшоты, история запусков, переопределения картинок |
| Атрибуты из XML-фида | Staging-таблица и правила переименования атрибутов |
| Парсинг изображений | Очередь скрейпинга картинок с сайта поставщика, лог загрузок |
| Фронтенд | Next.js: страницы, Redux, API-клиент |
| Инфраструктура | Docker Compose, SeaweedFS, окружения |