Triplook - новий сервісний додаток у сфері туризму і знайомств, що містить елементи соціальної мережі. Мета сервісу - допомогти користувачам швидко знайти відповідного попутника для спільних тривалих подорожей або короткочасного відпочинку під час відпустки.
Stfalcon.com розробила дизайн і мобільний застосунок під платформи iOS і Android. Серверна частина додатка була реалізована з боку команди клієнта у вигляді зручного і добре документованого REST-API.

Для миттєвих повідомлень і realtime-подій ми написали власний сервіс, який займається обробкою івентів від publisher. У нашому випадку це основний застосунок, який відправляє на сервер інформацію про нову подію (наприклад, повідомлення про нового попутника).
Сервіс для роботи з realtime відправляє цей івент на клієнт:
- якщо користувач онлайн - по сокетах;
- якщо користувач офлайн - він отримає push-повідомлення або email.
Перевага цього рішення - у його простоті та незалежності від мови програмування або фреймворку: повідомлення між сервісами передаються за AMQP-протоколом. Від сервера на клієнт повідомлення передаються за WebSocket protocol (RFC 6455).
Прототипування
Дизайн мобільних інтерфейсів у більшості випадків починається з прототипу. Triplook не став винятком, і насамперед ми спроектували навігацію. Основне призначення застосунку - пошук попутників, тому в прототипі ми зробили акцент на формі запиту, видачі результатів і взаємодії між користувачами.
Наявність прототипу істотно спрощує оцінку подальшого розроблення дизайну і програмної частини, оскільки допомагає ясніше зрозуміти функціональні можливості майбутнього застосунку.

Пошук попутників
У мобільному застосунку Triplook пошук попутників містить 3 обов'язкових поля: місто відправлення, місто призначення і часовий період. Для зручності ми визначаємо місто відправлення з профілю користувача, а часовий період за замовчуванням - календарний місяць від сьогоднішньої дати. Таким чином, ми готові показувати результати пошуку, щойно користувач вибере, куди він хоче поїхати. Додатково є можливість вказати бажану стать і вік попутника.

Результати пошуку
За пошуковим запитом ми отримуємо список подорожей, що відповідають заданим параметрам. У списку результатів виводимо фотографії потенційних попутників. Запрошення в подорож можна надіслати як зі сторінки результатів пошуку, так і зі сторінки самої подорожі.
Дизайн і розробка інтерактиву
Щоб зробити застосунок більш живим, ми запропонували ідею невеликої анімації під час взаємодії користувача з інтерфейсом. Цю поведінку було задумано таким чином, що її можна повторювати в різних розділах застосунку.
Оскільки запропоновані анімації були в стилі Material Design, Android розробникам вдалося реалізувати їх за допомогою стандартних компонентів: CoordinatorLayout, CollapsingToolbarLayout. Анімацію переходів між екранами реалізовано за допомогою Transitions Framework.
Путівник
Сервіс Triplook має велику базу курортів, і пошук за ними - важлива частина функціоналу. Користувач може переглядати курорти за країнами і рейтингом, а також отримувати детальну інформацію про них, від необхідних документів до опису пам'яток, клімату і місцевої кухні. Не залишаючи екран курорту, можна шукати попутників, які збираються відвідати це місце, або додати курорт до списку обраних.

Особисті повідомлення
Для повноцінної соціальної складової було прийнято рішення реалізувати особисті повідомлення такими, якими користувачі звикли їх бачити в популярних додатках. Для миттєвої передачі повідомлень було використано протокол WebSocket. Усі події, які відбуваються в реальному часі, надходять у додаток через WebSocket з'єднання, коли користувач перебуває онлайн. Якщо ж користувач згорнув застосунок або загасив екран, застосунок закриває WebSocket з'єднання і далі отримує всі оновлення за допомогою push-повідомлень.
