divyanikathane10-beep/SafeOrbit
GitHub: divyanikathane10-beep/SafeOrbit
基于 MERN 技术栈构建的游客安全监控与应急响应系统原型,提供实时定位追踪、地理围栏告警、SOS 求救和哈希链数字身份等功能。
Stars: 1 | Forks: 0
# SafeOrbit — 智能游客安全监控与应急响应系统
基于 SRS 的 MERN 技术栈 MVP:支持 AI 扩展的地理围栏 + SOS + 区块链式防篡改数字 ID。
这里并没有真正的“AI”和真正的“Ethereum 区块链”(那些是单独的重型模块)——这里我们通过密码学哈希链来模拟类似区块链的防篡改账本,并通过基于半径的地理围栏警报来模拟 AI 触发。这是一个功能完备的基础架构,后续可以在其上接入 AI 模型或真正的区块链。
## 技术栈
- 后端:Node.js + Express + MongoDB (Mongoose) + Socket.IO(实时 SOS 和位置)
- 前端:React (Vite) + Leaflet(免费 OpenStreetMap,无需 API key)+ Socket.IO client
- 身份验证:JWT
## 已实现的功能
- 注册/登录(游客 / 管理员角色)
- 实时 GPS 追踪(浏览器地理位置 -> 后端 -> 通过 socket 广播给管理员)
- SOS 按钮 -> 即时向管理员仪表板发送警报 + 实时位置
- 地理围栏:管理员创建圆形限制区域(纬度/经度/半径);游客进入该区域会自动触发警告 + 警报,并实时显示在管理员地图上
- 区块链式数字 ID:护照/血型/过敏史/保险/酒店信息以 SHA-256 哈希链形式存储(每条记录都链接到前一个哈希)- 具备防篡改特性
- 管理员仪表板:实时游客地图、警报信息流(处理警报)、地理围栏管理、游客列表
- 大使馆/本地求助热线一键呼叫:根据游客的国籍,游客仪表板会显示印度的紧急号码(警察/救护车/游客求助热线等)以及他们本国驻印度大使馆的联系方式,点击即可直接呼叫(`tel:` 链接)
## 设置 (VS Code)
### MongoDB
需要本地 MongoDB。安装并运行它,或者创建一个免费的 MongoDB Atlas 集群,并将其连接字符串填入 `MONGO_URI` 中。
### 2. 后端
```
cd backend
cp .env.example .env
# 在 .env 中设置 MONGO_URI 和 JWT_SECRET
npm install
npm run dev
```
运行于 http://localhost:5000
### 3. 前端
在新终端中:
```
cd frontend
npm install
npm run dev
```
运行于 http://localhost:5173
### 4. 开始使用
1. 在 http://localhost:5173/register 上创建一个 **admin** 账户(从角色下拉菜单中选择 admin)。
2. 创建另一个 **tourist** 账户(在隐身窗口或不同的浏览器中,因为两者会使用同一个 localStorage token)。
3. 在管理员仪表板中,通过 "Add Geo-fence Zone" 在您当前位置附近创建一个限制区域(半径约 500m)。
4. 游客仪表板会请求浏览器位置权限 — 请允许。一旦进入该区域,就会出现警告,管理员也会收到实时警报。
5. 在游客仪表板中按下 SOS 按钮 — 管理员将收到即时弹窗,并在地图上显示实时位置。
## 目录结构
```
backend/
models/ -> User, DigitalID, Geofence, Alert, LocationLog
routes/ -> auth, tourist, admin, geofence
utils/ -> blockchain.js (hash chain), geofencing.js (haversine distance)
middleware/ -> auth.js (JWT + role check)
server.js -> Express + Socket.IO entry point
frontend/src/
pages/ -> Login, Register, TouristDashboard, AdminDashboard
components/ -> MapView, SOSButton, DigitalIDCard
context/ -> AuthContext (JWT session)
```
## 后续步骤(SRS 中目前尚未包含的功能)
- 真正的 AI 模型(犯罪预测、人群密度、虚假报告检测)-> 创建 Python 微服务 (FastAPI),并通过 `/api/ai/*` 路由从后端调用。
- 真正的区块链(Ethereum/Hyperledger/Polygon)-> 使用智能合约替换当前的哈希链。
- 向警察/医院发送推送通知 -> 集成 Firebase Cloud Messaging 或 Twilio SMS。
- 离线紧急模式 -> PWA + service worker。
- 多语言支持 -> i18next。
标签:MERN技术栈, MITM代理, 区块链模拟, 地理围栏, 实时定位, 库, 应急响应, 旅游安全, 自定义脚本