Платформа Для Сбора Пожертвований За Две Недели – Итоги Антихакатона



Платформа для сбора пожертвований за две недели – итоги антихакатона

Команда студентов Высшей школы экономики выиграла наш антихакатон с решением по приёму пожертвований для стриминга.

Но он расскажет о проекте лучше всех Максим Дьяков , основатель сервиса «ЯСтрим» – Передаю микрофон автору.

Ниже немного туда-сюда между ChromeApps и Electron, впечатлениями от пробы Yandex SpeechKit и вообще о разработке в формате антихакатона.

.

Одним дождливым летним вечером мы с друзьями решили принять участие в Антихакатон Яндекс.

Деньги .

И повод был подходящий, ведь я давно хотел создать приложение, связанное со стриминговыми сервисами и процессом отправки пожертвований.

В нашей команде было четыре человека: дизайнер Александр Наумов, Джавид Халилов, ответственный за мобильное приложение, Александр Кобрин, руководитель ПК-клиентов, и я, как бэкенд-разработчик и идейный вдохновитель.

Вышло хорошо — через две недели появился минимально жизнеспособный продукт «ЯСтрим».

Зачем кому-то платить за стриминг? Для общего понимания расскажу немного о том, как отправляются пожертвования и, главное, зачем это вообще нужно.

В этой статье под стримингом подразумевается именно стриминг игр.

То есть когда кто-то транслирует свой игровой процесс онлайн и при этом все это комментирует. У популярных стримеров есть своя аудитория зрителей, которые следят за выходом новых «серий» и иногда присылают комментарии, сообщения или деньги.

Разумеется, все на добровольной основе и без какой-либо практической цели для зрителей – чисто ради развлечения.

Поскольку стриминг для зрителя — это всего лишь способ развлечься, нет очевидного смысла платить кому-то даже 50 рублей (это не фильм, и билеты при присоединении не просят).

Однако индустрия онлайн-стриминга набирает обороты чуть ли не быстрее, чем блоггинг, а значит, без хорошего денежного потока ей не обойтись.

В общем, однозначного ответа как такового нет. Когда мы бросаем монетку юным музыкантам в метро, мы не получаем никакой услуги или товара, а лишь благодарим исполнителя за его творчество – здесь то же самое.

Что касается технической стороны организации стрима, то давно известны продукты для захвата и трансляции видео с экрана, но толковой системы сбора пожертвований нет. Разумным является тот, который:

  1. позволяет пользователю перевести определенную сумму стримеру с минимальными усилиями;
  2. поддерживает передачу сообщения (текстового или голосового) от пользователя стримеру в процессе перевода денег;
  3. показывает стримеру сообщение и оповещения о получении денег от конкретных пользователей;
  4. умеет читать пользовательские сообщения вслух в прямом эфире и содержит настройки «пищания» нецензурной лексики и других слов, не подходящих для стримера;
  5. может работать с любым потоковым программным обеспечением, чтобы не заставлять стримера покидать привычную среду.

По крайней мере, не существует продукта, который бы отвечал этим требованиям и не взимал бы свою комиссию.

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

А раз толкового продукта нет, значит, есть повод для стартапа.

Нет смысла строить только один продукт для передачи пожертвований — это ограничит его возможности и сведет потенциал развития практически к нулю.

Поэтому мы решили сделать комплексное решение» ЯСтрим ", альфа-версию которого можно посмотреть на видео: Вот как стример видит интерфейс YaStream. Главное преимущество нашего проекта перед конкурентами в том, что YaStream не требует какой-либо интеграции с привычным для стримера приложением для захвата экрана и трансляции.

Вместо этого он просто накладывает на экран необходимый интерфейс и пользовательские сообщения, которые фиксируются потоковым приложением.

Создаём счастье для стримера Поскольку мы хотели охватить более широкий рынок, и в то же время узнать что-то новое на антихакатоне, решение должно было быть кроссплатформенным — с поддержкой всех стриминговых платформ и сопутствующего ПО.

За основу мы изначально выбрали Chrome Apps, который показался мне почти идеальным инструментом для отладки и разработки API (особенно мне понравилась отладка приложений в Postman, который тоже написан для Chrome).

Тогда настольные клиенты можно было бы писать на базе приложений Chrome для многих платформ одновременно.

Вдохновлен лучшим, на мой взгляд, инструментом для разработки Web API — Почтальон в версии Chrome — за основу я решил использовать Google Chrome Apps. Приложения, написанные для этой платформы, работают в Google Chrome и других браузерах на базе движка Chromium, что позволит создать простое кроссплатформенное решение.

Вот некоторые мотивирующие факторы:

  • Google Chrome и другие браузеры на базе движка Chromium составляют большую часть рынка, поэтому решение станет «всеядным»;
  • разработка на этой платформе представляет собой типичный веб-интерфейс с некоторыми нюансами, которые вошли в книгу Марка Рочкинда на 240 страницах.

Что касается бэкенда, то выбор для меня однозначен — ASP.NET. После некоторого опыта настройки сервера на Ubuntu, как только вы познакомитесь с приятным пользовательским интерфейсом Azure, пути назад уже не будет. Последний гвоздь в наши сомнения забила бесплатная подписка на Azure на месяц, что в условиях антихакатона в самый раз.



Платформа для сбора пожертвований за две недели – итоги антихакатона

Конечно, во всем этом царстве удобства и свободы были и досадные моменты.

Хочу поделиться тем, что все это время меня впечатляла книга Алана Купера «Психбольница в руках пациентов».

Книга посвящена теории дизайна взаимодействия, поэтому, когда дело дошло до второй составляющей — аудитории, — мне очень захотелось опробовать такие приемы, как составление персонажей в бою.

