×Закрыть

DOU Проектор: Slotbook — онлайн-система бронирования визитов в сфере услуг

В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.

Всем привет! Меня зовут Андрей Пархоменко, я работаю back-end разработчиком уже около 10 лет. Для решения рабочих задач преимущественно использую Java и Scala. В этой статье я хотел бы рассказать о том, как мы реализовали Slotbook — систему, которая позволяет забронировать визит к специалисту для ремонта авто, к врачу, на косметическую процедуру или, например, фотосессию.

Идея

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

Без знания языка хотя бы на начальном уровне сделать это довольно проблематично. Необходимо выбрать определённое место, где будет оказана эта услуга на должном уровне, а также достойного специалиста. Круг выбора конкретного специалиста будет, скорее всего, ограничен рекомендацией вашего знакомого, который до этого уже воспользовался той или иной услугой.

В такой ситуации нам может помочь мобильное приложение, с помощью которого мы осуществим поиск специалиста сферы услуг в конкретной локации.

Первоначально идеей занимались с коллегами в свободное время. Потом я поделился с сестрой, которая на тот момент работала тестировщиком и, находясь в командировке на другом континенте, как оказалось, тоже испытывает те же трудности. С того момента мы начали работать с разницей в часовых поясах 8 часов и даже почти без возможности обсудить всё онлайн. Идея-тикет-фикс-проверка-5 новых идей и всё по кругу.

Исходя из того, что готовой системы в данном направлении не было (по крайней мере, никто о ней не заявлял, это очень важно), мы задались целью реализовать ее самостоятельно. Придумали название — Slotbook, которое довольно легко читается. Сразу же был зарегистрирован домен slotbook.me, а позже — slotbook.com.ua.

Изначально мы решили развивать систему в Украине по нескольким причинам:

  1. Легче договориться с сервис-провайдерами, разговаривая на одном языке.
  2. Реклама и маркетинг дешевле.
  3. Желание хоть немного повлиять на развитие продуктовой разработки в Украине и для Украины.


Интерфейс мобильного приложения

Цели

Мы определили две основные задачи:

  1. Изучить новые технологии, знаний которых нам не хватало в работе над основными проектами.
  2. Выдать готовый продукт.

Мы решили выбрать совсем новый для нас стек технологий, потому что это было более интересно. Если бы на определенном этапе надоело заниматься проектом, новые еще не изученные нами технологии могли бы дать дополнительную мотивацию.

Если бы не получилось реализоваться с точки зрения бизнеса, у нас останется бесценный опыт, который всегда можно применить на других проектах.

Структура

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

Клиентом может быть любой человек, который заинтересован в определенной услуге и хочет записаться онлайн.

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

С помощью мобильного приложения (сейчас доступна бета) клиенты осуществляют поиск провайдера услуги по нескольким категориям: локация, рейтинг и отзывы, др.

Интерфейс выбора сотрудника компании

Когда выбор сделан, клиент инициирует запись, вводит свои контактные данные и получает подтверждение о статусе своего визита.

Информация о визите сохраняется в календаре клиента и компании. Также событие можно отменить или перенести. Большим плюсом в данном флоу являются также push сообщения и синхронизация календарей клиента и приложения.

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

Система авторизации предполагает несколько ролей: администратор, сотрудник, владелец компании. Для всех предусмотрены свои ограничения и свой функционал.

Чем больше информации о себе выдаёт компания, тем проще клиенту ее найти и сделать выбор в ее пользу.

Интерфейс страницы расписания сотрудника

Найти необходимый сервис и осуществить запись можно также и с помощью web-сайта. Функционал полностью дублирует тот, который предоставляет мобильное приложение.

Техническая реализация

Мы выбрали Scala в качестве основного языка программирования. В качестве фреймворка для web-приложения — Play Framework 2.5. База данных — Maria DB. Для работы с базой данных используем slick + play-slick модуль.

Архитектура — микросервисная. Есть небольшие сервисы, которые построены на базе Akka + Akka streams, например сервис для работы с нотификациями (SMS, Email, Telegram, Push, Viber). Есть крупный, который включает в себя основную логику взаимодействия с системой.

