Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
avral
6 лет назад

🔨Mapala | О проектировании приложения для голоса.

Сокращения:

  • HF - Хардфорк
  • БЧ - Блокчейн

При разработке приложения Mapala Beta еще на 16HF. Сформировались проблемы мешающие нормальному функционированию приложения.

  1. Работа с данными БЧ.
  2. Изначально приложение проектировалось сразу на два БЧ steem/golos.
  3. Регистрация в приложении с автоматическим созданием аккаунта в блокчейне.
  4. SPA/SSR, SEO, sitemap.xml, итд.

Работа с данными БЧ.

Основная проблема - это работа с базой БЧ. Так как API ноды не обеспечивала необходимой гибкости выборок, было решено написать свой бек-энд который будет парсить блоки и хранить операции в удобном формате. В результате получилось удобное API, но из-за постоянных обновлений протокола и обновления структуры данных в базе, была необходимость при каждом обновлении кода, синхронизировать базу заново. Так же API было ориентированно только для работы с приложением Mapala.
С выходом 18HF команда голоса обрадовала нас релизом mongo-plugin’а благодаря которому взаимодействовать с базой БЧ стало намного проще. Я решил написать GraphQL сервис для голоса на основе mongo базы. Получилось удобное API, которое можно развивать, при этом каждый раз не синхронизироваться заново. Приложение Mapala использует GolosQL для запроса аккаунтов/постов с фильтрацией по тегу приложения(mapala/ru—mapala).

Приложение проектировалось сразу на два блокчейна steem/golos.

Как следствие, блокчейны пошли по разным путям развития, соответственно поддерживать совместимость с двумя разными интерфейсами как для бек-энда так и для фронтенда стало технически сложно. Из этого было выработано правило: один БЧ - один фронтенд. Проще отдельно развивать несколько фронтендов под разные БЧ, при этом используя общие модули где это возможно.

Регистрация в приложении с автоматическим созданием аккаунта в БЧ.

Для хранения данных пользователя и авторизации использовался внутрений аккаунт, хранящийся на бекенде, а аккаунт БЧ импортировался на стороне клиента. Это создало массу проблем: несовпадение имен аккаунтов, невозможность импортировать ключи повторно в новом аккаунте(внутреннем), при регистрации пользователи не сохраняли и теряли свои приватные ключи.
Имхо, без понимания базовых принципов работы БЧ, пользователь не сможет полноценно пользоваться приложением. Регистрировать аккаунты с префиксом приложения, генерировать имена аккаунтов по OAuth авторизации со стороннего сервиса, не имеет особого смыла. Регистрация была временно отключена, функцию регистратора выполняет golos.io. Вывод: 1 аккаунт в БЧ - много фронтендов/приложений.

SPA/SSR, SEO, sitemap.xml.

Изначально фронтенд разрабатывался как SPA приложение, СЕО оставляло желать лучшего, поэтому приложение было переписано на SRR. Для добавления веса фронтенду, в конце каждого поста добавляется баннер со ссылкой на источник. Добавлен sitemap который генерируется динамически. Вывод: Приложение для медиа-БЧ должно быть СЕО оптимизированным.

Что представляет из себя приложение golos.mapala сейчас?

  1. Фронтенд, взаимодействующий с отрытым АПИ(GolosQL).
  2. Авторизация посредством posting ключа.
  3. Оптимизированное СЕО, SSR.
  4. Современные технологии веб разработки, vue/nuxt.js/es7, docker.

https://golos.mapala.net
https://github.com/avral/golos.mapala

P.S Для разработчиков.
Данное приложение можно использовать как каркас для создания приложений на блокчейне голос.
При проектировании приложения, я старался заложить максимальный уровень абстракции.

Параметры “config/index.js”, указанны параметры для golos.mapala.

  1. app: идентификатор приложения -> mapala/1.1
  2. app_tags: летна постов фильтруется по даррым тегам ['mapala', 'ru--mapala']
  3. tag_for_post: первый тег в редакторе, при создании публикации -> mapala
  4. pagination: количесто постов, для подгрузки в ленту для каждой итерации -> 10

Тех поддержка -> telegram: @avral

From Mapala

0
12.611 GOLOS
На Golos с April 2017
Комментарии (5)
Сортировать по:
Сначала старые