Рубрики
Без рубрики

Как я объединил миллион данных и создал веб -сайт путешествий

Мое 60-дневное путешествие от Idea до #1 на Reddit. Tagged Startup, JavaScript, Indiehacker, React.

Это был декабрь 2019 года. Мрачная погода и холодные температуры в Торонто заставили меня жаждать теплого отдыха. Когда я проходил перемещение через результаты поиска, я понял, что у меня были открытые десятки вкладок, чтобы ответить на довольно простой вопрос: «В какие теплые места можно путешествовать в декабре с дешевыми рейсами?»

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

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

60 дней спустя, Visabug родился и мягко забит на Reddit, где он пошел в #1 на SideProject и Reactjs субреддиты. 🎉

Мои цели для Visabug были:

  • Создайте что -то, что действительно полезно: Я не хотел просто что -то строить, потому что это было технически интересно.
  • Сделайте данные свободно доступными, чтобы помочь людям принимать лучшие решения: Путешествие открывает наши глаза на другие культуры и делает нас более терпимыми. Я не хотел скрывать данные за Paywalls.

Получение информации о стране

Первой частью данных, которые меня интересовали, была информация о стране. Я хотел ответить на вопрос, «В какие страны я могу легко путешествовать, и сколько будет стоить в среднем, чтобы там летать?»

Начать, Я получил список из всех стран мира. Тогда я использовал Данные из Всемирного банка Наряду с API Google Geoocoding для получения общих данных, таких как местоположение, популяция, столицы, языки и многое другое.

Это была моя отправная точка. Я создал файл JSON для каждой страны, поэтому у меня было 238 файлов JSON под названием Канада , India.json , так далее.

С небольшим количеством дополнительной работы, я также смог найти данные о:

  • Связанные страны и близлежащие страны
  • Регионы и континенты
  • Население
  • Погодные условия (температура и количество осадков)

Получение информации о визе и путешествиях

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

Я повернулся к поиску Google. Оказывается, когда вы ищете это в Google, вы получаете хорошую карту с некоторой полезной информацией:

Я написал сценарий, который создал множество запросов поиска Google с перестановкой каждой страны. Это выглядело примерно так:

const visaSearchSet = [ 
  "usa visa requirement for canada citizens", 
  "brazil visa requirement for algeria citizens" 
  ...
]

Затем я написал Кукольник Скрипт, который запросил Google и соскребил набор результатов с карты. Это было превращено в другую функцию JavaScript, которая проанализировала строку в структуру данных. Результатом было что -то вроде этого:

"united-kingdom": { 
  "nepal": { 
    visaCategory: "required", 
    validity: "three to six months from date of issue", 
    embassy: "12A, Kensington Palace Gardens, London, 48 4KU" 
  }, 
  ...
}

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

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

К счастью, есть сайт под названием SmartTraveller Это действительно позволяет легко получить рекомендации по путешествиям, таможенную информацию, иммунизацию и многое другое.

В настоящее время Visabug может отслеживать:

  • Требования к визам между любыми двумя странами мира
  • Классифицирует визы как «требуется», «Не требуется», «e-visas», и «Повреждены визы»
  • Поддержка виз в районе Шенгена
  • Места посольства
  • Советы по путешествиям
  • Таможенная информация (скоро)
  • Иммунизации (скоро)
  • Многострановые визы (скоро появится)

Получение городских данных

Далее я хотел получить данные города. Для этого мне пришлось сначала выяснить самые популярные города в мире. Я не мог просто использовать население, потому что многие популярные города относительно небольшие. Я использовал Этот бесплатный набор данных Для моего первоначального набора городов. В качестве бонуса этот набор данных позволил мне отобразить города по своей родительской стране.

