Node.js monorepo with four parts:
apps/ingest-retailcrm- importmock_orders.jsoninto RetailCRMapps/sync-retailcrm-supabase- sync orders from RetailCRM to Supabaseapps/dashboard- Next.js dashboard with Material UIapps/telegram-bot- Telegram notifications for large orderspackages/shared- shared config, API clients, and data mappers
-
Fill the root
.envusing.env.example. If your RetailCRM account uses multiple stores, setRETAIL_CRM_SITE. -
Install dependencies:
npm install- Validate configuration:
npm run check:env- Import mock orders to RetailCRM:
npm run import:retailcrm- Sync orders from RetailCRM to Supabase:
npm run sync:supabase -- --from=2026-04-01 --to=2026-04-14- Run automatic Supabase sync every
10-50minutes:
npm run sync:supabase:watch- Start the dashboard:
npm run dashboard:dev- Start the Telegram watcher:
npm run telegram:watchThe Telegram watcher reads only newly synced orders from Supabase by synced_at.
More details are in docs/setup.md.
Коментарии
Основной промпт в режиме планирования Разработай Node.js проект (modular monorepo) из 4 сервисов. Общие настройки и ключи — в .env (корень). API-документация — в /docs.
- Импорт заказов в RetailCRM Есть mock_orders.json (≈50 заказов) Проанализируй структуру → предложи нормализованную схему БД Оформи документацию по БД Загрузи заказы в RetailCRM через API
- Синхронизация RetailCRM → Supabase Скрипт: выгрузка заказов из RetailCRM за период Сохранение в Supabase Допустимо использовать supabase/agent-skills
- Дашборд Веб-страница (Material Design) График заказов + фильтр по дате Источник данных — Supabase
- Telegram-бот Уведомление при новом заказе > заданной суммы Порог задаётся в .env Интеграция с Telegram Требования Чёткая структура папок README + инструкции запуска Типизация (по возможности) Логирование и обработка ошибок
После обсуждение вопросов. В основном про бд. Далее в режиме диалога по одной части за раз. Он спотыкнулся на том чтоб бот забирал данные из retailCRM, какбы не ошибка, но решил что лучше из supabase. Перенаправил его дав точные инструкции. Ну вот в документацию пытался рекомендованые константы запихнуть, ничего критичного там не было, но убрал.