From c5d48aa6362cfa0c5ba06dbead5cd5c9f2bb0c69 Mon Sep 17 00:00:00 2001 From: anoracleofra-code Date: Thu, 26 Mar 2026 20:16:40 -0600 Subject: [PATCH] feat: pass FINNHUB_API_KEY to Docker, update layer defaults, cluster APRS - Add FINNHUB_API_KEY to docker-compose.yml so financial ticker works in Docker deployments - Update default layer config: planes/ships ON, satellites only for space, no fire hotspots, military bases + internet outages for infra, all SIGINT except HF digital spots - Add MapLibre native clustering to APRS markers (matches Meshtastic) with cluster radius 42, breaks apart at zoom 8 --- docker-compose.yml | 1 + frontend/src/app/page.tsx | 52 +++++++++------ frontend/src/components/MaplibreViewer.tsx | 78 ++++++++++++++++------ 3 files changed, 90 insertions(+), 41 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f226ee7..2871c27 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: - OPENSKY_CLIENT_SECRET=${OPENSKY_CLIENT_SECRET} - LTA_ACCOUNT_KEY=${LTA_ACCOUNT_KEY} - ADMIN_KEY=${ADMIN_KEY:-} + - FINNHUB_API_KEY=${FINNHUB_API_KEY:-} # Override allowed CORS origins (comma-separated). Auto-detects LAN IPs if empty. - CORS_ORIGINS=${CORS_ORIGINS:-} # Default Infonet relay peer so fresh installs can sync immediately. diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 55b73cd..a34c789 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -365,47 +365,55 @@ export default function Dashboard() { }, []); const [activeLayers, setActiveLayers] = useState({ + // Aircraft — all ON flights: true, private: true, jets: true, military: true, tracked: true, - satellites: true, + gps_jamming: true, + // Maritime — all ON ships_military: true, ships_cargo: true, ships_civilian: true, ships_passenger: true, ships_tracked_yachts: true, - earthquakes: true, - cctv: true, - ukraine_frontline: true, - global_incidents: true, - day_night: true, - gps_jamming: true, + fishing_activity: true, + // Space — only satellites + satellites: true, gibs_imagery: false, highres_satellite: false, + sentinel_hub: false, + viirs_nightlights: false, + // Hazards — no fire, rest ON + earthquakes: true, + firms: false, + ukraine_alerts: true, + weather_alerts: true, + volcanoes: true, + air_quality: true, + // Infrastructure — military bases + internet outages only + cctv: false, + datacenters: false, + internet_outages: true, + power_plants: false, + military_bases: true, + trains: false, + // SIGINT — all ON except HF digital spots kiwisdr: true, - psk_reporter: true, + psk_reporter: false, satnogs: true, tinygs: true, scanners: true, - firms: true, - internet_outages: true, - datacenters: true, - military_bases: true, - power_plants: false, sigint_meshtastic: true, sigint_aprs: true, - ukraine_alerts: true, - weather_alerts: true, - air_quality: true, - volcanoes: true, - fishing_activity: true, - sentinel_hub: false, - trains: true, - shodan_overlay: false, - viirs_nightlights: false, + // Overlays + ukraine_frontline: true, + global_incidents: true, + day_night: true, correlations: true, + // Shodan + shodan_overlay: false, }); const [shodanResults, setShodanResults] = useState([]); const [, setShodanQueryLabel] = useState(''); diff --git a/frontend/src/components/MaplibreViewer.tsx b/frontend/src/components/MaplibreViewer.tsx index f993d56..71fcfc1 100644 --- a/frontend/src/components/MaplibreViewer.tsx +++ b/frontend/src/components/MaplibreViewer.tsx @@ -1595,6 +1595,8 @@ const MaplibreViewer = ({ meshtasticGeoJSON && 'meshtastic-clusters', meshtasticGeoJSON && 'meshtastic-cluster-count', meshtasticGeoJSON && 'meshtastic-circles', + aprsGeoJSON && 'aprs-clusters', + aprsGeoJSON && 'aprs-cluster-count', aprsGeoJSON && 'aprs-triangles', ukraineAlertsGeoJSON && 'ukraine-alerts-fill', weatherAlertsGeoJSON && 'weather-alerts-fill', @@ -3180,44 +3182,82 @@ const MaplibreViewer = ({ /> - {/* APRS / JS8Call — pink triangles */} - + {/* APRS / JS8Call — pink triangles with clustering */} + - + +