DOU Labs: как в RiverSoft создали приложение для удобной организации мероприятий

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Приложение Eventssion — это проект, который появился из жизни. Он помогает решить вопрос эффективной организации мероприятий разного характера. Не имеет значения, что вы задумали — шумную вечеринку или ответственную конференцию, — благодаря набору функций (от чатов внутри событий и уведомлений участников до голосований) организатор получает весь инструментарий в одном приложении. Просто, быстро и действенно. Хотите знать, как это получилось? Мы расскажем, как превратили банальный футбол в повод для разработки приложения.

Идея

Наша компания часто устраивает массовые мероприятия в целях тимбилдинга. Так, однажды решили организовать футбольный матч с участием сотрудников. Тема была принята «на ура», всем уже не терпелось покинуть удобные кресла и оторваться от светящихся мониторов. Но вопросы о выборе места, подходящего времени и учета всех нюансов решались по телефону о-о-очень долго! Оказывается, для реализации такой идеи требуется учитывать множество аспектов и с разными людьми, порой слишком занятыми для того, чтобы отвечать на звонки. Поэтому в качестве инструментов использовались еще и разные мессенджеры.

Сначала все шло хорошо, но тут наступил поворотный момент. Футбольные собрания стали популярны, команд становилось все больше и среди них устраивались турниры. Найти общий знаменатель по времени и дате стало практически невозможно. Оперативности не было, и мы снова вернулись к звонкам. А затем повторным наборам и контрольным наборам для подтверждения. В общем, слишком много нажатий на зеленую кнопочку.

Мы долго ломали голову над тем, как поступить, и наконец перед нами появился ответ с огромным знаком восклицания: «Да мы же айтишники!». Вот так появилась идея о создании простого приложения для сбора знакомых на футбольные турниры.

Наша команда состоит из 11 человек, среди которых есть дизайнер, Project Manager, 3 Android- и 4 iOS-разработчика, 2 бэкендщика. Кстати, наш дизайнер в этом году стала победителем Dev Challenge 2018 в категории mobile-design.

На фото наша команда или те, кто не побоялся публичности ;)

Реализация

Eventssion сначала был ориентирован на маленькие группы людей, у которых есть номера телефонов друг друга. Поэтому организатору оставалось только вписать название события, дату, время и пригласить участников, которые были зарегистрированы в приложении. Далее все получали уведомления и выбирали статус (идут или нет) + напоминание в день игры. Соответственно, каждый участник видит, что за событие его ожидает, а также где и когда оно состоится. Так мы свели действия организатора к минимуму. Он просто создавал мероприятие и после этого наблюдал за откликами. Исчезла необходимость в телефонных звонках и напоминаниях. Радость девочек-организаторов невозможно было передать словами.

Но нас было не остановить. Мы замахнулись на более масштабные события, которые также можно организовать с помощью этого приложения. Например конференции, тренинги, воркшопы, мастер-классы. На этом этапе мы полностью изменили концепцию. Теперь наша целевая аудитория — организаторы мероприятий и комьюнити-менеджеры. Организаторы могут создать сообщество вокруг себя.

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

С помощью общего чата участники легко находят единомышленников или обсуждают интересующие их темы — нетворкинг в режиме онлайн. И с помощью нового функционала «группы» организатор может все свои мероприятия объединить. Больше не нужно искать события в своем расписании. Теперь пользователь заходит в определенную группу, видит все её активности и выбирает, что его интересует.

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

С технической точки зрения это происходило следующим образом. Клиент Android и iOS общается с бэком через REST, сам бэкенд реализован на Spring. Поскольку API одно для всех платформ, это приводило к некоторым затруднениям. Например, с push-уведомлениями с более ранней версии Android. Было удобно отправлять только некоторые поля в пуше (название, события, время), а на Android уже перехватывать и отображать. На iOS оказалось, что когда пользователь закрывает приложение, оно никак не может обработать пуш. Его должен формировать бэкенд в виде, готовом для отображения системой (сразу в таймзоне и на языке устройства). Поэтому приходится слать разные пуши на разные устройства, что довольно накладно.

