BaselAshraf81/threatalert
GitHub: BaselAshraf81/threatalert
一款社区驱动的匿名实时本地安全事件感知平台,通过众包报告和投票验证机制提供社区安全态势感知和推送警报。
Stars: 2 | Forks: 0
一款免费、匿名、社区驱动的 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, 事件报警系统, 众包平台, 公共安全, 地理信息系统, 安全插件, 开源项目, 态势感知, 推送通知, 灾害预警, 犯罪地图, 社区验证, 移动应用, 网络安全, 自动化攻击, 自动化攻击, 隐私保护