UI построен с использованием библиотеки Materialize CSS от Google. С ее помощью можно довольно быстро строить интерфейс, который соответствует подходу Material Design.

Что касается мобильного приложения, то здесь мы решили сделать ставку на универсальность и экономию времени, пожертвовав при этом производительностью. Мы сделали реализацию на Apache Cordova, что позволило собирать приложение для всех популярных мобильных платформ.

Самое главное, что было бы интересно многим читателям — это какие преимущества и недостатки тех подходов и технологий, которые мы использовали.

Преимущества

  • Функциональное программирование. При правильном использовании даст вам код, на поддержку которого тратится меньше времени. Это результат избавления от сайд-эффектов и поддержки программирования на уровне типов, когда ошибку можно выявить уже на этапе компиляции.
  • Akka. Библиотека позволила нам реализовать эффективную и понятную модель concurrency.
  • Микросервисная архитектура. Конкретно в нашем случае — это разделение бизнес-логики, что делает поддержку кода более понятной.

Недостатки

  • Отсутствие хорошей документации для play framework и его компонентов. В результате тратится больше времени на имплементацию решений. Обычно все сводится к изучению исходников и тестов.
  • Проблемы с плагинами для Сordova. Зачастую они могут конфликтовать между собой, что приводит к необходимости тратить время на поиски нетривиальных решений в интернете. В отдельных случаях плагины приходится редактировать самостоятельно.
  • Скорость компиляции кода на Scala. Иногда очень раздражает, особенно после долгой работы с Java.

Инфраструктура

Промышленным стандартом для развертывания приложений в последнее время стал docker, затем kubernetes. Каждый из наших сервисов мы контейнеризируем и запускаем на инфраструктуре Amazon. Образы хранятся в собственном репозитории.

Также мы используем другие их инструменты такие, как: EC2, SQS, SNS, S3.

Запуск

С начала разработки в апреле 2016 прошел год до того, как начала вырисовываться альфа-версия всей системы, включая мобильное приложение для Android и Web-приложение для администраторов. При разработке любой фичи мы решили изначально делать упор на Frontend, затем подгонять под него Backend. Это не всегда получается, но в тех случаях, когда удается, позволяет получить что-то более-менее видимое, хотя и не до конца работающее.

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

В августе 2018 мы принимали участие в тестатоне Testuastartups. Он был организован с целью объединения лучших тестировщиков Украины для того, чтобы в режиме соревнования протестировать стартапы в 3-х категориях: Android, iOS, Web. С нашим проектом мы охватывали сразу две категории: Android и Web.

В результате мы получили огромный опыт и список из более 500 дефектов, которые прорабатывали еще несколько месяцев.

Презентация нашего стартапа на тестатоне Testuastartups

Именно после исправления большинства значимых ошибок мы выпустили первый релиз Web-системы. От идеи до запуска работа заняла около полутора лет. Работа над мобильным приложением еще продолжается. Планируем релиз через несколько месяцев.

Последующие улучшения

Идеи улучшения продукта приходят постоянно, и мы стараемся их внедрять по мере возможностей. В последнее время заинтересовались темой ботов для социальных сетей и появилось решение реализовать бот для Telegram c функционалом полноценного мобильного приложения. Преимущество в том, что не нужно задумываться над дизайном интерфейса, а выбрать компоненты из уже готового набора. Такой интерфейс получается уже привычным для пользователя.

На текущий момент у нас зарегистрированы около 70 компаний.

В этом году команда решила сделать ставку на популяризацию и продвижение разработки. До сих пор это направление для нас новое, но не менее интересным. В первую очередь мы ориентируемся на представителей beauty-бизнеса, так как онлайн-регистрация для них — это весомый шаг на пути к автоматизации процессов и возможность получить полноценную CRM-систему.

Впереди еще много задач и их решений, а также бесценный опыт. Желаем всем удачи в реализации ваших проектов и идей и никогда не останавливаться!

LinkedIn

16 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Желаю успеха вашему проекту! Будете делать Telegram-бота, попробуйте Telegraff (github.com/ruslanys/telegraff).

