Deweloper udostępnił bezpłatny, przeszukiwalny indeks zawierający każdy port morski i lotnisko na planecie – 3 804 porty i 9 640 lotnisk – bez konieczności rejestracji czy płacenia. Strona theportindex.online pozwala użytkownikom przeglądać dane lub pobierać pełny zestaw danych w formatach CSV lub JSON.

Dlaczego ten indeks był potrzebny

Twórca chciał znaleźć czystą, aktualną listę światowych portów morskich, ale napotkał przeszkodę: większość komercyjnych ofert znajduje się za paywallami, a publicznie dostępne listy są często przestarzałe o lata. Poleganie na niekompletnych lub nieaktualnych danych zmusza analityków do marnowania godzin na czyszczenie arkuszy kalkulacyjnych, co generuje koszty narastające w całej branży. Łącząc trzy publiczne źródła – amerykański rządowy indeks portów, międzynarodowy katalog kodów lokalizacji oraz społecznościową bazę danych lotnisk – deweloper stworzył pojedyncze, ujednolicone źródło odniesienia, z którego każdy może skorzystać natychmiast.

Źródła danych stojące za projektem

  • NGA World Port Index – zestawienie rządu USA, które dostarcza podstawowe szczegóły dla każdego uznanego portu morskiego.
  • UN/LOCODE – system kodów lokalizacji ONZ, który dodaje ustandaryzowane identyfikatory dla portów i lotnisk.
  • OurAirports – utrzymywana przez społeczność kolekcja informacji o lotniskach, zawierająca m.in. długości pasów startowych i współrzędne.

Każde źródło oferuje inny fragment obrazu, ale żadne z nich samo w sobie nie dostarcza gotowego do użycia, przeszukiwalnego katalogu. Ich połączenie wymagało czegoś więcej niż kopiuj-wklej; deweloper musiał rozwiązać kwestie niespójności, duplikujących się wpisów i brakujących pól.

Czyszczenie danych: trzy wypracowane trudnym procesem lekcje

  1. Zagnieżdżone znaki nowej linii psują naiwne parsery – pliki CSV zawierające znaki nowej linii wewnątrz pól w cudzysłowie nie mogą zostać podzielone prostą komendą „split on newline”. Właściwy parser CSV jest niezbędny, aby zachować spójność wierszy.
  2. Wartości odstające ukrywają błędy – niektóre terminale naftowe podawały głębokości rzędu 900 metrów, co jest wartością właściwą dla boi cumowniczych, a nie portów. Filtrowanie nieprawdopodobnych liczb było konieczne, aby rankingi oparte na głębokości pozostały wiarygodne.
  3. Zera to często symbole zastępcze – głębokość zapisana jako zero zazwyczaj oznacza, że pomiar jest nieznany, a nie że woda jest płaska. Traktowanie zera jako brakujących danych pozwala zachować integralność każdej analizy zależnej od głębokości.

Dodawanie wartości wykraczającej poza surowe liczby

Indeks robi coś więcej niż tylko listuje współrzędne. W przypadku portów tłumaczy głębokość na klasy jednostek, które mogą bezpiecznie zawinąć, zmieniając pojedynczą metrykę w praktyczną pomoc w podejmowaniu decyzji. Dla lotnisk długość pasa startowego jest mapowana na typy samolotów, które mogą tam operować, co daje pilotom i planistom możliwość błyskawicznej oceny możliwości operacyjnych.

Siatka przestrzenna łączy każdy port z najbliższymi lotniskami i odwrotnie, zmieniając stronę w narzędzie do eksploracji. Użytkownicy mogą odkryć na przykład, które lotniska znajdują się w zasięgu krótkiej jazdy samochodem od danego portu – funkcja ta jest przydatna przy planowaniu transportu multimodalnego.

Budowa silnika strony statycznej na dużą skalę

Cały front-end działa na Next.js z generowaniem statycznym. Podczas procesu budowania (build process) wstępnie renderowanych jest około 14 000 stron – po jednej dla każdego portu i lotniska. Ponieważ nie ma bazy danych ani logiki po stronie serwera, strona nie generuje stałych kosztów obliczeniowych; działa na sieci dostarczania treści (CDN), która błyskawicznie serwuje strony na całym świecie.

Pułapki SEO i rozwiązanie problemu „thin content”

Przesyłanie tysięcy szablonowych stron może wzbudzić niepokój wyszukiwarek, które mogą uznać stronę za posiadającą „thin content” (ubogą treść) i obniżyć jej pozycję w rankingach. Deweloper napotkał ten problem, gdy wniosek o AdSense został odrzucony. Rozwiązaniem było pozostawienie pełnego zestawu stron dla odwiedzających, ale dodanie dyrektywy noindex dla wszystkich stron poza 400 najlepszymi, wysokiej jakości stronami w każdej kategorii. Informuje to roboty indeksujące, że w wynikach wyszukiwania powinny pojawiać się tylko najbardziej wartościowe strony, co pozwala zachować wiarygodność przy jednoczesnym oferowaniu pełnego zestawu danych.

Kto odnosi korzyści i jakie są ograniczenia

  • Firmy logistyczne mogą szybko zweryfikować, czy statek ładunkowy zmieści się w limitach głębokości portu, bez przeszukiwania wielu plików PDF.
  • Planiści linii lotniczych zyskują natychmiastowy dostęp do mapowania długości pasów startowych na typy samolotów, co jest przydatne w badaniach wykonalności tras.
  • Deweloperzy i badacze otrzymują czysty, czytelny dla maszyn zrzut danych, który można zaimportować do własnych narzędzi.

Co dalej z projektem

Twórca prosi społeczność o opinie na temat dodatkowych funkcji.

Podsumowanie

Rozwiązując uciążliwe problemy z czyszczeniem danych, dodając warstwy wnioskowania oraz omijając koszty serwerowe dzięki generowaniu statycznemu, programista pokazuje, że lekka architektura może dostarczyć narzędzie użyteczne na skalę globalną — o ile jesteś gotów zaakceptować okresowe aktualizacje i zwracać uwagę na wytyczne wyszukiwarek.