chrisgeyer1215/SeeYou

GitHub: chrisgeyer1215/SeeYou

SeeYou 是一个全栈实时地理空间情报可视化平台,通过聚合 25 个以上公共 API 的数据并在 3D 地球上进行高性能渲染,实现多维度的全球实时态势监控。

Stars: 0 | Forks: 0

# SEEYOU SeeYou — Real-time global intelligence platform
**在浏览器中运行的实时全球情报平台。** 追踪飞机、卫星、地震、野火、网络威胁、海军舰艇、军事基地、核设施、太空碎片等——全部通过带有军事级着色器的 3D 地球渲染呈现。 20 多个实时数据图层。25 多个免费 API。零成本。 [入门指南](#getting-started) · [功能](#features) · [架构](#architecture) · [数据源](#data-sources)

## 什么是 SeeYou? SeeYou 是一个全栈情报平台,从 25 个以上的公共 API 聚合实时数据,并将所有内容渲染在交互式的 CesiumJS 3D 地球上。每一个数据点都是真实的——实时飞机应答机、轨道力学计算、地震读数、卫星探测到的火灾、地缘政治事件等等。 整个技术栈在本地运行,无需付费服务。
## 功能 ### 监控图层 | 图层 | 描述 | 来源 | |-------|-------------|--------| | **飞机** | 30,000+ 架次实时航班——位置、呼号、高度、航向、垂直速度 | adsb.lol ADS-B | | **卫星** | 10,000 个带有 SGP4 预测位置和轨道路径的轨道物体 | CelesTrak TLE | | **太空碎片** | 63,000 个被追踪物体——碎片、火箭残骸、分析物体 | CelesTrak / Space-Track | | **监控摄像头** | 来自 6 大洲 30 多个城市的 800+ 实时视频流 | TfL, NYC DOT, Caltrans 等 | | **交通** | 真实道路网络上的动态粒子流 | OpenStreetMap Overpass | | **天气雷达** | 带有时间动画的全球雷达叠加层 | RainViewer | | **温度** | 全球温度热力图叠加层 | OpenWeatherMap | | **空气质量** | 全球 AQI 热力图叠加层(美国 EPA 标准) | WAQI / AQICN | | **风场** | 使用 IDW 插值的 4,000 粒子风流 | Open-Meteo | | **METAR** | 带有飞行类别(VFR/MVFR/IFR/LIFR)的航空气象站 | aviationweather.gov | | **自然事件** | 活跃的野火、风暴、火山、洪水 | NASA EONET | ### 情报图层 | 图层 | 描述 | 来源 | |-------|-------------|--------| | **地震** | 带有从震中发出的动态冲击波的实时地震活动 | USGS GeoJSON | | **野火** | 卫星探测到的具有辐射功率的活跃火灾 | NASA FIRMS | | **海底电缆** | 全球海底电缆网络及登陆点 | TeleGeography | | **军事基地** | 全球 2,000+ 设施——空军、海军、陆军 | Wikidata | | **核设施** | 带有状态的 440+ 反应堆和武器设施 | IAEA | | **海军舰艇** | 通过 AIS 追踪的受制裁船只并带有警报标记 | AIS 数据 | | **网络威胁** | 源国家与目标国家之间的动态攻击弧线 | ThreatFox, AbuseIPDB | | **地缘政治事件** | 实时进行地理定位的全球新闻和冲突事件 | GDELT | | **空间天气** | 极光卵、Kp 指数、太阳风暴警报 | NOAA SWPC | | **交汇警报** | 当多个图层在地理上交叉时发出的多信号警告 | 内部引擎 | ### 军事情报 - **IMM-EKF 预测** — 相互作用多模型扩展卡尔曼滤波器使用 4 种运动模型提前 5 分钟预测军用飞机轨迹 - **模式检测** — 使用圆拟合和双峰航向分析自动进行轨道、战斗空中巡逻、等待航线和过境分类 - **战术着色器** — GLSL 后处理:夜视(NVG)、FLIR 热成像、CRT 显示器、动漫赛璐珞着色 - **HUD 叠加层** — 每个着色器的平视显示器,带有瞄准十字线、坐标读数和状态指示器 ### 界面 - 带有逐图层过滤器和计数器的可伸缩侧边栏 - 跨所有数据域的通用搜索(Cmd+K) - 带有视口矩形的 SVG 小地图 - 带有时间导航的 UTC 时间轴 - 每个数据图层的点击检查弹窗 - 带有活跃图层指示器的情报图例 - 用于着色器、全屏和导航的键盘快捷键
## 技术栈 ``` Frontend React 19 · TypeScript · Vite · TailwindCSS · CesiumJS (Resium) · GLSL Shaders · Web Workers Backend Rust · Axum · Tokio · 18 Workspace Crates · SGP4 · nalgebra Infrastructure Redis 7 · Docker Compose · WebSocket ```
## 入门指南 ### 前置条件 | 工具 | 版本 | |------|---------| | Node.js | 20+ | | Rust | 1.75+ | | Docker | 24+(可选,仅用于完整的本地基础设施) | | Cesium Ion Token | 免费 — [在此注册](https://ion.cesium.com/) | ### 设置 ``` # Clone git clone https://github.com/chrisgeyer1215/SeeYou.git cd SeeYou # 配置环境 cp .env.example .env # 编辑 .env — 添加你的 Cesium Ion token ``` ### 运行选项 #### 选项 A — Railway 基础设施(无需本地 Docker,如果您的数据库/Redis 在 Railway 上则推荐使用) 如果您的 `.env` 使用 Railway 服务并且 **Redpanda 无法公开访问**,请设置: ``` BUS_ENABLED=false ``` 然后只需运行 2 个终端: ``` # 终端 1:backend (端口 3001) cd backend cargo run -p server # 终端 2:frontend (端口 5173) cd frontend npm install npm run dev ``` 除非您拥有可访问的公共代理(`REDPANDA_BROKERS_PUBLIC`),否则**不要**运行 `consumer_redis` / `consumer_postgres`。 #### 选项 B — 完整的本地消息总线栈(Docker + Redpanda 消费者) ``` # Infra docker compose up -d redis postgres redpanda surrealdb # 终端 1:backend cd backend cargo run -p server # 终端 2:redis consumer cd backend cargo run -p consumer_redis # 终端 3:postgres consumer cd backend cargo run -p consumer_postgres # 终端 4:frontend cd frontend npm install npm run dev ``` 可选的图数据库消费者: ``` cd backend cargo run -p consumer_graph ``` #### tmux 助手(4 个面板) ``` # 默认 Railway 模式(无 Docker,如果 broker 仅为内部,则自动禁用 consumers) ./scripts/dev-tmux.sh # 强制 consumers RUN_CONSUMERS=1 ./scripts/dev-tmux.sh # 首先启动本地 Docker infra ./scripts/dev-tmux.sh seeyou-dev --docker ``` 打开 **http://localhost:5173**。地球将立即加载。实时数据将在几秒钟内流入。 ### 验证 ``` # Backend 健康检查 curl http://localhost:3001/health # → {"status":"ok","redis":"connected"} # WebSocket — 打开浏览器 DevTools → Network → WS 标签页 # 你应该每 2 秒看到一次 AircraftBatch 消息 ```
## 架构 SeeYou 遵循 **轮询-缓存-广播** 架构。Rust 后端不断轮询外部 API,将结果缓存到带有 TTL 的 Redis 中,并通过 WebSocket 将更新广播给所有连接的客户端。React 前端使用 GPU 批处理的 Primitive Collections 将所有内容渲染在 CesiumJS 3D 地球上。 ``` External APIs (25+) │ │ HTTP polling (2s – 30min) ▼ ┌─────────────────────────────────────────┐ │ Rust Backend (Axum) │ │ │ │ 18 crates · 8 background trackers │ │ IMM-EKF prediction · SGP4 propagation │ │ Redis cache (15s – 24h TTL) │ │ REST API + WebSocket broadcast │ └────────────────┬────────────────────────┘ │ │ WebSocket (chunked JSON) │ REST (JSON) ▼ ┌─────────────────────────────────────────┐ │ React Frontend (Vite) │ │ │ │ 20+ CesiumJS Primitive layers │ │ GLSL post-processing shaders │ │ Zero external state libraries │ │ BillboardCollection / PointPrimitive │ │ ~20 GPU draw calls (down from 8000+) │ └─────────────────────────────────────────┘ ``` ### 项目结构 ``` SeeYou/ ├── frontend/ React + CesiumJS SPA │ └── src/ │ ├── components/ 33 domain component groups │ ├── hooks/ State management (zero dependencies) │ ├── services/ REST API clients │ ├── shaders/ GLSL post-processing │ ├── types/ TypeScript interfaces │ └── workers/ Web Workers ├── backend/ Rust workspace │ └── crates/ │ ├── server/ Entry point — Axum, config, AppState │ ├── api/ REST route handlers │ ├── ws/ WebSocket broadcast layer │ ├── cache/ Redis caching with TTL │ ├── services/ ADS-B + METAR trackers │ ├── prediction/ IMM-EKF trajectory prediction │ ├── cameras/ 6-provider aggregation + health checks │ ├── satellites/ CelesTrak TLE + SGP4 │ ├── events/ NASA EONET │ ├── weather/ Open-Meteo grid │ ├── traffic/ Overpass API road parser │ ├── cables/ Submarine cable network │ ├── seismic/ USGS earthquake data │ ├── fires/ NASA FIRMS fire detection │ ├── gdelt/ Geopolitical event stream │ ├── maritime/ AIS vessel tracking │ ├── cyber/ Cyber threat intelligence │ └── space_weather/ NOAA space weather ├── docs/ Documentation (Docsify) └── docker-compose.yml Redis infrastructure ``` ### 性能 所有可视化图层都使用命令式 CesiumJS Primitive Collections 而不是 Entity API。每个广告牌、标签和点都被批处理为每个集合的单次 GPU 绘制调用。 | 指标 | 数值 | |--------|-------| | GPU 绘制调用(所有图层均活跃) | ~20 | | 启用 20+ 图层时的 FPS | 50-60 | | 飞机更新延迟 | ~2 秒 | | 卫星轨道预测 | SGP4 with WGS-84 | | 预测时间范围 | 300 秒 | | 风场粒子数 | 4,000 | | 最大并发飞机数 | 30,000+ | | 最大追踪轨道物体数 | 63,000+ |
## 数据源 所有数据均从免费的公共 API 获取。可选的 API 密钥可解锁额外的图层(温度、空气质量)。 | 来源 | 数据 | 轮询 | |--------|------|---------| | adsb.lol | 飞机位置 (ADS-B) | 2秒 | | CelesTrak | 卫星 TLE / 太空碎片 | 60秒 | | USGS | 地震事件 | 5分钟 | | NASA FIRMS | 活跃野火 | 30分钟 | | NASA EONET | 自然灾害 | 30分钟 | | GDELT | 地缘政治事件 | 15分钟 | | NOAA SWPC | 空间天气、极光 | 15分钟 | | TeleGeography | 海底电缆 | 24小时 | | ThreatFox / AbuseIPDB | 网络威胁 | 15分钟 | | aviationweather.gov | METAR 气象站 | 5分钟 | | Open-Meteo | 天气网格 | 10分钟 | | RainViewer | 雷达瓦片 | 5分钟 | | OpenWeatherMap | 温度热力图 | 按需 | | WAQI / AQICN | 空气质量热力图 | 按需 | | Overpass API | 道路网络 | 按需 | | TfL / NYC DOT / Caltrans | 监控摄像头视频流 | 5分钟 | | Wikidata | 军事基地 | 静态 | | IAEA | 核设施 | 静态 |
## 键盘快捷键 | 按键 | 操作 | |-----|--------| | `1` | 夜视着色器 | | `2` | FLIR 热成像着色器 | | `3` | CRT 显示器着色器 | | `4` | 动漫着色器 | | `5` | 重置为正常 | | `F` | 全屏 | | `B` | 切换侧边栏 | | `/` 或 `Cmd+K` | 搜索 |
## 环境变量 ``` # 必需 VITE_CESIUM_ION_TOKEN= # Free from https://ion.cesium.com VITE_WS_URL=ws://localhost:3001/ws VITE_API_URL=http://localhost:3001 REDIS_URL=redis://127.0.0.1:6379 # 可选 — 天气热力图图层 VITE_OPENWEATHER_API_KEY= # Free from https://home.openweathermap.org/api_keys VITE_WAQI_TOKEN= # Free from https://aqicn.org/data-platform/token/ # 可选 — backend 调优 SERVER_HOST=0.0.0.0 SERVER_PORT=3001 POLL_INTERVAL_SECS=2 SATELLITE_POLL_INTERVAL_SECS=60 CAMERA_POLL_INTERVAL_SECS=300 METAR_POLL_INTERVAL_SECS=300 WEATHER_POLL_INTERVAL_SECS=600 EVENTS_POLL_INTERVAL_SECS=1800 ```
## 许可证 本项目为专有项目,不开源。 Copyright (c) 2026 Theo Sanz。保留所有权利。 未经所有者事先书面许可,不得进行任何使用、复制、修改、分发、部署、转售、AI 训练或衍生作品。 许可请求:christophergeyer.dev1@gmail.com 如果此存储库在 GitHub 上公开,则仅适用 GitHub 平台及其服务条款所要求的有限权利(例如,在 GitHub 上查看和复刻)。未授予任何更广泛的许可。 有关完整条款,请参阅 [LICENSE](LICENSE) 和 [TERMS.md](TERMS.md)。
标签:CesiumJS, ESC4, OSINT, React, Rust, Syscalls, 三维地球, 可视化界面, 地理空间情报, 搜索引擎查询, 网络流量审计, 自动化攻击, 请求拦截