Как только мы определились с основными компонентами продукта (приложение для ПК, веб-форма и мобильное приложение), наш интерфейсный разработчик внезапно обнаружил, что Google прекращает поддержку приложений Chrome в Windows, Mac и Linux. Неловкая пауза, разочарование, негодование, принятие.

Король умер, да здравствует король Электрон В качестве альтернативы идеально подошёл фреймворк Электрон Открытый исходный код. Конечно, новизна платформы настораживала, но растущая популярность компенсировала опасения.

Что касается мобильного приложения, скажем так: в моей мобильной команде был только Android-разработчик.

Для YaStream выбрана архитектура клиент-сервер с Microsoft SQL в качестве внутренней базы данных.

Думаю, нет смысла детально разбирать архитектуру, рисовать блок-схемы и т. д. — это скучно и специфично для конкретного проекта.

Я бы предпочел поделиться некоторыми советами из собственного опыта проб и ошибок:

  • В качестве идентификатора, как фундамента на будущее, лучше выбрать что-то глобально уникальное.

    Например, для идентификатора онлайн-трансляций я выбрал URL, который позволил мне решить миллион проблем одним махом (уникальность, быстрый доступ, возможность последующей работы с API стриминговых платформ).

  • Детально проработайте платформу вашего будущего сервиса — это сэкономит массу времени на более высоких уровнях внедрения.

    Лучше провести на платформе еще пару дней, чем обнаружить на финальных этапах, что все нужно наполовину переписать.

  • Если речь не идет о хакатоне или проекте, не имеющем дальнейших перспектив, сразу документируйте все сущности, логику, взаимодействия и т. д. Чем дольше все это откладывается, тем больше информации вам приходится держать в голове.

    В большом проекте непросто все запомнить, поэтому лучше сделать это сразу.

Далее последовал этап разработки WEB API нашего сервиса, где основной задачей было обеспечение безопасности стримеров: а вдруг кто-то изменит настройки доната, поменяет логотип или сделает еще что-нибудь злое.

Таким образом, в платформе появились следующие инструменты защиты:

  • Для каждого перевода в поле метки вводится специальная метка, а в данные о пожертвовании включается идентификатор транзакции (если его можно получить).

    Это было необходимо для удобной работы с API Яндекс.

    Денег на стороне стримера и проверки наличия перевода в платежной системе.

  • Когда YaStream получает данные о пожертвовании, пользовательский клиент запрашивает у Яндекс.

    Денег операцию с тем же идентификатором или все операции с совпадением в поле метки.

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

  • Вся связь между пользовательским клиентом и стриминговой платформой происходит с помощью специального токена YaStream, который выдается на этапе авторизации в платежной системе.

  • Отдельно пришлось повозиться с загрузкой фотографий, так как опыта у меня не было, а чтобы было проще работать с API, пришлось создать небольшой фотохостинг.

Результат всех этих исследований можно было бы охарактеризовать как «бэкэнд-работы», что, на мой взгляд, прекрасно характеризует ранний прототип.

Дальше был еще рефакторинг, рефакторинг и еще более захватывающий рефакторинг.

Увлекательный этап сборки Когда пришло время создавать рабочую сборку, мы не смогли подключить React — в результате приложение при запуске выдавало дикие ошибки.



Платформа для сбора пожертвований за две недели – итоги антихакатона

Пример того, что мы поймали при попытке сборки.

Наша команда перекопала Stackoverflow и GitHub Issues вдоль и поперёк, так что остаётся только открыть новую тему и поискать знающих людей.

Так мы познакомились с разработчиком Electron и @akashnimar , который имеет соответствующий опыт и готов им поделиться.

Кроме того, мы обнаружили Российское электронное сообщество , куда следует обратиться всем, кто рассматривает возможность использования этой платформы.

Также возникла заминка с хранением файлов, что и послужило поводом для совета уделить больше внимания основам приложения.

Еще нам нужно было не лениться, а с самого начала подключить библиотеку Electron-Storage или Electronic-Storage-JSON, чтобы не переписывать код, когда окажется, что local-Storage из Main недоступен.

Стал лучом света в темном царстве незнакомых рамок.

Яндекс СпичКит , что не только дало отличные результаты, но и потребовало минимум времени на изучение документации.

Фактически нужная опция озвучивания сообщения от пожертвования пользователя была получена после трёх строчек кода:

   

const tts = new ya.speechkit.Tts({ apikey: 'ffffffff-2222-4444-0000-1111111111', emotion: 'good', speed: 1.2 }) .

tts.speak(donate.text_data, { speaker: 'zahar' })

Достаточно указать свой личный API-ключ, выбрать голос (захар), скорость, эмоциональную окраску (хорошо) — и все готово.

За плечами у нас литры энергетических напитков и 3 недели интенсивного развития.

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

Но с точки зрения первоначальной цели мы добились главного: удалось реализовать практически все возможности (кроме голосовых сообщений, в которых еще есть некоторые шероховатости), что не часто удается молодым разработчикам на реальном уровне.

проект. При этом никто не ссорился, все четверо находятся в лодке и продолжают верить в успех.

Таким образом, достижение разблокировано, но до него еще далеко.

Если наш опыт показался вам интересным, буду рад ответить на ваши вопросы в комментариях.

Страница проекта YaStream .

Теги: #Разработка стартапов #Хакатоны #Продуктовый менеджмент #Разработка электронной коммерции #Медиаменеджмент #ИТ-терминология #Конкурс проектов #ЯСтрим

Вместе с данным постом часто просматривают: