Розробник випустив безкоштовний пошуковий індекс, що містить перелік усіх морських портів та аеропортів планети — 3 804 порти та 9 640 аеропортів — без необхідності реєстрації чи оплати. Сайт, theportindex.online, дозволяє користувачам переглядати дані або завантажувати повний набір даних у форматах CSV або JSON.
Чому виникла потреба в цьому індексі
Автор прагнув знайти чистий, актуальний список морських портів світу, але зіткнувся з перешкодою: більшість комерційних пропозицій знаходяться за платним доступом, а публічно доступні списки часто застарівають на роки. Покладання на неповні або застарілі дані змушує аналітиків витрачати години на очищення електронних таблиць — витрати, які в масштабах галузі стають значними. Об'єднавши три публічні джерела — портівський індекс уряду США, міжнародний довідник кодів місцезнаходження та базу даних аеропортів на основі краудсорсингу — розробник створив єдиний уніфікований довідник, яким будь-хто може скористатися миттєво.
Джерела даних «під капотом»
- NGA World Port Index – компіляція уряду США, що надає базові відомості про кожен визнаний морський порт.
- UN/LOCODE – система кодів місцезнаходження ООН, яка додає стандартизовані ідентифікатори для портів та аеропортів.
- OurAirports – підтримувана спільнотою колекція інформації про аеропорти, включаючи довжину злітних смуг та координати.
Кожне джерело пропонує лише частину загальної картини, але жодне з них самотужки не надає готового до використання пошукового каталогу. Об'єднання цих джерел потребувало більшого, ніж просто копіювання та вставки; розробнику довелося усувати невідповідності, дублікати та відсутні поля.
Очищення даних: три важко здобуті уроки
- Вбудовані символи переходу на новий рядок ламають наївні парсери – CSV-файли, що містять розриви рядків усередині взятих у лапки полів, неможливо розділити за допомогою простої команди
split on newline. Для збереження цілісності рядків необхідний належний CSV-парсер. - Викиди (outliers) приховують помилки – деякі нафтові термінали вказували глибину 900 метрів — показник, що характерний для швартовних буїв, а не для гаваней. Фільтрація неправдоподібних чисел була необхідною для забезпечення достовірності рейтингів за глибиною.
- Нулі часто є лише заповнювачами – глибина, записана як нуль, зазвичай означає, що вимірювання невідоме, а не те, що вода плоска. Розгляд нуля як відсутніх даних зберігає цілісність будь-якого аналізу, що залежить від глибини.
Додавання цінності понад просто сухі цифри
Індекс робить більше, ніж просто перелічує координати. Для портів він перетворює глибину на класи суден, які можуть безпечно швартуватися, перетворюючи один показник на практичний інструмент для прийняття рішень. Для аеропортів довжина злітної смуги зіставляється з типами повітряних суден, які можуть там експлуатуватися, що дозволяє пілотам і планувальникам миттєво оцінити можливості об'єкта.
Просторова сітка пов'язує кожен порт із найближчими аеропортами і навпаки, перетворюючи сайт на інструмент для дослідження. Користувачі можуть дізнатися, наприклад, які аеропорти розташовані в межах короткої поїздки від певної гавані — функція, що є корисною для мультимодального планування вантажних перевезень.
Побудова масштабованого рушія для статичних сайтів
Весь фронтенд працює на Next.js зі статичною генерацією. Під час процесу збірки попередньо рендериться приблизно 14 000 сторінок — по одній для кожного порту та аеропорту. Оскільки немає бази даних або серверної логіки, сайт не створює постійних витрат на обчислення; він працює через мережу доставки контенту (CDN), яка миттєво обслуговує сторінки по всьому світу.
Пастки SEO та вирішення проблеми «тонкого контенту»
Завантаження тисяч шаблонних сторінок може викликати тривогу у пошукових систем, які можуть визначити сайт як такий, що має «тонкий контент» (thin content), і знизити його рейтинг. Розробник зіткнувся з цією проблемою, коли заявку на AdSense було відхилено. Рішенням стало те, що повний набір сторінок залишився доступним для відвідувачів, але до директиви noindex було додано правило для всіх сторінок, окрім 400 найкращих високоякісних сторінок у кожній категорії. Це вказує краулерам, що в результатах пошуку мають з'являтися лише найцінніші сторінки, що зберігає авторитетність сайту, водночас надаючи доступ до повного набору даних.
Кому це корисно та які існують обмеження
- Логістичні компанії можуть швидко перевірити, чи підходить вантажне судно під обмеження глибини порту, не переглядаючи численні PDF-файли.
- Планувальники авіакомпаній отримують миттєвий доступ до відповідності довжини злітної смуги типам повітряних суден, що корисно для дослідження доцільності маршрутів.
- Розробники та дослідники отримують чистий, придатний для машинного читання дамп даних, який можна імпортувати в індивідуальні інструменти.
Що далі для проєкту
Автор просить спільноту надати відгуки щодо додаткових функцій.
Підсумок
Вирішуючи проблеми з очищенням даних, додаючи шари виведення та уникаючи витрат на сервери завдяки статичній генерації, розробник демонструє, що легка архітектура здатна створити глобально корисний інструмент — за умови, що ви готові до періодичних оновлень і будете стежити за рекомендаціями пошукових систем.