Затем я хотел собрать несколько полезных показателей об этих городах.

  • Чем известен город? Чтобы решить это, я использовал TripAdvisor, чтобы получить самые популярные вещи, и классифицировал их.
  • Какова стоимость жизни? Индекс стоимости жизни от Numbeo помогла обеспечить относительные затраты на город.
  • Uber доступен? На веб -сайте Uber есть список всех городов, в которых они работают.
  • Насколько это безопасно? У Numbeo также есть индекс безопасных городов!

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

В настоящее время я также собираю:

  • Средние цены на рейсы между двумя странами
  • Стоимость еды
  • Интернет скорости
  • Популярные поставщики SIM -карты
  • Безопасна ли вода для питья
  • Качество воздуха (скоро 🤫)
  • Популярные туристические достопримечательности (скоро 🤫)

Создание фильтров

В Visabug вы можете использовать фильтры, чтобы найти уникальные направления. Вот скриншот фильтрации.

Помимо фильтров требований визы, фильтрация фактически работает на уровне города, а не на уровне страны. Поэтому, когда вы применяете фильтр, такой как «песок и пляжи», Visabug находит все города, которые, по его мнению, близки к пляжам, и пузырят результат до уровня страны.

Существует некоторое усреднение, которое выполняется для того, чтобы страны не были отмечены как ложные позиции. Например, вы бы не сказали, что Канада близко к песку и пляжам, но Торонто есть. Я написал какой -то код, чтобы убедиться, что один город не влияет на классификацию всей страны.

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

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

Получение изображений

Я действительно доволен тем, как выглядит пользовательский интерфейс Visabug, и большая часть этого связана с изображениями. Это просто заставляет меня хотеть путешествовать!

Изображения были очень легко получить. Я подписался на Аккаунт разработчика Unsplash Это дало мне доступ к 50 запросам/час через UNSPLASH API. 5 часов спустя у меня были изображения для всех 238 стран мира. Чтобы определить, какой изображение показать для страны, я заказал изображения Unsplash Loys и выбрал самый любимый.

Недавно я был утвержден Чтобы получить учетную запись партнера Unsplash, которая теперь получает мне 5000 запросов/час. Я намерен использовать это, чтобы иметь лучшие изображения для городов в ближайшем будущем.

Все данные изображения хранятся как файлы JSON, поэтому мне не нужно делать какие-либо запросы API в режиме реального времени.

Хранение данных

Самое смешное, что я хотел построить Visabug очень быстро, чтобы увидеть, есть ли интерес к продукту. Чтобы ускорить ситуацию, я фактически запустил сайт без базы данных. 😅

В настоящее время Visabug Имеет 2 файла JSON: один со всеми данными страны, а другой со всеми городскими данными. Вместе они около 300 МБ. Когда приложение запускается, эти данные загружаются в память. Это не идеально, но до сих пор работало.

Конечно, я не могу отправлять 300 МБ данных клиенту, поэтому у Visabug есть сервер Nodejs, который выполняет обработку на этих данных и отправляет только то, что хочет клиент. Все транслируется на сервере, и у меня еще нет публичного API.

Что произошло дальше?

Я приобрел все эти данные к янвату и провел в следующем месяце, фактически создавая продукт. Это то, на что выглядел Visabug в январе.

Вот как Visabug выглядел 60 дней назад. С тех пор я проводил около 1 часа каждый день, и это прошло долгий путь! Постоянство и последовательность недооценены. https://t.co/Lsy8sbqc2e

Я собираюсь написать о том, как я разработал веб -сайт в следующем посте. Я получил помощь от Натана Барри, который щедро помог мне сформировать обмен сообщениями на домашней странице, и Крис Мессина дал мне много полезных советов по продукту.

Следуй за мной в Твиттере Или здесь, на dev.to, если вы хотите, чтобы вас уведомляли, когда выйдет этот пост. Конечно, пожалуйста, сделай Проверьте Visabug И дайте мне знать, что вы думаете!

Оригинал: “https://dev.to/tilomitra/how-i-aggregated-a-million-datapoints-and-built-a-travel-website-4726”