Happens
Приложение-соцсеть с элементами ГИС

Описание проекта
Иногда сложно найти место для игры в мафию, не пропустить концерт или решить, где провести вечер пятницы. Обычно надо подписываться на кучу новостных каналов города. Мы решили упростить жизнь, создав социальную сеть, которое объеденит сервисы классических соцсетей, ГИС и агрегаторов событий.
Что требовалось
- Разработать и запустить мобильное приложение новостной развлекательной соцсети с возможностью монетизации
- Продвинуть стартап до проектов первого эшелона: ВКонтакте, Telegram и Instagram*
*принадлежит Meta, которая признана экстремистской и запрещена в России
Что сделали
В 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 мы успешно миновали, теперь приложение ожидают доработки, системное продвижение, реклама и коллаборации с сервисами и бизнесом.
Команда проекта
- Ярослав П — аналитик
- Дмитрий А — фронтенд
- Алексей Г — бэкенд
- Александр С — бэкенд