Pranjal0410/Real-Time-Incident-Response-System

GitHub: Pranjal0410/Real-Time-Incident-Response-System

一个基于 React 和 Node.js 的实时事件响应协作平台,通过 Socket.io 实现多人同步处置系统事件并保留完整审计记录。

Stars: 0 | Forks: 0

# 实时事件响应平台 一个生产级的实时内部工程工具,用于在系统事件发生时进行管理和协作。采用现代深色主题 UI,支持实时协作。 ## 在线演示 - **前端:** https://incident-frontend-sigma.vercel.app - **后端 API:** https://incident-response-system.onrender.com ## 项目定位 - **不是** 一个聊天应用 - **不是** 一个 CRUD 仪表盘 - **是** 一个事件驱动的实时协作系统,采用服务端权威状态 ## 技术栈 | 层级 | 技术 | |-------|------------| | 前端 | React + Zustand | | 后端 | Node.js + Express | | 实时通信 | Socket.io | | 数据库 | MongoDB | | 认证 | JWT | | 图表 | Recharts | | 样式 | 自定义 CSS (深色主题) | ## 核心功能 - **现代深色主题 UI** - 带有温暖橙色/金色点缀的专业仪表盘 - **实时更新** - 变更瞬间广播至所有查看者 - **在线感知** - 通过实时指示器查看谁在查看每个事件 - **焦点追踪** - 查看其他人正在编辑哪个部分 - **基于角色的访问控制** - Admin、Responder、Viewer 权限 - **审计时间线** - 不可变的、结构化的事件历史记录 - **服务端权威** - 共享状态不使用乐观更新 - **仪表盘分析** - 事件趋势和严重性分布图表 - **搜索功能** - 按标题、状态、严重性或指挥官过滤事件 ## UI/UX 设计 ### 调色板 | 元素 | 颜色 | |---------|-------| | 主背景色 | #1a1a1a | | 次背景色 | #242424 | | 强调色 (金色) | #d4a853 | | 主文本色 | #ffffff | | 次文本色 | #a0a0a0 | ### 仪表盘功能 - **统计卡片** - 事件总数、活跃数、严重数和已解决数 - **趋势图** - 随时间变化的事件活动 - **严重性分布** - 显示事件明细的环形图 - **近期事件表格** - 可搜索、可排序的事件列表 ## 架构亮点 ### 服务端权威状态 ### 非聊天系统 - 结构化的更新类型(status_change、note、assignment、action_item) - 用于事后复盘的不可变审计追踪 - 在服务器端强制执行基于角色的授权 ### 实时流程 ``` Client A → Request → Server → Validate → Persist → Broadcast → All Clients ``` ## 快速开始 ``` # Backend cp .env.example .env npm install npm run dev # Frontend (新终端) cd client npm install npm run dev # 打开 http://localhost:3000 ``` ## 项目结构 ``` ├── src/ # Backend │ ├── config/ # Environment & DB config │ ├── middleware/ # Auth & error handling │ ├── models/ # Mongoose schemas │ ├── routes/ # REST API endpoints │ ├── services/ # Business logic │ └── socket/ # Socket.io handlers ├── client/ # Frontend │ └── src/ │ ├── components/ │ │ ├── layout/ # AppLayout, Sidebar, TopBar │ │ ├── dashboard/ # StatCard, Charts │ │ └── ... # Feature components │ ├── hooks/ # Custom hooks │ ├── pages/ # Route pages │ ├── services/ # API & Socket clients │ └── stores/ # Zustand state ├── DEPLOYMENT.md # Deployment guide └── README.md ``` ## API 概述 ### REST 接口 | 方法 | 端点 | 描述 | |--------|----------|-------------| | POST | /api/auth/register | 创建账户 | | POST | /api/auth/login | 获取 JWT token | | GET | /api/incidents | 列出事件 | | POST | /api/incidents | 创建事件 | | GET | /api/incidents/:id | 获取事件 + 历史记录 | ### Socket 事件 | 事件 | 方向 | 描述 | |-------|-----------|-------------| | incident:join | 客户端 → 服务端 | 加入事件房间 | | incident:updateStatus | 客户端 → 服务端 | 更改状态 | | incident:updated | 服务端 → 房间 | 状态已更改 | | presence:joined | 服务端 → 房间 | 用户已加入 | | focus:updated | 服务端 → 房间 | 用户聚焦于某部分 | ## 角色 | 角色 | 权限 | |------|-------------| | Admin | 完全访问权限,可分配 Responder | | Responder | 创建、修改事件 | | Viewer | 只读 | ## 部署 完整指南请参阅 [DEPLOYMENT.md](./DEPLOYMENT.md)。 | 层级 | 平台 | URL | |-------|----------|-----| | 前端 | Vercel | https://incident-frontend-sigma.vercel.app | | 后端 | Render | https://incident-response-system.onrender.com | | 数据库 | MongoDB Atlas | - | ### 环境变量 **后端:** ``` NODE_ENV=production MONGODB_URI=your_mongodb_uri JWT_SECRET=your_jwt_secret CLIENT_URL=https://incident-frontend-sigma.vercel.app ``` **前端:** ``` VITE_API_URL=https://incident-response-system.onrender.com VITE_SOCKET_URL=https://incident-response-system.onrender.com ``` ## 扩展考量 当前架构可处理每个事件约 50 个并发用户。为了实现扩展: 1. 用于 Socket.io 的 **Redis adapter**(水平扩展) 2. 用于感知的 **Redis**(比 MongoDB 更快) 3. 使用 express-rate-limit 实现 **速率限制** 4. 用于 WebSocket 会话亲和的 **粘性会话**
标签:Express, GNU通用公共许可证, IT运维, JWT认证, MITM代理, MongoDB, Node.js, React, Recharts, Socket.io, Socks5代理, Syscalls, Web应用程序, Zustand, 事件响应平台, 事件管理, 事件驱动架构, 仪表盘分析, 后端开发, 基于角色的访问控制, 实时协作系统, 实时通信, 审计时间线, 深色主题UI, 状态感知, 状态管理, 系统可用性监控, 运维仪表盘