65a2b5361c
- AGENTS.md: development instructions for Cursor Cloud agents - docker-compose.override.yaml: pin postgres:16 (postgres:latest v18+ breaks with current volume config) Co-authored-by: Alex Ant <dacom-dark-sun@users.noreply.github.com>
4.2 KiB
4.2 KiB
AGENTS.md
Cursor Cloud specific instructions
Обзор проекта
Это pnpm-монорепозиторий «Цифровой Кооператив» (monocoop) — платформа управления кооперативами на блокчейне EOSIO. Основные компоненты находятся в components/.
Ключевые сервисы
| Компонент | Порт | Тип | Описание |
|---|---|---|---|
| controller | 2998 | NestJS GraphQL API | Бэкенд, основной API |
| desktop | 3005 | Vue 3 + Quasar SSR | Фронтенд |
| parser | 4000 | Blockchain parser | Индексация событий блокчейна |
| node (Docker) | 8888 | EOSIO blockchain | Нода блокчейна |
| mongo (Docker) | 27017 | MongoDB | Основная БД |
| redis (Docker) | 6379 | Redis | Кэш и стримы |
| postgres (Docker) | 5432 | PostgreSQL | Реляционная БД |
Запуск инфраструктуры
- Docker-сервисы:
docker compose up -dиз корня (используетdocker-compose.yaml+docker-compose.override.yaml).- Важно:
postgres:latest(v18+) не работает с текущей конфигурацией volume. Используйтеdocker-compose.override.yamlсimage: postgres:16.
- Важно:
- Bootstrap системы: Команда
pnpm run bootсоздаёт совет только с 1 членом, но смарт-контракт требует минимум 5. Используйтеpnpm --filter @coopenomics/boot run boot:extraдля полной инициализации с расширенным советом (5 членов). - Перед boot нужно собрать shared-библиотеки:
cooptypes,factory,sdk,notifications(см. ниже). - Перед boot нужно собрать смарт-контракты:
cd components/contracts && bash build-all.sh.
Сборка shared-библиотек (порядок зависимостей)
pnpm --filter cooptypes run build
pnpm --filter @coopenomics/factory run build
pnpm --filter @coopenomics/sdk run build
pnpm --filter @coopenomics/notifications run build
Конфигурация окружения
Каждый сервис требует .env файл, скопированный из .env-example:
components/controller/.env— нуженVAPID_PUBLIC_KEYиVAPID_PRIVATE_KEY(генерируются:node -e "const wp = require('web-push'); const k = wp.generateVAPIDKeys(); console.log(k)"из папки controller)components/desktop/.envcomponents/parser/.envcomponents/boot/.env
Dev-команды
- Все сервисы:
pnpm run dev:all(через lerna) - Бэкенд:
pnpm run dev:backend(controller + parser) - Фронтенд:
pnpm run dev:desktop - Библиотеки (watch):
pnpm run dev:lib
Линтинг и тесты
- controller:
pnpm --filter @coopenomics/controller run lint(eslint),pnpm --filter @coopenomics/controller run test(jest) - sdk:
pnpm --filter @coopenomics/sdk run lint/pnpm --filter @coopenomics/sdk run test(vitest) - factory:
pnpm --filter @coopenomics/factory run lint/pnpm --filter @coopenomics/factory run test(vitest) - desktop:
pnpm --filter @coopenomics/desktop run lint
Gotchas
- Node.js v20 обязателен (Dockerfile использует
node:20-slim). v22 не тестировался. - pnpm v9.x (не v10). В проекте
packageManager: pnpm@9.9.0. - Установка пакетов через фильтр:
pnpm add <pkg> --filter <component>. components/boot/wallet-data/иcomponents/boot/blockchain-data/создаются Docker'ом от root — может потребоватьсяsudo chown.- Скрипты
reboot.sh/extra_reboot.shизcomponents/boot/scripts/вызываютdocker composeиз своей директории, где нетdocker-compose.yaml— работают только если Docker Compose находит конфигурацию выше по дереву.