# MONO

Система управления взаимоотношениями в кооперативе. Включает в себя полный комплект программного обеспечения для подключения к платформе "Кооперативная Экономика" и управления взаимоотношениями с пайщиками в кооперативе и самим кооперативом на основе смарт-контрактов и простой электронной подписи.

## Ветки

- Для разработки используется ветка `dev`.
- Для стейджа используется ветка `testnet`.
- Для продакшена используется ветка `main`.

## Установка

```sh
pnpm install
```

Также для работы потребуется установленная фабрика документов `weasyprint` для вашей операционной системы: <https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation>

## Конфигурация

Для конфигурации потребуетcя установленный `docker` и `docker-compose`. Выполните команду и следуйте инструкциям:

```sh
pnpm run setup
```

## Запуск

### Инфраструктура

Для работы системы необходимы базы `mongo`, `postgres` и `redis`.

Команда запуска баз данных в контейнерах для работы в фоновом режиме:

```sh
docker compose up -d
```

### Блокчейн и контракты

```sh
pnpm boot
```

Команда запустит блокчейн и установит все смарт-контракты, подготовив систему к локальной разработке или применению.

### Бэкенд

```sh
pnpm run dev:backend
```

Команда запустит набор сервисов бэкенда и точку доступа GraphQL-API на 2998 порту.

### Фронтенд

Команда запустит рабочий стол кооператива на 3005 порту:

```sh
pnpm run dev:desktop
```

### Очистка базы

Команда очистит базу mongodb и начнет производство блоков с начала:

```sh
pnpm run clear
```

Правильная последовательность команд при переустановке проекта "с нуля":

```sh
git pull
pnpm install
pnpm run setup
pnpm run clear
pnpm run boot
pnpm run dev:backend
pnpm run dev:desktop
```

### Кошелёк
Для работы с кошельком блокчейна используется утилита cleos, которая позволяет извлекать таблицы смарт-контрактов и отправлять транзакции в блокчейн если это требуется. 

Для работы с командным кошельком `cleos` локально необходимо чтобы инфраструктура была поднята:

```
docker compose up -d
```

Запускаем контейнер с кошельком и входим в него командой:

```
pnpm run cleos
```

В кошельке уже находится дефолтный ключ для работы с локальной средой. Этот ключ зашифрован паролем. Пароль хранится в файле `password` и используется автоматически при разблокировке. Для разблокировки кошелька, находясь в контейнере выполняем:

```
./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.

Разрешено делиться, копировать и распространять материал на любом носителе и форме, адаптировать, делать ремиксы, видоизменять и создавать новое, опираясь на этот материал. При использовании, Вы должны обеспечить указание авторства, предоставить ссылку, и обозначить изменения, если таковые были сделаны. Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условиях той же лицензии , в соответствии с которой распространяется оригинал. Запрещено коммерческое использование материала. Использование в коммерческих целях – это использование, в первую очередь направленное на получение коммерческого преимущества или денежного вознаграждения.

Юридический текст лицензии: <https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru>
