
Описание
Новостная развлекательная социальная сеть
Что требовалось
Разработать и запустить мобильное приложение новостной развлекательной соцсети с возможностью монетизации
Продвинуть стартап до проектов первого эшелона: ВКонтакте, Telegram и Instagram*
Что сделали
В Happens мы объединили классический функционал соцсетей, геолокацию и агрегацию событий. Здесь можно создавать посты, новости, сторис, находить друзей и общаться в чатах. И главное — видеть, что происходит вокруг. Открываешь приложение и узнаешь обо всех событиях в городе, в котором находишься или который планируешь посетить.
Контент можно фильтровать по типу записи и по темам, например:
Концерты, городские праздники, фестивали, выставки
Соревнования, олимпиады
Семинары, тренинги
Конференции, форумы, ярмарки
Пресс-конференции, пресс-туры
Все это отображается на карте пинами:

Такого функционала нет ни у одного из конкурентов. Благодаря интеграции с Яндекс Картами у приложения нет географического ограничения. Ставить геометки и просматривать события можно в любых городах и странах.
Для организаторов мероприятий Happens — отличное место для рекламы, а для жителей и гостей города — возможность оставаться в курсе событий.
Что было сделано в рамках стартапа студии:
Подготовили техническое задание для разработки, описали функционал и характеристики будущего приложения
Составили видение продукта, проработали пользовательские истории (User Story)
Реализовали функционал создания 3-х типов событий: мероприятий, постов и новостей
Сделали ленту новостей
Сделали чаты с друзьями и другими пользователями приложения
Реализовали возможность публиковать истории, ставить лайки, управлять подписками и добавлять контент в «Избранное»
Настроили приватность контента
Интегрировали сервис с SMS.RU, Google, ВКонтакте для регистрации и авторизации
Провели интеграцию с Яндекс Картами, настроили отображение событий и историй на карте
Реализовали поиск событий, постов и пользователей через Elasticsearch
Создали административную панель
Разработали личный профиль пользователя
Настроили уведомления через технологию веб-сокетов
Разработали маркетинговую стратегию, провели отраслевой бенчмаркинг и запустили соцопросы
Этапы разработки
Аналитика
Мы провели предпроектную аналитику: составили видение продукта, проанализировали целевую аудиторию и конкурентов, продумали структуру будущего приложения, что помогло нам успешно запустить MVP.
После релиза провели дополнительную работу — бенчмаркинг, чтобы определить дальнейший путь развития продукта и понять, чем усилить конкурентное преимущество. В рамках бенчмаркинга детально исследовали и сравнили предложения конкурентов, выявили и проанализировали целевые аудитории, провели фокус-группы, запустили соцопрос и SWOT-анализ.
По результатам сделали выводы и составили бэклог, в котором зафиксировали функции и фичи для доработки в следующих спринтах. Туда же внесли предложения на перспективу развития социальной сети.

Функционал размещения событий
Наши прямые конкуренты — известные мастодонты рынка: ВКонтакте, Telegram, Snapchat и другие, косвенные — Reddit, Eventbrite, TripAdvisor и Pikabu. Но так как наш продукт в первую очередь агрегатор событий, то проанализировали еще и 2ГИС и Яндекс Афишу.

Чаты
В 2ГИС нет рекомендательной системы, и зависать там, как и на Афишах, ты не будешь. Нам же нужно вовлечь аудиторию интересным контентом.

Лента активностей
Поэтому мы предлагаем разные способы информирования: рекомендации по интересам, таргетинг по местоположению, посты и истории друзей.

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

