Попытка решить проблему выбора авиабилетов перед отпуском

Привет всем! Хочу немного рассказать про то, как я делал, сделал и буду делать (наверное) в свободное время очередной travel-сервис для поиска авиабилетов.

Скриншот одной из страниц:

image

Мотивация и предыстория

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

  • у большинства агрегаторов недостаточно гибкий поиск (банально, нет фильтра по диапазону дат меньше месяца);
  • гибкий поиск а-ля "везде" и "когда угодно" на практике редко помогает;

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

Размышляя на эту тему я решил, что стоит попробовать сделать что-то свое, даже если не получится. А риск полного провала (не доедет до прода) был велик — ни разу до этого не делал сервис в одиночку, всегда рядом были опытные ребята и все они делали свой небольшой кусочек целого.

Для того, чтобы решить проблему выбора сформировал следующие фичи, которых мне не хватает:

  • Подборки с авиабилетами (по направлениями, интересам и т.п.);
  • Готовые сложные маршруты, например, точка A — точка B — точка C — точка A; (как выяснилось позднее, эта фича частично реализована на eightydays.me)
  • Карта, где можно самому строить такие сложные маршруты;
  • Поиск "везде" в гибком диапазоне дат с базовыми фильтрами.

Далее коротко опишу каждую попытку и промежуточный результат.

Попытка #1 #0

Регистрация красивого доменного имени на godaddy.com. Поиск команды на собственные деньги. Аренда сервера на digitalocean.com. Начало разработки. Провал.

Попытка #1

В этот раз, я решил не спешить с красивым доменом, командой и сервером. Все делаю локально на своем стареньком macbook air с 4гб оперативки.

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

  • Вникнуть в API, которые отдают билеты из кэша, и понять, как правильно получить полезную информацию; (они хорошо описаны, с этим проблем не было)
  • Сделать собственное API, которое готовит ее к визуализации на сайте; (в python и flask я уже умел до этого, с этим тоже ок);
  • Развернуть postgres для справочников — аэропорты, страны, интересы и т.п.; (ставится "в два клика")
  • Развернуть clickhouse для хранения промежуточных данных и логов; (как ни странно, тоже был готов к использованию за 5 минут, даже на стареньком macbook air с 4гб оперативки)
  • Подружить(сделать словари) postgres и clickhouse;
  • Найти бесплатный гео-сервис для определения локации;
  • Выбрать фреймворк для сайта — выбор пал на vue (vuetify), как фреймворк с самым низким порогом входа(по словам нескольких моих знакомых). Весь мой опыт веб-разработки до этого момента заключался только в использовании flask-admin. C веб-разработкой было больше всего проблем.

Результат можно посмотреть по ссылке cheapster.travel/collections (с мобильных устройств — смотрите на картинки)

или на картинках

image

image

На данном этапе выбрал доменное имя и арендовал сервер у hetzner за $5.

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

На эту попытку ушло 3-4 недели с перерывами (вечер-ночь-выходные).

Попытка #2

Нужна карта, подумал я, и приступил к реализации фичи Карта, где можно самому строить такие сложные маршруты.

После часа гугления и краткой консультации со знакомым выбрал mapbox, а именно пакет mapbox-gl-vue для vue.

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

Суть данной фичи:

  • Отображается карта с ценами из вашего города;
  • Выбираете интересный вариант по цене на карте;
  • После выбора варианта данные на карте перезагружаются для выбранной точки;
  • Повторяете пункты выше нужное количество раз.

Результат cheapster.travel/map

Картинки

image

image

На эту попытку ушло 1-2 недели (вечер-ночь-выходные).

Попытка #3

После новогодних праздников пришло время для фичи Поиск "везде" в гибком диапазоне дат.
Это самая простая попытка — почти все методы в API уже реализованы ранее, нужно только чуть-чуть подкрутить и нарисовать это с помощью vuetify (уже имея небольшой опыт).

Суть фичи:

  • Простой, но функциональный поиск по гибкому диапазону дат;
  • Есть базовые фильтры (без визы, только прямые и т.п.)

Результат cheapster.travel/simple

image

На эту попытку ушло 2 вечера. Самая удачная попытка.

Вместо итогов

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

Всем хорошего дня!

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *