Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

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

$
0
0

В рубрике 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-систему.

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


Viewing all articles
Browse latest Browse all 8115

Trending Articles