docs: обновлены README и описания всех компонентов на русском языке
- Корневой README обновлён с актуальной структурой и командами - 13 компонентных README с единым стилем: описание, фичи, скрипты, архитектура, тесты - Обновлены description в package.json всех компонентов - Новые README для cleos и setup (ранее отсутствовали) Co-authored-by: Alex Ant <dacom-dark-sun@users.noreply.github.com>
This commit is contained in:
@@ -1,135 +1,120 @@
|
|||||||
# Цифровой Кооператив
|
# Цифровой Кооператив
|
||||||
|
|
||||||
Система управления взаимоотношениями в кооперативе. Включает в себя полный комплект программного обеспечения для подключения к платформе "Кооперативная Экономика" и управления взаимоотношениями с пайщиками в кооперативе и самим кооперативом на основе смарт-контрактов и простой электронной подписи.
|
<!-- badges -->
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
## Ветки
|
Платформа «Цифровой Кооператив» — комплексное программное обеспечение для управления кооперативными организациями на основе блокчейна EOSIO. Система обеспечивает полный цикл управления кооперативом: от регистрации пайщиков и электронного документооборота до проведения собраний и финансового учёта. Построена на принципах прозрачности, децентрализации и простой электронной подписи.
|
||||||
|
|
||||||
- Для разработки используется ветка `dev`.
|
Проект является частью экосистемы [Кооперативная Экономика](https://coopenomics.world).
|
||||||
- Для стейджа используется ветка `testnet`.
|
|
||||||
- Для продакшена используется ветка `main`.
|
|
||||||
|
|
||||||
## Установка
|
## Архитектура
|
||||||
|
|
||||||
```sh
|
| Компонент | Пакет | Описание |
|
||||||
|
|-----------|-------|----------|
|
||||||
|
| [boot](components/boot) | `@coopenomics/boot` | CLI для инициализации и управления блокчейн-инфраструктурой |
|
||||||
|
| [cleos](components/cleos) | `@coopenomics/cleos` | Утилита командной строки для работы с блокчейн-кошельком |
|
||||||
|
| [contracts](components/contracts) | `@coopenomics/contracts` | Смарт-контракты EOSIO на C++ |
|
||||||
|
| [controller](components/controller) | `@coopenomics/controller` | GraphQL API сервер (NestJS) |
|
||||||
|
| [cooptypes](components/cooptypes) | `cooptypes` | Общие типы и интерфейсы блокчейн-контрактов |
|
||||||
|
| [desktop](components/desktop) | `@coopenomics/desktop` | Рабочий стол кооператива (Vue 3 + Quasar) |
|
||||||
|
| [factory](components/factory) | `@coopenomics/factory` | Генератор юридических документов |
|
||||||
|
| [migrator](components/migrator) | `migrator` | Утилита миграции данных |
|
||||||
|
| [notifications](components/notifications) | `@coopenomics/notifications` | Библиотека уведомлений на основе Novu |
|
||||||
|
| [parser](components/parser) | `@coopenomics/parser` | Индексатор блокчейна через State History Plugin |
|
||||||
|
| [sdk](components/sdk) | `@coopenomics/sdk` | TypeScript SDK для GraphQL API |
|
||||||
|
| [setup](components/setup) | `@coopenomics/setup` | Мастер первоначальной настройки |
|
||||||
|
|
||||||
|
## Быстрый старт
|
||||||
|
|
||||||
|
### Предварительные требования
|
||||||
|
|
||||||
|
- Node.js >= 20
|
||||||
|
- pnpm 9
|
||||||
|
- Docker и Docker Compose
|
||||||
|
- [WeasyPrint](https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation) (для генерации PDF)
|
||||||
|
|
||||||
|
### Установка
|
||||||
|
|
||||||
|
```bash
|
||||||
pnpm install
|
pnpm install
|
||||||
```
|
```
|
||||||
|
|
||||||
Также для работы потребуется установленная фабрика документов `weasyprint` для вашей операционной системы: <https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation>
|
### Конфигурация
|
||||||
|
|
||||||
## Конфигурация
|
```bash
|
||||||
|
|
||||||
Для конфигурации потребуетcя установленный `docker` и `docker-compose`. Выполните команду и следуйте инструкциям:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
pnpm run setup
|
pnpm run setup
|
||||||
```
|
```
|
||||||
|
|
||||||
## Запуск
|
Интерактивный мастер создаст необходимые `.env` файлы для всех компонентов.
|
||||||
|
|
||||||
### Инфраструктура
|
### Запуск инфраструктуры
|
||||||
|
|
||||||
Для работы системы необходимы базы `mongo`, `postgres` и `redis`.
|
```bash
|
||||||
|
|
||||||
Команда запуска баз данных в контейнерах для работы в фоновом режиме:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
pnpm run reboot
|
||||||
```
|
```
|
||||||
|
|
||||||
### Блокчейн и контракты
|
## Разработка
|
||||||
|
|
||||||
```sh
|
### Бэкенд (controller + parser)
|
||||||
pnpm boot
|
|
||||||
```
|
|
||||||
|
|
||||||
Команда запустит блокчейн и установит все смарт-контракты, подготовив систему к локальной разработке или применению.
|
```bash
|
||||||
|
|
||||||
### Бэкенд
|
|
||||||
|
|
||||||
```sh
|
|
||||||
pnpm run dev:backend
|
pnpm run dev:backend
|
||||||
```
|
```
|
||||||
|
|
||||||
Команда запустит набор сервисов бэкенда и точку доступа GraphQL-API на 2998 порту.
|
### Фронтенд (desktop)
|
||||||
|
|
||||||
### Фронтенд
|
```bash
|
||||||
|
|
||||||
Команда запустит рабочий стол кооператива на 3005 порту:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
pnpm run dev:desktop
|
pnpm run dev:desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
### Очистка базы
|
### Библиотеки (factory + cooptypes)
|
||||||
|
|
||||||
Команда очистит базу mongodb и начнет производство блоков с начала:
|
```bash
|
||||||
|
pnpm run dev:lib
|
||||||
```sh
|
|
||||||
pnpm run clear
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Правильная последовательность команд при переустановке проекта "с нуля":
|
### Все сервисы одновременно
|
||||||
|
|
||||||
```sh
|
```bash
|
||||||
git pull
|
pnpm run dev:all
|
||||||
pnpm install
|
|
||||||
pnpm run setup
|
|
||||||
pnpm run clear
|
|
||||||
pnpm run boot
|
|
||||||
pnpm run dev:backend
|
|
||||||
pnpm run dev:desktop
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Кошелёк
|
> **Примечание:** установка пакетов производится только через фильтр: `pnpm add <пакет> --filter <компонент>`
|
||||||
Для работы с кошельком блокчейна используется утилита cleos, которая позволяет извлекать таблицы смарт-контрактов и отправлять транзакции в блокчейн если это требуется.
|
|
||||||
|
|
||||||
Для работы с командным кошельком `cleos` локально необходимо чтобы инфраструктура была поднята:
|
## Тестирование
|
||||||
|
|
||||||
```
|
```bash
|
||||||
docker compose up -d
|
# Все тесты
|
||||||
|
pnpm run test
|
||||||
|
|
||||||
|
# Юнит-тесты (cooptypes, parser, notifications)
|
||||||
|
pnpm run test:unit
|
||||||
|
|
||||||
|
# Компонентные тесты (factory)
|
||||||
|
pnpm run test:component
|
||||||
|
|
||||||
|
# Интеграционные тесты (boot + blockchain)
|
||||||
|
pnpm run test:integration
|
||||||
```
|
```
|
||||||
|
|
||||||
Запускаем контейнер с кошельком и входим в него командой:
|
## Сборка
|
||||||
|
|
||||||
```
|
```bash
|
||||||
pnpm run cleos
|
# Библиотеки (cooptypes, factory)
|
||||||
```
|
pnpm run build:lib
|
||||||
|
|
||||||
В кошельке уже находится дефолтный ключ для работы с локальной средой. Этот ключ зашифрован паролем. Пароль хранится в файле `password` и используется автоматически при разблокировке. Для разблокировки кошелька, находясь в контейнере выполняем:
|
# Смарт-контракты
|
||||||
|
pnpm run build:contracts:all
|
||||||
|
|
||||||
|
# Desktop (SSR)
|
||||||
|
pnpm --filter @coopenomics/desktop run build
|
||||||
```
|
```
|
||||||
./unlock.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Для использования кошелька выполняем:
|
|
||||||
```
|
|
||||||
./cleos.sh <command>
|
|
||||||
```
|
|
||||||
|
|
||||||
Для получения полного списка команд вызываем кошелек без команд:
|
|
||||||
```
|
|
||||||
./cleos.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Например, для получения информации о текущем состоянии блокчейна:
|
|
||||||
```
|
|
||||||
./cleos.sh get info
|
|
||||||
```
|
|
||||||
|
|
||||||
### Возможные проблемы
|
|
||||||
В случае, если при выполнении ./unlock.sh возникает проблема:
|
|
||||||
`Unable to connect to keosd, if keosd is running please kill the process and try again`, то выполните команду:
|
|
||||||
|
|
||||||
```
|
|
||||||
./reset.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Данная команда удалит созданный ранее сокет кошелька, после чего, выполните ./unlock.sh повторно.
|
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
Продукт Потребительского Кооператива "ВОСХОД" распространяется по лицензии BY-NC-SA 4.0.
|
Продукт Потребительского Кооператива «ВОСХОД» распространяется по лицензии [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru).
|
||||||
|
|
||||||
Разрешено делиться, копировать и распространять материал на любом носителе и форме, адаптировать, делать ремиксы, видоизменять и создавать новое, опираясь на этот материал. При использовании, Вы должны обеспечить указание авторства, предоставить ссылку, и обозначить изменения, если таковые были сделаны. Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условиях той же лицензии , в соответствии с которой распространяется оригинал. Запрещено коммерческое использование материала. Использование в коммерческих целях – это использование, в первую очередь направленное на получение коммерческого преимущества или денежного вознаграждения.
|
Разрешено делиться, копировать и распространять материал, адаптировать и создавать производные произведения при условии указания авторства и сохранения той же лицензии. Коммерческое использование запрещено.
|
||||||
|
|
||||||
Юридический текст лицензии: <https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru>
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"packageManager": "pnpm@9.0.6",
|
"packageManager": "pnpm@9.0.6",
|
||||||
"description": "",
|
"description": "CLI-утилита инициализации блокчейна и кооператива",
|
||||||
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
||||||
"license": "",
|
"license": "",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
@@ -60,4 +60,4 @@
|
|||||||
"vite": "^5.2.11",
|
"vite": "^5.2.11",
|
||||||
"vitest": "^1.6.0"
|
"vitest": "^1.6.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
"name": "@coopenomics/cleos",
|
"name": "@coopenomics/cleos",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "",
|
"description": "Обёртка над кошельком cleos для EOSIO блокчейна",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"run": "./run.sh"
|
"run": "./run.sh"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@coopenomics/controller",
|
"name": "@coopenomics/controller",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "",
|
"description": "Бэкенд GraphQL API кооператива на NestJS",
|
||||||
"private": true,
|
"private": true,
|
||||||
"bin": "bin/createNodejsApp.js",
|
"bin": "bin/createNodejsApp.js",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
@@ -210,4 +210,4 @@
|
|||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "cooptypes",
|
"name": "cooptypes",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "_description_",
|
"description": "Shared TypeScript типы и интерфейсы экосистемы кооперативов",
|
||||||
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@coopenomics/desktop",
|
"name": "@coopenomics/desktop",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "A Desktop Project",
|
"description": "Рабочий стол кооператива — Vue 3 + Quasar Framework",
|
||||||
"productName": "Desktop App",
|
"productName": "Desktop App",
|
||||||
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -118,4 +118,4 @@
|
|||||||
"yarn": ">= 1.21.1"
|
"yarn": ">= 1.21.1"
|
||||||
},
|
},
|
||||||
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "@coopenomics/factory",
|
"name": "@coopenomics/factory",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "",
|
"description": "Фабрика юридических документов кооператива",
|
||||||
"author": "Alex Ant <chairman.voskhod@gmail.com>",
|
"author": "Alex Ant <chairman.voskhod@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://github.com/copenomics/@coopenomics/factory#readme",
|
"homepage": "https://github.com/copenomics/@coopenomics/factory#readme",
|
||||||
@@ -83,4 +83,4 @@
|
|||||||
"vitest": "^1.6.0"
|
"vitest": "^1.6.0"
|
||||||
},
|
},
|
||||||
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "migrator",
|
"name": "migrator",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "",
|
"description": "Утилита миграции данных между версиями",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
@@ -26,4 +26,4 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.7.4"
|
"@types/node": "^22.7.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@coopenomics/notifications",
|
"name": "@coopenomics/notifications",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"description": "Typesafe notification workflows library for Novu",
|
"description": "Библиотека типобезопасных workflow-уведомлений для Novu",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": false,
|
"private": false,
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"private": false,
|
"private": false,
|
||||||
"packageManager": "pnpm@9.0.6",
|
"packageManager": "pnpm@9.0.6",
|
||||||
"description": "",
|
"description": "Индексатор блокчейна через State History Plugin",
|
||||||
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://github.com/copenomics/cooparser#readme",
|
"homepage": "https://github.com/copenomics/cooparser#readme",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"private": false,
|
"private": false,
|
||||||
"packageManager": "pnpm@9.9.0",
|
"packageManager": "pnpm@9.9.0",
|
||||||
"description": "",
|
"description": "TypeScript SDK для работы с API кооператива",
|
||||||
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
@@ -77,4 +77,4 @@
|
|||||||
"vitest": "^2.0.5"
|
"vitest": "^2.0.5"
|
||||||
},
|
},
|
||||||
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
"gitHead": "b05c17bee481d90c4cd82aa2a34ac428f8263a5f"
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "@coopenomics/setup",
|
"name": "@coopenomics/setup",
|
||||||
"version": "2026.2.22-2",
|
"version": "2026.2.22-2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "",
|
"description": "Интерактивный мастер настройки окружения",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"setup": "esno ./setup.ts"
|
"setup": "esno ./setup.ts"
|
||||||
@@ -19,4 +19,4 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/inquirer": "^9.0.7"
|
"@types/inquirer": "^9.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user