kartikay05/zentrix
GitHub: kartikay05/zentrix
Zentrix 是一个开源的 AI 驱动事件响应平台,旨在通过 LLM 根因分析和多工具集成帮助工程团队自动化处理基础设施与安全事件,目前处于早期开发阶段。
Stars: 0 | Forks: 0
# 🛡️ Zentrix — AI 事件响应平台
Zentrix 是一个最先进的 AI 驱动平台,旨在为现代工程团队自动化并简化事件响应流程。它集成了您现有的工具,利用先进的 AI 工作流来检测、分析和解决基础设施及安全事件。
## 🚀 当前状态:身份验证完成
完整的身份验证基础模块——后端 API、数据库模型、前端 UI 和全局状态管理——已达到生产就绪状态并完全集成。
## ✅ 已构建内容
### 🖥️ 后端 (Node.js + Express + MongoDB)
#### 项目设置
- 使用 **ES Modules** (`"type": "module"`) 初始化 Node.js
- 通过 `dotenv` 进行环境配置,带有严格的验证(缺少变量时崩溃)
- **Nodemon** 用于热重载开发
#### 数据库与模型
- **MongoDB Atlas** 通过 Mongoose 连接
- **User Model** (`user.model.js`):
- 字段:`name`、`email`、`password`、`avatar`、`isVerified`、`lastLoginAt`、`verificationToken`、`resetPasswordToken`、`resetPasswordExpires`
- 密码通过 `bcryptjs` 在 `pre('save')` 钩子中自动进行哈希处理
- `password` 字段设置了 `select: false`,以防止意外暴露
- 实例方法:`comparePassword()`、`toSafeObject()`
- **Workspace Model** — 支持多租户工作区,具有唯一的 API 密钥(`zx_` 前缀)、slug 和 GitHub 仓库集成
- **WorkspaceMember Model** — 包含 `OWNER`、`MEMBER`、`VIEWER` 角色及细粒度权限的 RBAC
#### 身份验证 API (`/api/auth`)
- `POST /api/auth/register` — 注册新用户,带有详细的 if/else 验证
- `POST /api/auth/login` — 验证用户身份,返回 `HttpOnly` JWT cookie
- `POST /api/auth/logout` — 清除 JWT cookie
- `GET /api/auth/get-me` — 返回已验证的用户(受 `isAuthenticated` 中间件保护)
#### 安全性
- `helmet` — HTTP 安全标头
- `cors` — 配置为允许带凭据的 `localhost:5173` 和 `localhost:5174`
- `bcryptjs` — 密码哈希(salt 轮数:10)
- **JWT** — 存储在 `HttpOnly` cookies 中的 7 天会话令牌
- `morgan` — 开发环境下的 HTTP 请求日志记录
#### 中间件
- `isAuthenticated` — 从 cookie 验证 JWT,将 `userId` 附加到 `req`
### 🎨 前端 (React + Vite + Tailwind CSS v4 + Redux)
#### 项目设置
- Vite 6 + React 19
- **Tailwind CSS v4**,带有自定义设计令牌(`index.css` 中的 `@theme` 块)
- 来自 Google Fonts 的 **Inter** 字体
- **Vite proxy** 配置为将 `/api` 转发到 `http://localhost:3000`
#### 设计系统
在 `index.css` 中定义的自定义 CSS 变量:
```
--color-zentrix-bg, --color-zentrix-surface, --color-zentrix-surface-2
--color-zentrix-border, --color-zentrix-primary, --color-zentrix-primary-hover
--color-zentrix-primary-light, --color-zentrix-muted, --color-zentrix-text, --color-zentrix-error
```
#### 页面
- **登录页** (`/login`) — 高级深色 UI,包含邮箱和密码输入框、图标输入框、密码切换、发光提交按钮、错误提示以及指向注册页面的导航链接
- **注册页** (`/register`) — 同样的高级 UI,带有姓名字段、实时密码强度指示器(弱 / 良 / 强)以及指向登录页面的导航链接
#### 状态管理 (Redux Toolkit)
- `app.store.js` — 配置 Redux store
- `auth.slice.js` — Auth 切片,包含 `user`、`loading`、`error` 状态以及 `setUser`、`setLoading`、`setError` 动作
#### Auth 服务层
- `auth.api.js` — Axios 实例(`baseURL: '/api'`, `withCredentials: true`)及函数:
- `registerUser()`、`loginUser()`、`getMe()`、`logoutUser()`
#### `useAuth` 自定义 Hook
- `hook/useAuth.js` — 使用 `useDispatch` 和 `useSelector` 封装所有 auth 逻辑
- 暴露:`handleRegister`、`handleLogin`、`fetchUser`、`handleLogout`、`user`、`loading`、`error`
- 智能错误提取,同时支持 `{ message }` 和 `{ errors: [{ message }] }` 响应格式
#### 路由
- `react-router` v7 与 `createBrowserRouter`
- 路由:`/login`、`/register`
## 🛠️ 技术栈
| 层级 | 技术 |
|-------|------------|
| 前端框架 | React 19 + Vite 6 |
| 样式 | Tailwind CSS v4 + 自定义设计令牌 |
| 状态管理 | Redux Toolkit |
| HTTP 客户端 | Axios |
| 路由 | React Router v7 |
| 后端 | Node.js + Express 5 |
| 数据库 | MongoDB Atlas + Mongoose |
| 身份验证 | JWT + HttpOnly Cookies |
| 密码哈希 | bcryptjs |
| 安全 | Helmet + CORS |
| 开发工具 | Nodemon + Morgan |
## 📂 项目结构
```
zentrix/
├── Backend/
│ ├── src/
│ │ ├── config/ # database.js, config.js
│ │ ├── controllers/ # auth.controller.js
│ │ ├── middlewares/ # auth.middleware.js
│ │ ├── models/ # user.model.js, workspace.model.js, workspaceMember.model.js
│ │ ├── routes/ # auth.routes.js
│ │ ├── validators/ # auth.validator.js
│ │ └── app.js # Express app + middleware setup
│ ├── server.js # Entry point
│ ├── .env # Environment variables
│ └── package.json
│
└── Frontend/
├── src/
│ ├── app/ # App.jsx, app.routes.jsx, app.store.js
│ ├── features/
│ │ └── auth/
│ │ ├── hook/ # useAuth.js
│ │ ├── pages/ # Login.jsx, Register.jsx
│ │ ├── services/ # auth.api.js
│ │ └── auth.slice.js
│ ├── index.css # Global styles + Tailwind theme
│ └── main.jsx # React entry + Redux Provider
├── vite.config.js # Vite + Proxy config
└── package.json
```
## ⚙️ 快速开始
### 前提条件
- Node.js 18+
- MongoDB Atlas 账户(或本地 MongoDB)
### 1. 克隆仓库
```
git clone
cd zentrix
```
### 2. 设置后端
```
cd Backend
npm install
```
创建 `.env` 文件:
```
PORT=3000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_strong_jwt_secret
NODE_ENV=Development
```
```
npm run dev
```
### 3. 设置前端
```
cd Frontend
npm install
npm run dev
```
前端运行在 `http://localhost:5173` 并将 `/api` 代理到 `http://localhost:3000`。
## 🛣️ 路线图
- [x] **后端 Auth API** — 注册、登录、登出、获取用户信息
- [x] **前端 Auth UI** — 带有高级深色主题的登录与注册页面
- [x] **Redux 状态管理** — 带有 `useAuth` hook 的全局 auth 状态
- [x] **Vite 代理** — 无缝的前端 ↔ 后端通信
- [ ] **受保护的路由** — 将未验证的用户重定向至登录页
- [ ] **仪表板布局** — 侧边栏、页眉和导航
- [ ] **事件管理** — 创建、查看和解决事件
- [ ] **AI 引擎** — 由 LLM 驱动的根因分析
- [ ] **实时更新** — 用于实时事件流的 WebSocket/Socket.io
- [ ] **集成** — GitHub、Slack、PagerDuty 连接器
标签:AIOps, AI安全, Chat Copilot, DevSecOps, Express, GNU通用公共许可证, JWT, MITM代理, MongoDB, Node.js, RBAC, 上游代理, 事件响应平台, 人工智能, 多租户系统, 安全事件管理, 智能运维, 用户模式Hook绕过, 网络安全, 自动化响应, 自定义脚本, 认证与授权, 隐私保护