diff --git a/.gitignore b/.gitignore index 403ddea..86a4d68 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,6 @@ server/data/docker server/datasources.json server/config.json server/storage/* +server/data/mysql/wb-model.mwb.bak client/dist test.js -docs/* \ No newline at end of file diff --git a/README-ru.md b/README-ru.md index c5b622c..a859c66 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,20 +1,13 @@ -![OnePlace](/client/static/img/logo_hub.png) +# ![OnePlace](/client/static/img/logo_hub.png) -OnePlace - это web-приложение для взаимодействия с блокчейнами [Steem](https://github.com/steemit/steem) и [Golos](https://github.com/GolosChain/golos). В качестве основы были использованы такие технологии как [Vue](https://vuejs.org) с [SSR](https://ssr.vuejs.org/ru/) модулем для клиентской части проекта и [LoopBack](https://loopback.io/) для реализации серверной составляющей. +Oneplace - это web-приложение для взаимодействия с блокчейнами [Steem](https://github.com/steemit/steem) и [Golos](https://github.com/GolosChain/golos). В качестве основы были использованы такие технологии как [Vue](https://vuejs.org) с [SSR](https://ssr.vuejs.org/ru/) модулем для клиентской части проекта и [LoopBack](https://loopback.io/) для реализации серверной составляющей. Детально цели проекта описаны в [документе WhitePaper](./client/static/whitepaper_ru.pdf). -## Установка - -#### Клонирование репозитория и установка npm модулей +## Начало работы -```bash -git clone git@github.com:OnePlace-media/oneplace.git -cd oneplace && npm i -``` +Данная инструкция ориентирована на пользоватлей linux с debian дистрибутивами. Для запуска приложения потребуется установить следующие зависимости: -#### Установка зависимостей -Данная инструкция ориентирована на пользоватлей linux с debian дистрибутивами. +### NodeJS -##### NodeJS Установите NodeJS, мы рекомендуем использовать [**LTS version**](https://nodejs.org/en/) и [**nvm**](https://github.com/creationix/nvm) для установки: ```bash @@ -22,97 +15,133 @@ nvm install 8.9.4 nvm use 8.9.4 ``` -OnePlace является комплексным решением и имеет дополнительный функционал над обоими блокчейнами. Вам необходимо установить базы данных [mysql](https://www.mysql.com/) и [redis](https://redis.io/download). Используйте [Docker Compose](https://docs.docker.com/compose/) с нашим [docker-compose.yml](./docker-compose.yml) или установите в ручном режиме: +### Базы данных -##### MySQL -```bash -sudo apt-get update -sudo apt-get install mysql-server -``` +OnePlace является комплексным решением и имеет дополнительный функционал над обоими блокчейнами, приложение имеет собственные хранилища. Вам необходимо установить базы данных [mysql](https://www.mysql.com/) и [redis](https://redis.io/download). Используйте [Docker Compose](https://docs.docker.com/compose/) с нашим [docker-compose.yml](./docker-compose.yml) или установите в ручном режиме, следуя интсрукции по [ссылке](./docs/ru/install-db.md). При использовании docker-compose данные будут сохранятся в директорию: **./server/data/docker/{DB_NAME}>** -В данном репозитории присутствует sql-скрипт для инициализации структуры БД. Используйте его для быстрого старта: ```bash -# Вставка sql-скрипта в mysql -mysql -u root < ./server/data/mysql/mysql-init.sql -# Логин Mysql -mysql -u root -# Создаем нового пользователя -CREATE USER 'oneplace'@'localhost' IDENTIFIED BY 'password'; -# Настройка привилегий -GRANT ALL PRIVILEGES ON oneplace.* TO 'oneplace'@'localhost' +docker-compose up -d ``` -Вы так же можете использовать [MySql WorkBench](https://www.mysql.com/products/workbench/) с нашим [model файлом](./server/data/mysql/wb-model.mwb) для расширения sql-схемы. +## Установка -##### Redis +### 1. Склонируйте репозиторий с github ```bash -sudo apt-get install redis +git clone git@github.com:OnePlace-media/oneplace.git && cd oneplace ``` -#### Конфигурация - -После установки сконфигурируйте redis-server для работы в качестве демона на локальном порту, для этого в стандартный конфиг (например, /etc/redis/redis.conf) внесите следующие изменения: +### 2. Установите npm зависимости ```bash -daemonise yes -bind 127.0.0.1 -port 6379 +npm install ``` -После установки зависимостей необходимо создать конфигурационные файлы из шаблонов: +### 3. Создайте файлы конфигрураций + +Скопируйте 2 файла json из готовых шаблонов: ```bash cd server + # Главный config -cp config.sample.json config.json -# Параметры к источникам данных (mysql, redis и т.д.) -cp datasources.sample.json datasources.json +cp ./server/config.sample.json ./server/config.json + +# Параметры к источникам данных (mysql, redis, email) +cp ./server/datasources.sample.json ./server/datasources.json ``` -##### config.json +#### ./server/config.json + +Более подробную информацию о config.json можно получить в официальной [документации к LoopBack](https://loopback.io/doc/en/lb3/config.json.html). Ниже описаны поля относящиеся непосредсвтенно к oneplace + ```json { ..., "postingWrapper": { - "steemDomain": "URL до ноды STEEM с HTTP JSON-RPC протоколом", - "golosDomain": "URL до ноды GOLOS с HTTP JSON-RPC протоколом", + "steemDomain": "URL ноды STEEM с HTTP JSON-RPC протоколом", + "golosDomain": "URL ноды GOLOS с HTTP JSON-RPC протоколом", "WIF": "Приватный постинг ключ аккаунта приложения в блокчейнах STEEM и GOLOS", - "username": "Имя аккаунта приложения в блокчейнах STEEM и GOLOS (без @)" + "username": "Имя аккаунта приложения в блокчейнах STEEM и GOLOS (без @)", + "beneficiarie" : "Имя аккаунта приложения в блокчейнах STEEM и GOLOS для функционала beneficiarie" + } +} +``` + +#### ./server/datasources.json + +Более подробную информацию о datasources.json можно получить в официальной [документации к LoopBack](https://loopback.io/doc/en/lb3/Defining-data-sources.html). В случае использования docker-compose достаточно прописать параметры SMTP для в секции **email**. + +```json +{ + ..., + "email": { + "name": "email", + "connector": "mail", + "transports": [ + { + "type": "SMTP", + "host": "...", + "secure": true, + "port": 465, + "auth": { + "user": "...", + "pass": "..." + } + } + ] } } ``` -#### Сборка и запуск -Мы приготовили несколько команд для быстрой сборки и запуска всех сервисов. Для начала необходимо собрать рабочую версию клиента с готовым конфигом: +## Сборка и запуск + +Мы приготовили несколько команд для быстрой сборки и запуска всех сервисов. Если вы проделали все шаги по установки, можете приступать к сборке и запуску процессов: + +### Сборка VUE клиента + +Для начала необходимо собрать рабочую версию клиента для этого используется [webpack](https://webpack.js.org/): + ```bash # Сборка фронт части проекта npm run build ``` -Для запуска демонов мы рекомендуем использовать [PM2](http://pm2.keymetrics.io/). Подробнее в [process.json](./process.json). -```bash -pm2 start process.json +### Запуск node.js процессов -# запуск мониторинг pm2 -pm2 monit -``` +Oneplace состоит из нескольких node.js приложений: -Но вы можете осуществить запуск вручную. +* VUE-SSR server - серверный рендер front части проекта +* LoopBack server - REST API для получения данных из БЧ и доп функционала +* CacheUpdater daemon - демон, кеширующий топовые посты по тэгам в базе redis, для быстрого формирования трендовых списков. -##### Запуск в ручном режиме +#### Режим разработки ```bash # Запуск LoopBack-API сервера npm start -# Запуск VueSSR сервера -npm run client +# Запуск VueSSR сервера в режиме наблюдения изменений +npm run client:dev +``` + +#### Режим боевой + +Для запуска демонов мы рекомендуем использовать [PM2](http://pm2.keymetrics.io/). Для этого существует готовый [process.json](./process.json): + +```bash +pm2 start process.json + +# запуск мониторинг pm2 +pm2 monit ``` -Подробнее см. [package.json](./package.json). + +Описание остальных скриптов NPM можно найти в [package.json](./package.json). ## После установки + На данный момент проект не является монолитным приложением, с помощью nginx вы легко можете объединить интерфейсы VUE с loopback, простой пример: + ```nginx location /api { proxy_pass http://127.0.0.1:3001; @@ -131,12 +160,29 @@ location / { proxy_set_header X-Real-IP $remote_addr; } ``` -## В ближайшем будущем -- Запуск демонов в кластере и soft рестарт с нулевым простоем -- Полное покрытие Unit тестами (frontend) и BDD (API) тестами с Karma, Mocha и PhantomJS -- Непрерывная интеграция и автоматический деплой -- Git flow и релизы с change log -- Полная документация + +## Тесты + +Для тестов необходимо запустить тестовые базы данных, это можно сделать через специальные [docker-compose.yml](./server/test/docker-compose.yml). [config.test.json](./server/config.test.json) уже присутсвуют в репозитории: + +```bash +docker-compose -f ./server/test/docker-compose.yml up -d +``` + +Запуск тестов: + +```bash + +# Тесты API +npm run test:api + +# Тесты frontend чаcти +npm run test:client + +# Все тесты по очереди +npm run test + +``` ## Вопросы diff --git a/client/src/components/chains/comment/Comment.vue b/client/src/components/chains/comment/Comment.vue index ac42b8f..a2cbac8 100644 --- a/client/src/components/chains/comment/Comment.vue +++ b/client/src/components/chains/comment/Comment.vue @@ -13,7 +13,7 @@ class="link link--op"> {{item.author}} - {{item.author_rep}} · + ·
diff --git a/client/src/components/chains/common/TagLabel.vue b/client/src/components/chains/common/TagLabel.vue index 7d7fe44..e615b10 100644 --- a/client/src/components/chains/common/TagLabel.vue +++ b/client/src/components/chains/common/TagLabel.vue @@ -3,7 +3,7 @@ @click.stop="add(tag)" class="tags-list__item tags-list__item--filter" :class="{'tags-list__item--selected': isInclude, 'tags-list__item--removed': isExclude}"> - {{tag.text | unGolosTag | toLowerCase}} + {{tag.text | unGolosTag | toLowerCase}} diff --git a/client/src/components/chains/post/DropdownVotes.vue b/client/src/components/chains/post/DropdownVotes.vue index ebee17a..4bd3623 100644 --- a/client/src/components/chains/post/DropdownVotes.vue +++ b/client/src/components/chains/post/DropdownVotes.vue @@ -1,11 +1,22 @@