BaselAshraf81/threatalert

GitHub: BaselAshraf81/threatalert

一款社区驱动的匿名实时本地安全事件感知平台,通过众包报告和投票验证机制提供社区安全态势感知和推送警报。

Stars: 2 | Forks: 0

ThreatAlert Banner

一款免费、匿名、社区驱动的 Progressive Web App,用于实时本地事件感知。无需账户,无广告,不出售数据。 ## 功能特性 - 🗺️ **交互式地图** - 利用 Leaflet 和 Stadia Maps 实时可视化事件 - 🔒 **匿名与隐私优先** - 无需注册,无追踪,不收集个人身份信息 (PII) - 👥 **社区验证** - 事件通过社区投票验证后展示 - 🔔 **智能提醒** - 推送通知支持自定义半径(1-25公里)及全球选项 - ⚠️ **未验证威胁警报** - 可选的在验证前接收待处理事件通知 - 📱 **Progressive Web App** - 可安装在任何设备上,支持离线工作 - 🌙 **深色模式** - 默认提供精美的深色主题 - ⚡ **快速与现代** - 基于 Next.js 16、React 19、TypeScript 构建 ## 事件类别 | 类别 | TTL | 验证阈值 | |----------|-----|------------------------| | 犯罪 / 安全 | 4h | 3 票 | | 自然灾害 | 12h | 2 票 | | 火灾 | 6h | 2 票 | | 基础设施 | 8h | 3 票 | | 民众骚乱 | 6h | 4 票 | | 其他 | 4h | 5 票 | ## 技术栈 - **Frontend**: Next.js 16, React 19, TypeScript, Tailwind CSS - **UI 组件**: Radix UI, Framer Motion - **地图**: Leaflet 配合 react-leaflet - **Backend**: Firebase (Firestore, Cloud Functions, FCM) - **部署**: Firebase Hosting, Netlify ## 快速开始 ### 前置条件 - Node.js 20+ - Firebase CLI: `npm install -g firebase-tools` ### 安装 ``` # 安装依赖 npm install # 安装函数依赖 cd functions && npm install && cd .. # 设置环境变量 cp .env.local.example .env.local # 使用 Firebase 配置编辑 .env.local # 运行开发服务器 npm run dev ``` 打开 [http://localhost:3000](http://localhost:3000) ### Firebase 设置 ``` # 登录 Firebase firebase login # 启用 Firestore firebase firestore:databases:create "(default)" --location=us-east1 # 部署 npm run build firebase deploy ``` ## 项目结构 ``` ├── app/ # Next.js app directory ├── components/ # React components │ ├── map-view.tsx # Leaflet map with incidents │ ├── report-sheet.tsx # Incident reporting UI │ └── ui/ # Radix UI components ├── lib/ # Core logic │ ├── firebase.ts # Firebase initialization │ ├── incidents-store.ts # Firestore integration │ └── types.ts # TypeScript types ├── hooks/ # React hooks ├── functions/ # Cloud Functions │ └── src/index.ts # Vote processing, notifications └── public/ # Static assets & PWA files ``` ## 工作原理 1. **报告** - 用户在地图上标记事件并选择类别和描述 2. **待定** - 事件已保存但尚未公开可见 3. **投票** - 社区确认或反驳该事件 4. **激活** - 一旦达到阈值,事件对所有用户可见 5. **通知** - 半径内的订阅者收到推送警报 6. **解决** - 基于 TTL 或社区解决自动过期 ## 安全与隐私 - **无账户** - 设计上完全匿名 - **无追踪** - 无 Analytics SDK 或广告 - **投票去重** - 基于 IP(哈希处理)以防止滥用 - **速率限制** - 服务端防护防止垃圾信息 - **安全的 Firestore 规则** - 防止未授权访问 - **无 PII** - 位置从不与身份关联 ## 路线图 - [ ] Telegram 机器人集成以接收警报 - [ ] Geohashing 以实现高效的半径查询 - [ ] 增强的速率限制和滥用预防 - [ ] 多语言支持 - [ ] 自定义域名设置 - [ ] 隐私保护分析 ## 开发 ``` # 开发服务器 npm run dev # 构建生产版本 npm run build # Lint npm run lint # 部署到 Firebase firebase deploy # 部署到 Netlify netlify deploy --prod ``` ## 许可证 MIT License ## 联系方式 📧 bosbos.basel@gmail.com 为更安全的社区而用 ❤️ 制作
标签:DNS解析, Firebase, HTTP/HTTPS抓包, Leaflet, PWA, React, Syscalls, TypeScript, 事件报警系统, 众包平台, 公共安全, 地理信息系统, 安全插件, 开源项目, 态势感知, 推送通知, 灾害预警, 犯罪地图, 社区验证, 移动应用, 网络安全, 自动化攻击, 自动化攻击, 隐私保护