Основные игроки рынка предпочитают сине-голубую гамму, но мы сделали ставку на зеленый и желтый. Зеленый цвет стал основным, а желтый — акцентным. Оба оттенка ассоциируются с умиротворением, безопасностью и дружелюбием. Чтобы подчеркнуть мягкость, использовали скругления в элементах интерфейса.
Разработка
Для разработки выбрали Flutter — фреймворк, обеспечивающий высокую производительность приложений. Он идеален для создания кроссплатформенных мобильных решений — одна кодовая база работает и на Android, и на iOS. Это экономит время и деньги, особенно при разработке интерфейсов.
Настроили интеграции с SMS.RU, Google и ВКонтакте для регистрации и авторизации. И с DaData для получения точных координат на карте.
Для поиска использовали знакомый нам Elasticsearch. Система создана для работы с большим объемом данных. В нашем случае нужно было хранить всю информацию о контенте и пользователях. А настройка приоритетов помогала показывать релевантный результат. Например, если ввести в поисковую строку «Новость о капибарах», Elasticsearch найдет и покажет новости об этих зверьках, опираясь на ключевое слово «капибары».
Для модерации контента разработали административную панель. В ней можно задавать неограниченное количество ролей, например, контент-мейкера наделить правом добавлять события, писать и редактировать посты. Но банить пользователей, на которых пожаловались другие пользователи, он не может — потому что мы не дали ему такого права. Но можем и дать, потому что этот функционал настраивается.

Возможности админпанели
Админпанель сделана на технологии Nova, это официальный продукт от команды Laravel. Благодаря ее активному комьюнити, у Nova теперь есть библиотека, которая позволяет выводить Яндекс Карты даже в административной панели, что максимально удобно.
Жалобы пользователей на других также приходят в админпанель, в ней можно увидеть, по какой причине комментарий/событие/профиль хотят забанить. И видно само событие.
Разработали систему фильтрации. Можно выбирать, какой контент будет выводиться в поиске, отображаться в ленте и на карте.

Система фильтрации
Для удобства пользователей внедрили меняющийся размер пинов. Если какой-то пост слишком долго висит на карте без внимания в виде лайков или комментариев, то его пин уменьшается. Так мы поддерживаем актуальность новостей.
Мероприятия реализовали по-другому принципу. Если событие разместили на карте, но оно состоится только через полгода, то пин увеличится до четверки — это самый большой размер. Чтобы все обратили на него внимание. Спустя время размер уменьшится, но за пару дней до начала снова разрастется. Это происходит автоматически, без ручных вмешательств, на это у нас есть специальная формула.
Проблемы и решения
Работу проверяли на нескольких версиях Android и iOS, бэкенд тестировали через популярный инструмент для проверки API — Postman. Оценивали бесперебойность на всех этапах, что в разы эффективнее, чем тестирование функционала только после полной разработки. Благодаря этому нашли и исправили несколько багов еще до релиза.
Несмотря на наш семилетний опыт работы с Socket.IO, в чатах возникали сбои — при переходе по пуш-уведомлениям пользователей выбрасывало из приложения из-за истечения срока действия токенов. Для исправления этой проблемы мы внесли изменения в код фронтенда, чтобы JSON Web Token обновлялся сразу после открытия приложения, но до того, как на бэкенд будет послан запрос на чат.

Функционал размещения событий
Реализовали систему блокировки пользователя. Вначале было так — если заблокировать чат с пользователем, то общаться с ним уже нельзя, но можно видеть его обновления. После релиза внедрили блокировку профиля — ты блокируешь человека, чтобы не видеть его обновлений, но можешь продолжать с ним общаться. Эти вариации должны были стать одной из фишек Happens, но оказалось, что это неудобно, поэтому дошли до того, что если блокируется пользователь, то блокируется и возможность общаться с ним.
Еще на проекте был баг, который потом перерос в фичу: по стандарту пользователи не могут поставить гифки на аватарки — они должны быть статичными, чтобы не нагружать Flutter. Если каждый начнет ставить анимированные аватары, устройства будут тормозить. Но в админпанели ограничений нет — мы их просто не задавали. Решили оставить как есть. В будущем может пригодиться, например, для Premium-подписки, а сейчас это не мешает.
Результат
Мы разработали уникальную новостную развлекательную соцсеть, которая сочетает в себе сервисы классических соцсетей, ГИС и агрегаторов событий. Сделали ставку не на глобальную аудиторию, а на локальные сообщества, где минимальная ячейка общества — это конкретный дом, затем район, город, регион и страна.

У Happens большой потенциал в среде людей, которым важно показывать свою жизнь через географию своих перемещений и путешествий. MVP мы успешно миновали, теперь приложение ожидают доработки, системное продвижение, реклама и коллаборации с сервисами и бизнесом.
*принадлежит Meta, которая признана экстремистской и запрещена в России
Команда проекта
Ярослав П — аналитик
Дмитрий А — фронтенд
Алексей Г — бэкенд
Александр С — бэкенд