indicaindependent/straittracker
GitHub: indicaindependent/straittracker
该项目是一个基于 Cloudflare 边缘架构的霍尔木兹海峡实时地缘政治情报追踪仪表板,解决区域态势信息聚合与可视化呈现的问题。
Stars: 0 | Forks: 0
# ⚡ StraitTracker
**实时霍尔木兹海峡地缘政治情报 —— 运行于 Cloudflare 边缘**
[](https://tracker.warheatmap.app)
[](https://workers.cloudflare.com)
[](LICENSE)
## 这是什么
StraitTracker 监控**霍尔木兹海峡** —— 全球最关键的石油咽喉要道 —— 汇总来自新闻来源的实时情报,并将其呈现在简洁的实时仪表板中。
两个专门构建的界面共享一个实时数据源:
- **桌面端** (`tracker.warheatmap.app`) —— 宽屏 SVG 态势地图 + 情报侧栏
- **移动端** (`mobile.tracker.warheatmap.app`) —— 360px 优先的 Leaflet 地图 + 抽屉式 UI
## 功能
- 📡 **实时情报源** —— Claude + NewsAPI 聚合,持久化存储于 KV 中,通过 Cron Trigger 每 30 分钟重新生成一次
- 🗺️ **交互式地图** —— Leaflet(移动端)+ 无依赖的 SVG(桌面端),展示海峡地理、航道、布雷区及爆发点
- 📊 **状态仪表板** —— 威胁等级、停火/封锁状态、受困油轮、原油基准价格
- ⏱️ **自动相对日期** —— 每个日期都渲染为 `today` / `yesterday` / `3d ago`,因此仪表板永远不会显得过时
- 📱 **移动端优先** —— 渐进式抽屉、 peek/expand 状态、点击穿透标记弹窗
- ⚡ **边缘部署** —— Cloudflare Workers,全球 CDN,零冷启动
- 🎞️ **近零带宽** —— UI 读取预聚合的数据源;无需繁重的客户端轮询
## 架构
```
┌─────────────────────────────┐
Cron (*/30m) → │ news-worker (aggregator) │
│ Claude + NewsAPI → KV cache │
└──────────────┬──────────────┘
│ /intel (JSON, persisted)
┌───────────────┴───────────────┐
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ strait-tracker (desktop)│ │ strait-tracker-mobile │
│ SVG map + intel rail │ │ Leaflet map + drawer UI │
└──────────────────────────┘ └──────────────────────────┘
```
**技术栈:** Cloudflare Workers · Cloudflare KV · Cron Triggers · Leaflet.js · NewsAPI · Claude · 原生 JS(零构建步骤)
UI workers 是**无状态**的 —— 它们渲染由独立的聚合器 worker 生成并持久化的数据源。这使得前端保持快速,数据具有弹性(能够在上游中断时存活),且带宽接近于零。
## 仓库结构
```
src/
strait-tracker-desktop.js # Desktop worker — SVG map + intel rail
strait-tracker-mobile.js # Mobile worker — Leaflet + drawer UI
wrangler.toml.example # Copy → wrangler.toml, fill in your IDs
```
## 自托管
```
git clone https://github.com/indicaindependent/straittracker
cd straittracker
cp wrangler.toml.example wrangler.toml
# 填写:CF account ID、KV namespace ID
# 将 src/*.js 中的 INTEL_API 指向你自己的 news-feed worker 的 /intel endpoint
# (搜索 YOUR-NEWS-WORKER 并替换)
wrangler deploy
```
UI workers 本身不需要任何 API 密钥 —— 它们仅读取 JSON 数据源。密钥(NewsAPI、Claude)位于您独立的聚合器 worker 中。
## License
[MIT](LICENSE) —— 随意使用、复刻并在此基础上进行开发。
属于 WarHeatMap 情报栈的一部分 | 由 Indica Independent 构建
标签:程序员工具, 自定义脚本