Pull to refresh

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

Reading time3 min
Views9K

Привет всем! Хочу немного рассказать про то, как я делал, сделал и буду делать (наверное) в свободное время очередной 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 вечера. Самая удачная попытка.


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


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


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


upd:
Продолжение здесь: habr.com/ru/post/489510/

Tags:
Hubs:
Total votes 9: ↑7 and ↓2+9
Comments22

Articles