Будучи разработчиками разных серьезных сервисов «Право.ru» и «Картотеки Арбитражных Дел», нам периодически хочется отвлечься от рутины и попробовать что-нибудь веселое и что будет интересно не только судьям и юристам.
Так и родилась идея сделать красивое развлекательное приложение для iPhone и iPad, которое бы агрегировало разные тусовки и мероприятия из социальных сетей в одном месте.
Спустя три месяца плодотворной работы, мы хотим выставить на ваш суд наше новое приложение EventiCal. Название составлено из двух слов «Event» и «Calendar» и отражает общую суть — календарь пользовательских событий, отфильтрованных по городу пользователя.
Как положено у стартаперов — сначала объясним «проблему», которую мы решили, и которая не то чтобы уж такая проблема, просто потому что не очевидна на первый взгляд.
Информацию о выставках, музеях, театрах и кино можно легко найти в «Афише» и других гидах. Эту же информацию по разным городам мира можно найти в сетевых изданиях типа «Time Out» или на сервисах типа Yelp, Eventful etc.
А вот информацию о пользовательских событиях (social events) — тех, которые создают сами пользователи, нигде найти нельзя. А как показывает тенденция, именно такие события становятся все более социально значимыми и посещаемыми. Примером тому акция Chick–fil–A, которая собрала 674 345 человек, и концерт в Лондоне «Гражданин Поэт», на который Чичваркин продал 1 500 билетов через Facebook.
То есть это те мероприятия, которые создаются в социальных сетях. Однако, увидеть все события пользователь, например мобильной версии Facebook, не может. Facebook настроен таким образом, что пользователь может видеть события на которые идет он и его друзья. С помощью веб-версии Facebook можно найти мероприятия города, но они не отсортированы ни по дате, ни по количеству людей, которые собираются посетить мероприятие.
Что если вы приехали в другой город, где у вас нет fb-друзей? Куда пойти кроме кино и театров? Как узнать что популярно, а что sucks? Именно для этого мы сделали EventiCal.
В приложении можно:
— посмотреть события по своему городу с разбивкой на
• сегодня,
• завтра,
• на этой неделе,
• в этом месяце;
— выбрать другой город и посмотреть события по нему;
— выбрать конкретную категорию событий;
— посмотреть только те события, на которые идет сам пользователь;
— посмотреть карточку события и весь контент по нему (описание, карту, комментарии и проч.);
— подтвердить свое участие и добавить событие в iCal или Google Calendar;
— оставить комментарий к событию;
— создать свое событие;
— пригласить друзей и расшарить в социальные сети.
Проект является по сути агрегатором данных из FB и работает, используя API Facebook в части контента и Google maps — в части геолокаций
Самая сложная часть, которую мы решили и которая пользователям не очень интересна — это обход нестандартных ответов Facebook — у них все очень плохо систематизировано в плане геолокации, нет четких стандартов нейминга мест проведения мероприятий. Так что мы брали данные, которые отдает Facebook, и пытались определить на их основе точную геопозицию конкретного события. В результате был найдено симбиотическое решение — если FB нам не отдает точное геоположение с координатами, мы уточняем его с помощью данных с Google.
По поводу сбора контента тоже были сложности. Поскольку реал-тайм обновления по событиям в FB не существует, есть только реал-тайм обновления по друзьям, мы написали ряд постоянно действующих анализаторов, которые периодически опрашивают FB на предмет разных обновлений. Поскольку и событий и пользователей очень много, то эти «кроны» разделены на несколько отдельных логических процессов, каждый из которых отвечает за свою область и они не мешают друг другу — не дергают слишком часто одну и ту же информацию.
Вторая проблема с получением контента — FB отдает все очень медленно на фоне Google, который реагирует на запросы с космической скоростью. Поэтому, помимо кронов, мы еще используем Rabbit, который как раз отвечает за параллелизацию процессов при первом входе пользователя и в некоторых других случаях. Таким образом новый пользователь может получить как можно быстрее верхнеуровневые данные, а вся сложная и долгая обработка уходит в параллельные процессы.
В целом приложение проектировали по принципу — чем проще, тем лучше. Это равно относится и к бэку и к интерфейсу.
Вообще, самое вкусное в EventiCal это, конечно, интерфейс. Мы использовали принцип параллакса для демонстрации афиши. Если вдруг кто не знает — эффект параллакса можно наблюдать из окна движущегося поезда — березы, растущие ближе к рельсам, проносятся быстрее, чем те, что стоят на отдалении. Так и в Eventical – самые популярные события — самые крупные и скроллятся медленней, чем малопосещаемые = мелкие.
В остальном приложение отвечает всем возможностям айпадного эстетства — всевозможные тапы, свайпы и скролы делают его живым, нативным и приятным в использовании.
Отдельно хочется выделить афишу с картинками. Поскольку FB отдает картинки самые разные по размеру и качеству, то пришлось писать отдельный скрипт на преобразование графики в нужный нам формат — конвертирования и подгона по размеру.
Для нивелирования плохого качества графики мы придумали использовать маскирующие фильтры — сетки различных паттернов для сглаживания пиксельности.
Для знакомства с EventiCal мы сняли ролик, в котором красивая девушка демонстрирует возможности приложения.
На сегодня EventiCal доступен только зарегистрированным в Facebook. В ближайшем времени мы добавим другие социальные сети. Следить за новостями EventiCal можно в Facebook группе и в Twitter. Если у вас есть пожелания — самое время их озвучить!
Автор: glazkova