Система приёма заявок для ~300 клиентов (юр. лиц): индивидуальные цены из 1С, Excel-выгрузка, панель менеджеров, механики вовлечения.
Документация внешнего обмена: docs/1c-integration.md.
| Папка | Описание | Dev-порт |
|---|---|---|
backend/ |
Node.js + Express + Prisma (REST API) | 3001 |
miniapp/ |
React + Vite + Tailwind (Mini App клиента) | 5173 |
dashboard/ |
React + Vite + Tailwind (панель менеджера) | 5174 |
Backend раздаёт собранные фронтенды — всё доступно на одном порту:
http://localhost:3001/→ Mini App (клиент)http://localhost:3001/manager→ панель менеджераhttp://localhost:3001/api→ REST API
# собрать фронтенды, затем backend отдаёт их сам
cd miniapp; npm run build
cd ..\dashboard; npm run build
cd ..\backend; npm run dev # всё на http://localhost:3001Раздельные dev-порты (5173/5174) нужны только для горячей перезагрузки во время разработки фронтенда. Для демо/прод используйте единый порт выше.
- Backend: Express, Prisma (ORM), JWT, ExcelJS, node-cron, BullMQ (заглушка)
- БД: SQLite (локально) → PostgreSQL при деплое (см. ниже)
- Frontend: React 18, Vite, Tailwind CSS v4, React Query, Zustand (корзина)
cd backend
npm install
npx prisma migrate dev # создаёт SQLite-базу
node prisma/seed.js # тестовые данные
npm run dev # http://localhost:3001cd miniapp
npm install
npm run dev # http://localhost:5173cd dashboard
npm install
npm run dev # http://localhost:5174/manager/login- Админ:
admin@bakery.ru/admin123 - Менеджер:
manager@bakery.ru/manager123 - Клиенты: ООО «Магнит» (ИНН 7725123456), ИП Иванов (ИНН 5018123456)
- Авторизация: Макс Mini App (HMAC-подпись) + JWT, логин менеджера
- Каталог с индивидуальными ценами клиента
- Корзина (Zustand + localStorage) и создание заказа
- Система лояльности (начисление/списание, лимит 20%) — параметры в
orderService.js - Панель менеджера: заказы (фильтры, смена статуса), клиенты, синхронизация
- Excel-выгрузка (лист «Заказы» + «Сводка по клиентам») через ExcelJS
- Уведомления через Max Bot API (заглушка при пустом
MAX_BOT_TOKEN) - Cron: синхронизация цен (каждые 2 ч), напоминания по паттерну (09:00)
DATABASE_URL="file:./dev.db" # локально SQLite
JWT_SECRET="..."
MAX_BOT_TOKEN="" # токен бота Макс (для пушей и авторизации)
PORT=3001
- В
backend/prisma/schema.prismaзаменитьprovider = "sqlite"→"postgresql", вернуть типы@db.Decimal,@db.Text,Json @db.JsonB(см. историю git). DATABASE_URL="postgresql://..."в.env.docker compose up -d(поднимает Postgres + Redis), затемnpx prisma migrate dev.
Формат интеграции с 1С, возврат заказов в 1С, дедлайн приёма заказов, роли менеджеров, онбординг клиентов, фото товаров, логика даты доставки.
Актуальный путь к боевому пилоту описан в docs/production-pilot.md.
Ключевые изменения pilot-контура:
- база данных: PostgreSQL;
- деплой: Docker Compose + nginx;
- первый обмен с 1С: ручное скачивание XML из заказа;
- цены: ежедневная загрузка файла 1С и привязка клиента к ценовой категории;
- demo seed запрещён в production, первого администратора создаёт
npm run admin:create.