Interaktywna mapa zdarzeń geopolitycznych zbudowana z Next.js i Valyu API
Niedawno natknąłem się na interesujący projekt o nazwie globalthreatmap. Autor zbudował interaktywne centrum dowodzenia do monitorowania geopolityki, baz wojskowych i incydentów na całym świecie w czasie rzeczywistym. Jeśli kiedykolwiek znalazłeś się przyklejony do kokpitów z mapami konfliktów lub interesują Cię narzędzia OSINT, ten projekt z pewnością przyciągnie Twoją uwagę.

Dlaczego to jest potrzebne
Agregowanie rozproszonych wiadomości o wydarzeniach międzynarodowych w spójny obraz zawsze stanowiło wyzwanie. Zazwyczaj trzeba było monitorować dziesiątki kanałów na Telegramie, agregatorów wiadomości i baz danych.
Autor repozytorium postanowił zwizualizować ten strumień na ciemnej mapie Mapbox. Efektem jest kokpit, w którym zdarzenia geopolityczne są powiązane z współrzędnymi, skategoryzowane i wspierane kontekstem historycznym dla każdego kraju.

Co potrafi projekt
Główny ekran wita Cię interaktywną mapą i strumieniem zdarzeń. Rozłóżmy, jak wszystko jest zorganizowane w interfejsie:
- Interaktywna mapa z klastrowaniem. Punkty incydentów są grupowane podczas oddalania. Jest tryb mapy ciepła i automatyczne przewijanie wokół globu.
- Warstwa baz wojskowych. Bazy USA (zielone znaczniki) i obiekty NATO (niebieskie znaczniki) są naniesione na mapę. Kliknięcie otwiera kartę z nazwą obiektu, typem i krajem lokalizacji.
- Kontekst historyczny po kliknięciu kraju. Wybierz kraj na mapie, a aplikacja wyświetli dwie listy: bieżące konflikty oraz konflikty historyczne z datami i wynikami.
- Karty podmiotów. Możesz wprowadzić nazwę organizacji, PMC lub postaci politycznej, aby wygenerować szczegółowy raport analityczny z eksportem do CSV i prezentacją PowerPoint.

Interesujący szczegół: podczas generowania analiz projekt celowo wyklucza Wikipedia ze źródeł wyszukiwania, polegając na zewnętrznych podsumowaniach wiadomości i raportach za pomocą Valyu Answer API.
Architektura i stos technologiczny
Z technicznego punktu widzenia projekt jest napisany czysto i nowocześnie. Pod maską wykorzystuje świeży stos:
- Next.js 16 z App Router jako fundament aplikacji
- Mapbox GL JS i react-map-utf do renderowania map wektorowych
- Tailwind CSS v4 do stylowania interfejsu
- Valyu API (klient
valyu-js) do wyszukiwania zdarzeń, generowania odpowiedzi i szczegółowych badań - Zustand do zarządzania stanem mapy po stronie klienta
- Zod do walidacji przychodzących schematów danych
Aplikacja obsługuje dwa tryby działania: self-hosted (w pełni autonomiczne wdrożenie z własnym kluczem API) oraz tryb autoryzacji przez Valyu OAuth.
Struktura katalogów follows standard Next.js patterns:
globalthreatmap/
├── app/
│ ├── page.tsx # Главный дашборд
│ └── api/ # Роуты для событий, отчетов и баз
├── components/
│ ├── map/ # Компоненты карты и модалок
│ ├── feed/ # Лента событий
│ └── search/ # Поиск по сущностям
├── lib/
│ ├── valyu.ts # Интеграция с Valyu API
│ └── geocoding.ts # Извлечение геокоординат
└── stores/
└── map-store.ts # Стейт карты в Zustand
Jak wdrożyć lokalnie
Będziesz potrzebować Node.js 18+ oraz kluczy API dla Mapbox i usług Valyu, aby rozpocząć. Opcjonalnie możesz dodać klucz OpenAI, aby włączyć dokładniejsze wyodrębnianie geolokalizacji z tekstu.
Sklonuj repozytorium i zainstaluj zależności:
git clone https://github.com/unicodeveloper/globalthreatmap.git
cd globalthreatmap
npm install
Utwórz plik .env.local w głównym katalogu projektu:
NEXT_PUBLIC_MAPBOX_TOKEN=your_mapbox_token_here
VALYU_API_KEY=your_valyu_api_key_here
NEXT_PUBLIC_APP_MODE=self-hosted
# Опционально: улучшенный парсинг локаций через OpenAI
OPENAI_API_KEY=your_openai_api_key_here
Uruchom lokalny serwer deweloperski:
npm run dev
Po tym interfejs będzie dostępny pod adresem http://localhost:3000.
Przemyślenia i wnioski
Projekt jest interesujący jako gotowy przykład złożonego interfejsu geo zbudowanego z React. Jeśli planujesz tworzyć własny tracker zdarzeń, kokpit monitorowania infrastruktury lub narzędzie analityki OSINT, możesz tu znaleźć przydatne wzorce do pracy z Mapbox GL i stanem frontendu.
Uwaga do zapamiętania: generowanie szczegółowych dossier na 50 stron przez Deep Research trwa od 5 do 10 minut, ponieważ API przesyła zapytania do setek źródeł. Ale do wstępnych zadań zbierania faktów jest to całkowicie realna opcja. Kod źródłowy jest otwarty na licencji MIT, więc możesz swobodnie wykorzystać moduły mapy i geokodowania do własnych projektów.
Powiązane projekty