Версионирование API реализовали через HTTP-header. Есть глобальный перехватчик запросов, и при ответе сервера о необходимости обновиться, он обрабатывается соответствующим образом. А поскольку объектные модели часто меняются, мы ориентировались на использование MongoDB, но связей в БД также много. На данный момент мы остановились на MySQL.

Внешне мы изменили интерфейс и возможности расписания события.Теперь можно указать тайминг конференции (например, 9:00 — регистрация; 10:00 — первый спикер; 12:00 — кофе-брейк и т. д.). Так можно отказаться от бумажных флаеров, а участники конференции будут иметь быстрый доступ к плану мероприятия.

Также хотелось бы поделиться тем, как мы реализовали отображение списков и обработку действий (actions) на Android. Подход основан на «делегировании» отображения элементов списка специальным классам-делегатам. Действия тоже обрабатываются через ActionHandler, который через data binding вызывает Action. В итоге создание нового экрана со списком любой сложности сводится к формированию списка делегатов для элементов списка. Сюда же включен и список экшенов, которые срабатывают при нажатии на элементы в layout. Это решение оформлено в качестве библиотеки.

Отдельно хотим рассказать про систему напоминаний. Это особая история. У нас их два вида: хард (в виде звонка на телефон) и софт (на шторку). Харду мы уделили большой отрезок времени, поскольку это двоякая фича. С одной стороны, все лишние звуки на смартфоне отвлекают нас от работы, а с другой — именно они являются гарантией того, что участник будет помнить о событии.

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

Кроме того, в качестве кэширующей БД была выбрана Realm. Об этом мы ни разу не пожалели. Она действительно работает: быстрее SQLite, поддержка Rx и это удобно. Реактивные подписки на данные позволили добиться того, что на многих экранах обновляется информация синхронно с обновлением данных. Например, когда участник события дает ответ, организатор события realtime видит это на UI.

Результаты и планы

Хотим ли мы остановиться? Безусловно нет. Сервис находится в активной разработке. Идеи о том, как его улучшить, появляются ежедневно. Конечно, у нас нет Kotlin, но мы не спешим переходить. Сейчас все переходят на bottom navigation (VK, Instagram, LinkedIn), поэтому мы стараемся быть в тренде и тоже переделываем навигацию в приложении.

Сегодня наше приложение превратилось в событийно-ориентированную социальную сеть. На данном этапе мы тестируем новый функционал — «группы» с возможностью бронирования мест и внедряем поиск внутри приложения.

Мы сделали приложение на Android и iOS. Первое уже доступно в Play Market в beta-версии, поэтому вы можете сделать тест и проверить свои организаторские данные. Держим пари, что у вас получится провести успешное событие любого масштаба. iOS-версия на последнем этапе разработки, поэтому ожидайте скорейшего ее появления. Поскольку мы серьезно взялись на это приложение, планируется публикация в App Store.

Новыми фичами и релизом на iOS, поделимся с вами уже в следующем материале. Будем рады видеть Вас на страничке в Facebook. Там мы ведём блог нашего приложения и всегда рады комментариям.

Похожие статьи:
8 червня в офіційному блозі GitHub заявили, що припиняють розробку Atom. Всі проєкти архівують 15 грудня 2022 року, й після цього вони будуть...
Our technology-driven society has become more and more dependent on the Internet for its necessary information and entertainment. This is why today’s business environment has to include an Internet presence. This includes law firms, being...
Стартап Haiqu, який створює технології для підвищення ефективності квантових комп’ютерів, оголосив про закриття pre-seed раунду...
Компания HTC опубликовала квартальный финансовый отчет по итогам третьего квартала текущего года. За прошедшие три месяца...
Привет, DOU! Я Денис, бизнес-аналитик IT-компании Artjoker, поделюсь с вами мыслями о том, какие есть виды бизнес-аналитиков...
Яндекс.Метрика