Sachin06016268/Women-Safety-Alert-System
GitHub: Sachin06016268/Women-Safety-Alert-System
一个基于MERN全栈架构的女性安全警报系统,提供实时SOS求助、行程追踪、事件上报与安全热力图功能,帮助用户在紧急情况下快速获取援助。
Stars: 0 | Forks: 0
# 🛡️ 女性安全警报系统
一款全栈 MERN 应用程序,旨在通过提供实时紧急援助、行程实时追踪、事件报告、附近的紧急服务以及用于监控和管理事件的管理员仪表板,来提升女性安全。
## 🚀 功能
### 👤 用户功能
- 安全的用户注册和登录(JWT 身份验证)
- 基于角色的访问控制
- SOS 紧急警报
- 实时行程追踪
- 实时位置共享
- 紧急联系人管理
- 支持图片上传的事件报告
- 附近的警察局和医院
- 使用 Leaflet 的交互式地图
- 用户资料管理
- 修改密码
- 注销账号
### 🛡️ 管理员功能
- 带有数据分析的管理员仪表板
- 用户管理
- 事件管理
- SOS 警报监控
- 事件热力图
- 事件状态更新
- 实时 SOS 通知
- Google 地图集成
## 🛠 技术栈
### Frontend
- React.js
- React Router DOM
- Axios
- Socket.IO Client
- React Leaflet
- Leaflet
- CSS3
### Backend
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT 身份验证
- Socket.IO
- Multer
- Cloudinary
- Geoapify API
- Cookie Parser
- CORS
## 📂 项目结构
```
Women-Safety-Alert-System/
│
├── frontend/
│ ├── src/
│ │ ├── api/
│ │ ├── components/
│ │ ├── context/
│ │ ├── pages/
│ │ ├── socket/
│ │ └── App.jsx
│ │
│ └── package.json
│
├── backend/
│ ├── src/
│ │ ├── controllers/
│ │ ├── routes/
│ │ ├── middlewares/
│ │ ├── models/
│ │ ├── utils/
│ │ ├── db/
│ │ └── app.js
│ │
│ └── package.json
│
└── README.md
```
# 🔐 身份验证
- JWT 身份验证
- Access Token
- Refresh Token
- 受保护路由
- 基于角色的授权
# 🚨 SOS 警报工作流
1. 用户点击 **SOS 按钮**
2. 捕获当前位置
3. SOS 请求保存在 MongoDB 中
4. 使用 Socket.IO 发送实时通知
5. 管理员收到:
- 弹窗通知
- 紧急提示音
- 实时位置
6. 管理员可以将警报标记为 **已解决**
# 🚗 行程追踪工作流
- 用户开启行程
- 生成追踪 ID
- 使用 Socket.IO 共享实时位置
- 紧急联系人接收追踪链接
- 可以随时结束行程
- 管理员可以监控行程
# 📄 事件报告
用户可以通过提供以下信息来报告事件:
- 类别
- 描述
- 当前位置
- 图片上传
支持的类别:
- 骚扰
- 跟踪
- 盗窃
- 人身攻击
- 不安全区域
- 其他
# 🗺 地图与位置服务
集成使用:
- Leaflet.js
- OpenStreetMap
- Geoapify API
功能:
- 附近的警察局
- 附近的医院
- 事件位置
- 实时行程追踪
- SOS 位置
- 事件热力图
# 🔥 热力图
根据报告的事件显示地理热点。
风险等级:
- 🔴 红色 – 最危险
- 🟠 橙色 – 高风险
- 🟡 黄色 – 中等风险
- 🟢 绿色 – 低风险
- 🔵 蓝色 – 极低风险
# 📊 管理员仪表板
显示:
- 总用户数
- 总事件数
- 总 SOS 警报数
快捷操作:
- 管理用户
- 管理事件
- 管理 SOS 警报
- 查看热力图
# 📦 后端安装
```
cd backend
npm install
```
创建 `.env` 文件:
```
PORT=8000
MONGODB_URI=
ACCESS_TOKEN_SECRET=
ACCESS_TOKEN_EXPIRY=
REFRESH_TOKEN_SECRET=
REFRESH_TOKEN_EXPIRY=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
GEOAPIFY_API_KEY=
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_NUMBER=
```
运行后端
```
npm run dev
```
# 💻 前端安装
```
cd frontend
npm install
```
运行前端
```
npm run dev
```
# 🌐 API Endpoints
## 身份验证
```
POST /api/v1/users/register
POST /api/v1/users/login
POST /api/v1/users/logout
POST /api/v1/users/refresh-token
```
## 用户
```
GET /api/v1/users/current-user
PATCH /api/v1/users/update-account
PATCH /api/v1/users/change-password
DELETE /api/v1/users/delete-account
```
## 紧急联系人
```
POST /api/v1/users/trusted-contacts
GET /api/v1/users/trusted-contacts
DELETE /api/v1/users/trusted-contacts/:id
```
## SOS
```
POST /api/v1/sos
GET /api/v1/sos/my-alerts
PATCH /api/v1/sos/:id/resolve
```
## 行程
```
POST /api/v1/journey/start
PATCH /api/v1/journey/end/:id
GET /api/v1/journey/history
GET /api/v1/journey/track/:trackingId
```
## 事件
```
POST /api/v1/incidents
GET /api/v1/incidents/my-incidents
GET /api/v1/incidents/:id
```
## 附近的服务
```
GET /api/v1/nearby/locations
```
## 管理员
```
GET /api/v1/admin/dashboard
GET /api/v1/admin/users
GET /api/v1/admin/incidents
PATCH /api/v1/admin/incidents/:id
GET /api/v1/admin/sos
PATCH /api/v1/admin/sos/:id
GET /api/v1/admin/heatmap
```
# 🔄 实时功能
使用 Socket.IO 实现
- 实时 SOS 警报
- 实时行程追踪
- 实时位置更新
- 即时管理员通知
# 👨💻 作者
**Sachin**
GitHub: https://github.com/Sachin06016268
标签:MERN架构, MITM代理, 女性安全预警, 实时定位, 库, 应急响应, 自定义脚本