Спасибо! Крутая библиотека. Мы на данный момент используем github.com/bot4s/telegram, но у Вас даже интереснее выглядит.

Спасибо, дорогой! Приятно слышать.

Парни идея крутая. Удачи Вам! Я понимаю, что вы бекендеры, сервисы там выделили, скала, кубернетес все дела. Но UI провалено, имхо конечно, выглядит убого и не удобно. Совет: выделите деньги из своих зп на UI. Должно быть красиво + удобно и без багов, без корявостей. Попробую перечислить то, что бросается в глаза: шрифты(ужас), иконки выбора категорий, выбор категорий какого-то черта меньше инпутов, текст в инпуте коряво, кнопка «добавить компанию» странно расположена, подвал вообще ужас съехал куда-то влево. Выбор категории имхо слишком неудобно, много категорий, искать, выискивать. Вообщем как-то так...

Спасибо за конструктив! Есть есть/будет желание поучаствовать — свяжитесь со мной, буду рад.

Около года назад попадался на глаза сервис yclients.com
По сути, ваши прямы конкуренты. Одно отличие — они позволяют добавлять форму на свой сайт. Собственно, таким образом они и попались мне на глаза: ряд киевских салонов используют данный сервис.
Возможно, найдете для себя еще какие-нибудь интересные моменты. + конкурентов нужно знать «в лицо».

Спасибо большое за отзыв! Это правда, yclients-очень крупный продукт, который уже давно на рынке. Еще несколько подобных: booksy.net, simplybook.me

«Нет доступных сотрудников», сложилось впечатление что база была спаршена и причесана, но реального контакта с компаниями нет. Смысл это релизить, если нечем пользоваться?

В нормальних країнах ті всі сервіси мають онлайн букінг у себе на сайті. Навіщо мені встановлювати ще якийсь додаток? І впридачу у нас більшість цих сфер послуг далі веде запис у зошит. Навіщо їм тратитись на якийсь коп’ютер?))

Выпустили в прод без данных. Не смог записатьс в Добробут.
Вы чем думаете вообще?
Этот самый основной кейс.

UX так себе, мягко говоря.
Попробовал побыть «клиентом».

Встречает меня почему-то англоязычная версия сайта, хотя домен com.ua и нахожусь я в Украине. Нашел переключатель языков где-то в подвале, тапнул на мобильном — улетел наверх страницы. Прокрутил в подвал, увидел появившийся селектор языков, выбрал нужный.

Попробовал найти парикмахера в Днепре. Выбрал город, раздел «Красота и здоровье». Бейджик оптимистично показывает число 50, но на странице пусто. Зато есть простыня текста про то, как круто стричься. На этом, уверен, 95% людей закроет сайт и забудет о нем навсегда.

Еще о багах.
Жители Тернополя, Умани, Ужгорода, Винницы и Запорожья на десктопе не смогут воспользоваться селектором городов, потому что их города съел overflow: hidden. К тому же, я понимаю почему города отсортированы именно в таком порядке, но менее опытный пользователь может не догадаться, что Винницу надо искать в конце списка.

Зачем на странице поиска присутствует ссылка «Поиск» ведущая на эту же страницу?

Почему, когда я ввожу «стри» в строке поиска («стрижка»), в списке присутствует Гастроэнтеролог?

Ну и по мелочи кое-где опечатки, адаптивная верстка немного ломается.

Полез проверить. Ну да. Пусть даже меня встретила ру версия. Пичаль. И визуального дазайна то же нет.

Защита от токсичных клиентов (конкурентов) реализована? Если нет, что вместо удобного сервиса компании получат антирекламу за свои деньги. Надеяться на то, что довольные клиенты перекроют искусственные негативные отзывы, я бы не стал.
И поприятнее дизайн бы не помешал. Что-то такое «глобальное» должно быть, вызывающее доверие. Это если Вы хотите зарабатывать, конечно, а не «продаться»

огромная благодарность за конструктивную критику и интересные идеи усовершенствования, обязательно примем к сведению

Привіт, Андрій !
Вітаю з релізом !

Подписаться на комментарии