collabdocchat 1.1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QUICK_START.md +144 -0
- package/README.md +0 -538
- package/index.html +2 -0
- package/install-and-start.bat +47 -0
- package/install-and-start.sh +49 -0
- package/package.json +9 -5
- package/src/pages/admin-dashboard.js +2 -2
package/QUICK_START.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# CollabDocChat 快速启动指南 🚀
|
|
2
|
+
|
|
3
|
+
## 方法一:使用一键启动脚本(推荐)
|
|
4
|
+
|
|
5
|
+
### Windows 用户
|
|
6
|
+
|
|
7
|
+
1. 下载启动脚本:
|
|
8
|
+
```bash
|
|
9
|
+
curl -O https://raw.githubusercontent.com/shijinghao/collabdocchat/main/install-and-start.bat
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. 双击运行 `install-and-start.bat`
|
|
13
|
+
|
|
14
|
+
或者在命令行中运行:
|
|
15
|
+
```bash
|
|
16
|
+
install-and-start.bat
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Linux/Mac 用户
|
|
20
|
+
|
|
21
|
+
1. 下载启动脚本:
|
|
22
|
+
```bash
|
|
23
|
+
curl -O https://raw.githubusercontent.com/shijinghao/collabdocchat/main/install-and-start.sh
|
|
24
|
+
chmod +x install-and-start.sh
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. 运行脚本:
|
|
28
|
+
```bash
|
|
29
|
+
./install-and-start.sh
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 方法二:手动安装并启动
|
|
35
|
+
|
|
36
|
+
### 1. 安装(跳过 postinstall 脚本)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install collabdocchat --ignore-scripts
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 2. 启动
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd node_modules/collabdocchat
|
|
46
|
+
node scripts/quick-start.js
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
或者手动分别启动:
|
|
50
|
+
|
|
51
|
+
**启动后端:**
|
|
52
|
+
```bash
|
|
53
|
+
cd node_modules/collabdocchat
|
|
54
|
+
node server/index.js
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**启动前端(新终端):**
|
|
58
|
+
```bash
|
|
59
|
+
cd node_modules/collabdocchat
|
|
60
|
+
npm run client
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**打开浏览器:**
|
|
64
|
+
访问 `http://localhost:5173`
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 方法三:一行命令
|
|
69
|
+
|
|
70
|
+
### Windows (PowerShell)
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
npm install collabdocchat --ignore-scripts; cd node_modules\collabdocchat; Start-Process node -ArgumentList "server/index.js" -WindowStyle Hidden; Start-Sleep -Seconds 3; Start-Process npm -ArgumentList "run","client" -WindowStyle Hidden; Start-Sleep -Seconds 8; Start-Process "http://localhost:5173"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Linux/Mac
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npm install collabdocchat --ignore-scripts && cd node_modules/collabdocchat && node server/index.js & sleep 3 && npm run client & sleep 8 && open http://localhost:5173
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 停止服务
|
|
85
|
+
|
|
86
|
+
### Windows
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
taskkill /F /IM node.exe
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Linux/Mac
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
pkill -f node
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
或者:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
cd node_modules/collabdocchat
|
|
102
|
+
npm run stop
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 注意事项
|
|
108
|
+
|
|
109
|
+
- 确保 MongoDB 已启动
|
|
110
|
+
- 确保端口 3000 和 5173 未被占用
|
|
111
|
+
- 首次运行需要配置 `.env` 文件(可选)
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 常见问题
|
|
116
|
+
|
|
117
|
+
### Q: 安装卡住了怎么办?
|
|
118
|
+
|
|
119
|
+
A: 使用 `--ignore-scripts` 选项:
|
|
120
|
+
```bash
|
|
121
|
+
npm install collabdocchat --ignore-scripts
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Q: 浏览器没有自动打开?
|
|
125
|
+
|
|
126
|
+
A: 手动访问 `http://localhost:5173`
|
|
127
|
+
|
|
128
|
+
### Q: 如何查看是否启动成功?
|
|
129
|
+
|
|
130
|
+
A: 检查端口占用:
|
|
131
|
+
```bash
|
|
132
|
+
# Windows
|
|
133
|
+
netstat -ano | findstr :3000
|
|
134
|
+
netstat -ano | findstr :5173
|
|
135
|
+
|
|
136
|
+
# Linux/Mac
|
|
137
|
+
lsof -i:3000
|
|
138
|
+
lsof -i:5173
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
**提示**: 推荐使用一键启动脚本,最简单快捷!
|
|
144
|
+
|
package/README.md
CHANGED
|
@@ -1,538 +0,0 @@
|
|
|
1
|
-
# CollabDocChat
|
|
2
|
-
|
|
3
|
-
<div align="center">
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-

|
|
7
|
-

|
|
8
|
-

|
|
9
|
-
|
|
10
|
-
**开源的实时协作文档聊天平台**
|
|
11
|
-
|
|
12
|
-
集成任务管理 · 多人文档编辑 · 智能点名 · 即时通讯
|
|
13
|
-
|
|
14
|
-
[快速开始](#快速开始) · [功能特性](#功能特性) · [技术栈](#技术栈) · [贡献指南](#贡献指南)
|
|
15
|
-
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 📖 项目简介
|
|
21
|
-
|
|
22
|
-
**CollabDocChat** 是一个轻量级的开源协作平台,专为学习和办公场景设计。它将即时通讯、多人实时文档编辑、任务管理和互动点名功能整合在一起,提供一站式的群体协作解决方案。
|
|
23
|
-
|
|
24
|
-
### 🎯 核心定位
|
|
25
|
-
|
|
26
|
-
- **轻量级**:相比飞书、钉钉等重型工具,更加简洁易用
|
|
27
|
-
- **开源免费**:完全开源,可自由部署和定制
|
|
28
|
-
- **实时协作**:基于 WebSocket 的实时同步技术
|
|
29
|
-
- **双端权限**:管理员和用户角色分离,权限清晰
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## ✨ 功能特性
|
|
34
|
-
|
|
35
|
-
### 👨💼 管理员端
|
|
36
|
-
|
|
37
|
-
- **群组管理**
|
|
38
|
-
- 创建/管理群组
|
|
39
|
-
- 添加/移除成员
|
|
40
|
-
- 查看成员在线状态
|
|
41
|
-
|
|
42
|
-
- **任务管理**
|
|
43
|
-
- 发布/编辑/终止任务
|
|
44
|
-
- 关联文档到任务
|
|
45
|
-
- 查看任务完成进度
|
|
46
|
-
|
|
47
|
-
- **文档管理**
|
|
48
|
-
- 上传/共享文档
|
|
49
|
-
- 设置文档权限(只读/可编辑)
|
|
50
|
-
- 查看文档编辑日志
|
|
51
|
-
|
|
52
|
-
- **随机点名**
|
|
53
|
-
- 单次/批量随机点名
|
|
54
|
-
- 查看点名历史记录
|
|
55
|
-
- 实时响应提醒
|
|
56
|
-
|
|
57
|
-
### 👥 用户端
|
|
58
|
-
|
|
59
|
-
- **任务接收**
|
|
60
|
-
- 实时接收任务通知
|
|
61
|
-
- 查看待完成/已完成任务
|
|
62
|
-
- 更新任务状态
|
|
63
|
-
|
|
64
|
-
- **文档协作**
|
|
65
|
-
- 多人实时编辑文档
|
|
66
|
-
- 自动同步内容
|
|
67
|
-
- 查看版本历史
|
|
68
|
-
- 显示其他用户编辑状态
|
|
69
|
-
|
|
70
|
-
- **即时通讯**
|
|
71
|
-
- 群组聊天
|
|
72
|
-
- 实时消息推送
|
|
73
|
-
- 点名响应
|
|
74
|
-
|
|
75
|
-
- **个人中心**
|
|
76
|
-
- 查看个人任务
|
|
77
|
-
- 编辑记录
|
|
78
|
-
- 群组列表
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## 🛠 技术栈
|
|
83
|
-
|
|
84
|
-
### 后端
|
|
85
|
-
- **Node.js** + **Express** - 服务器框架
|
|
86
|
-
- **MongoDB** + **Mongoose** - 数据库
|
|
87
|
-
- **WebSocket (ws)** - 实时通信
|
|
88
|
-
- **JWT** - 身份认证
|
|
89
|
-
- **Yjs** - CRDT 实时协作算法
|
|
90
|
-
|
|
91
|
-
### 前端
|
|
92
|
-
- **原生 JavaScript** - 无框架依赖
|
|
93
|
-
- **Vite** - 构建工具
|
|
94
|
-
- **CSS3** - 现代化 UI 设计
|
|
95
|
-
- **WebSocket API** - 实时通信
|
|
96
|
-
|
|
97
|
-
### 核心技术
|
|
98
|
-
- **CRDT (Conflict-free Replicated Data Type)** - 无冲突文档同步
|
|
99
|
-
- **WebSocket** - 双向实时通信
|
|
100
|
-
- **JWT** - 无状态身份验证
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 🚀 快速开始
|
|
105
|
-
|
|
106
|
-
### 环境要求
|
|
107
|
-
|
|
108
|
-
- Node.js >= 16.0.0
|
|
109
|
-
- MongoDB >= 5.0
|
|
110
|
-
- npm 或 yarn
|
|
111
|
-
|
|
112
|
-
### 安装步骤
|
|
113
|
-
|
|
114
|
-
#### 方式一:通过 npm 安装(推荐)
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# 安装包
|
|
118
|
-
npm install collabdocchat
|
|
119
|
-
|
|
120
|
-
# 进入安装目录
|
|
121
|
-
cd node_modules/collabdocchat
|
|
122
|
-
|
|
123
|
-
# 启动应用(自动打开浏览器)
|
|
124
|
-
npm start
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
#### 方式二:从源码安装
|
|
128
|
-
|
|
129
|
-
1. **克隆项目**
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
git clone https://github.com/shijinghao/collabdocchat.git
|
|
133
|
-
cd collabdocchat
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
2. **安装依赖**
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
npm install
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
3. **配置环境变量**
|
|
143
|
-
|
|
144
|
-
复制 `.env.example` 为 `.env` 并修改配置:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
cp .env.example .env
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
编辑 `.env` 文件:
|
|
151
|
-
|
|
152
|
-
```env
|
|
153
|
-
PORT=3000
|
|
154
|
-
MONGODB_URI=mongodb://localhost:27017/collabdocchat
|
|
155
|
-
JWT_SECRET=your_super_secret_jwt_key_change_this
|
|
156
|
-
CLIENT_URL=http://localhost:5173
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
4. **启动 MongoDB**
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# Windows
|
|
163
|
-
mongod
|
|
164
|
-
|
|
165
|
-
# macOS/Linux
|
|
166
|
-
sudo systemctl start mongod
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
5. **启动项目**
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
# 快速启动(推荐)- 自动启动服务器和客户端,并打开浏览器
|
|
173
|
-
npm run quick-start
|
|
174
|
-
|
|
175
|
-
# 或使用完整启动脚本
|
|
176
|
-
npm start
|
|
177
|
-
|
|
178
|
-
# 开发模式(同时启动前后端,使用 nodemon 自动重启)
|
|
179
|
-
npm run dev
|
|
180
|
-
|
|
181
|
-
# 或分别启动
|
|
182
|
-
npm run server # 后端服务器
|
|
183
|
-
npm run client # 前端开发服务器
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
6. **访问应用**
|
|
187
|
-
|
|
188
|
-
运行 `npm start` 后,浏览器会自动打开并访问 `http://localhost:5173`
|
|
189
|
-
|
|
190
|
-
或手动访问:`http://localhost:5173`
|
|
191
|
-
|
|
192
|
-
7. **停止服务**
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
# 停止所有 CollabDocChat 服务
|
|
196
|
-
npm run stop
|
|
197
|
-
|
|
198
|
-
# 或手动停止(Windows)
|
|
199
|
-
taskkill /F /IM node.exe
|
|
200
|
-
|
|
201
|
-
# 或手动停止(Linux/Mac)
|
|
202
|
-
pkill -f "node.*server/index.js"
|
|
203
|
-
pkill -f vite
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## 📁 项目结构
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
CollabDocChat/
|
|
212
|
-
├── server/ # 后端代码
|
|
213
|
-
│ ├── models/ # 数据模型
|
|
214
|
-
│ │ ├── User.js
|
|
215
|
-
│ │ ├── Group.js
|
|
216
|
-
│ │ ├── Document.js
|
|
217
|
-
│ │ └── Task.js
|
|
218
|
-
│ ├── routes/ # API 路由
|
|
219
|
-
│ │ ├── auth.js
|
|
220
|
-
│ │ ├── groups.js
|
|
221
|
-
│ │ ├── documents.js
|
|
222
|
-
│ │ └── tasks.js
|
|
223
|
-
│ ├── middleware/ # 中间件
|
|
224
|
-
│ │ └── auth.js
|
|
225
|
-
│ ├── websocket/ # WebSocket 处理
|
|
226
|
-
│ │ └── index.js
|
|
227
|
-
│ └── index.js # 服务器入口
|
|
228
|
-
├── src/ # 前端代码
|
|
229
|
-
│ ├── pages/ # 页面组件
|
|
230
|
-
│ │ ├── login.js
|
|
231
|
-
│ │ ├── admin-dashboard.js
|
|
232
|
-
│ │ └── user-dashboard.js
|
|
233
|
-
│ ├── services/ # 服务层
|
|
234
|
-
│ │ ├── api.js
|
|
235
|
-
│ │ ├── auth.js
|
|
236
|
-
│ │ └── websocket.js
|
|
237
|
-
│ ├── styles/ # 样式文件
|
|
238
|
-
│ │ └── main.css
|
|
239
|
-
│ └── main.js # 前端入口
|
|
240
|
-
├── package.json
|
|
241
|
-
├── vite.config.js
|
|
242
|
-
├── .env.example
|
|
243
|
-
└── README.md
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## 🔌 API 文档
|
|
249
|
-
|
|
250
|
-
### 认证接口
|
|
251
|
-
|
|
252
|
-
#### 注册
|
|
253
|
-
```http
|
|
254
|
-
POST /api/auth/register
|
|
255
|
-
Content-Type: application/json
|
|
256
|
-
|
|
257
|
-
{
|
|
258
|
-
"username": "string",
|
|
259
|
-
"email": "string",
|
|
260
|
-
"password": "string",
|
|
261
|
-
"role": "admin" | "user"
|
|
262
|
-
}
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
#### 登录
|
|
266
|
-
```http
|
|
267
|
-
POST /api/auth/login
|
|
268
|
-
Content-Type: application/json
|
|
269
|
-
|
|
270
|
-
{
|
|
271
|
-
"email": "string",
|
|
272
|
-
"password": "string"
|
|
273
|
-
}
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### 群组接口
|
|
277
|
-
|
|
278
|
-
#### 获取群组列表
|
|
279
|
-
```http
|
|
280
|
-
GET /api/groups
|
|
281
|
-
Authorization: Bearer {token}
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
#### 创建群组(管理员)
|
|
285
|
-
```http
|
|
286
|
-
POST /api/groups
|
|
287
|
-
Authorization: Bearer {token}
|
|
288
|
-
Content-Type: application/json
|
|
289
|
-
|
|
290
|
-
{
|
|
291
|
-
"name": "string",
|
|
292
|
-
"description": "string",
|
|
293
|
-
"members": ["userId1", "userId2"]
|
|
294
|
-
}
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
#### 随机点名(管理员)
|
|
298
|
-
```http
|
|
299
|
-
POST /api/groups/:id/call
|
|
300
|
-
Authorization: Bearer {token}
|
|
301
|
-
Content-Type: application/json
|
|
302
|
-
|
|
303
|
-
{
|
|
304
|
-
"count": 1
|
|
305
|
-
}
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### 文档接口
|
|
309
|
-
|
|
310
|
-
#### 获取群组文档
|
|
311
|
-
```http
|
|
312
|
-
GET /api/documents/group/:groupId
|
|
313
|
-
Authorization: Bearer {token}
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
#### 创建文档
|
|
317
|
-
```http
|
|
318
|
-
POST /api/documents
|
|
319
|
-
Authorization: Bearer {token}
|
|
320
|
-
Content-Type: application/json
|
|
321
|
-
|
|
322
|
-
{
|
|
323
|
-
"title": "string",
|
|
324
|
-
"content": "string",
|
|
325
|
-
"groupId": "string",
|
|
326
|
-
"permission": "readonly" | "editable"
|
|
327
|
-
}
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
#### 更新文档
|
|
331
|
-
```http
|
|
332
|
-
PATCH /api/documents/:id
|
|
333
|
-
Authorization: Bearer {token}
|
|
334
|
-
Content-Type: application/json
|
|
335
|
-
|
|
336
|
-
{
|
|
337
|
-
"content": "string"
|
|
338
|
-
}
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### 任务接口
|
|
342
|
-
|
|
343
|
-
#### 获取我的任务
|
|
344
|
-
```http
|
|
345
|
-
GET /api/tasks/my
|
|
346
|
-
Authorization: Bearer {token}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
#### 创建任务(管理员)
|
|
350
|
-
```http
|
|
351
|
-
POST /api/tasks
|
|
352
|
-
Authorization: Bearer {token}
|
|
353
|
-
Content-Type: application/json
|
|
354
|
-
|
|
355
|
-
{
|
|
356
|
-
"title": "string",
|
|
357
|
-
"description": "string",
|
|
358
|
-
"groupId": "string",
|
|
359
|
-
"assignedTo": ["userId1"],
|
|
360
|
-
"relatedDocument": "documentId",
|
|
361
|
-
"deadline": "2024-12-31"
|
|
362
|
-
}
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
## 🔄 WebSocket 事件
|
|
368
|
-
|
|
369
|
-
### 客户端发送
|
|
370
|
-
|
|
371
|
-
```javascript
|
|
372
|
-
// 认证
|
|
373
|
-
{ type: 'auth', token: 'jwt_token' }
|
|
374
|
-
|
|
375
|
-
// 加入群组
|
|
376
|
-
{ type: 'join_group', groupId: 'group_id' }
|
|
377
|
-
|
|
378
|
-
// 发送聊天消息
|
|
379
|
-
{ type: 'chat_message', groupId: 'group_id', username: 'user', content: 'message' }
|
|
380
|
-
|
|
381
|
-
// 同步文档
|
|
382
|
-
{ type: 'document_sync', documentId: 'doc_id', content: 'text', cursorPosition: 0 }
|
|
383
|
-
|
|
384
|
-
// 响应点名
|
|
385
|
-
{ type: 'call_response', groupId: 'group_id', username: 'user' }
|
|
386
|
-
|
|
387
|
-
// 输入状态
|
|
388
|
-
{ type: 'typing', documentId: 'doc_id', username: 'user', isTyping: true }
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
### 服务器推送
|
|
392
|
-
|
|
393
|
-
```javascript
|
|
394
|
-
// 认证成功
|
|
395
|
-
{ type: 'auth_success', userId: 'user_id', role: 'admin' }
|
|
396
|
-
|
|
397
|
-
// 聊天消息
|
|
398
|
-
{ type: 'chat_message', groupId: 'group_id', userId: 'user_id', username: 'user', content: 'message', timestamp: 'ISO8601' }
|
|
399
|
-
|
|
400
|
-
// 文档更新
|
|
401
|
-
{ type: 'document_update', documentId: 'doc_id', content: 'text', userId: 'user_id', timestamp: 'ISO8601' }
|
|
402
|
-
|
|
403
|
-
// 用户离线
|
|
404
|
-
{ type: 'user_offline', userId: 'user_id' }
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## 🎨 界面预览
|
|
410
|
-
|
|
411
|
-
### 登录页面
|
|
412
|
-
- 现代化渐变背景
|
|
413
|
-
- 流畅的动画效果
|
|
414
|
-
- 登录/注册切换
|
|
415
|
-
|
|
416
|
-
### 管理员仪表板
|
|
417
|
-
- 群组管理面板
|
|
418
|
-
- 任务发布界面
|
|
419
|
-
- 文档权限控制
|
|
420
|
-
- 随机点名功能
|
|
421
|
-
|
|
422
|
-
### 用户仪表板
|
|
423
|
-
- 任务列表
|
|
424
|
-
- 实时文档编辑器
|
|
425
|
-
- 群组聊天
|
|
426
|
-
- 在线状态显示
|
|
427
|
-
|
|
428
|
-
---
|
|
429
|
-
|
|
430
|
-
## 🤝 贡献指南
|
|
431
|
-
|
|
432
|
-
我们欢迎所有形式的贡献!
|
|
433
|
-
|
|
434
|
-
### 如何贡献
|
|
435
|
-
|
|
436
|
-
1. Fork 本项目
|
|
437
|
-
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
438
|
-
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
439
|
-
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
440
|
-
5. 开启 Pull Request
|
|
441
|
-
|
|
442
|
-
### 代码规范
|
|
443
|
-
|
|
444
|
-
- 使用 ES6+ 语法
|
|
445
|
-
- 遵循 ESLint 规则
|
|
446
|
-
- 添加必要的注释
|
|
447
|
-
- 编写清晰的提交信息
|
|
448
|
-
|
|
449
|
-
---
|
|
450
|
-
|
|
451
|
-
## 📦 发布到 npm
|
|
452
|
-
|
|
453
|
-
### 准备发布
|
|
454
|
-
|
|
455
|
-
1. **更新版本号**
|
|
456
|
-
|
|
457
|
-
```bash
|
|
458
|
-
npm version patch # 1.0.0 -> 1.0.1
|
|
459
|
-
npm version minor # 1.0.0 -> 1.1.0
|
|
460
|
-
npm version major # 1.0.0 -> 2.0.0
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
2. **登录 npm**
|
|
464
|
-
|
|
465
|
-
```bash
|
|
466
|
-
npm login
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
3. **发布包**
|
|
470
|
-
|
|
471
|
-
```bash
|
|
472
|
-
npm publish
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### 使用 npm 包
|
|
476
|
-
|
|
477
|
-
```bash
|
|
478
|
-
npm install collabdocchat
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
---
|
|
482
|
-
|
|
483
|
-
## 📄 开源协议
|
|
484
|
-
|
|
485
|
-
本项目采用 [MIT License](LICENSE) 开源协议。
|
|
486
|
-
|
|
487
|
-
---
|
|
488
|
-
|
|
489
|
-
## 🙏 致谢
|
|
490
|
-
|
|
491
|
-
感谢以下开源项目:
|
|
492
|
-
|
|
493
|
-
- [Express](https://expressjs.com/) - Web 框架
|
|
494
|
-
- [MongoDB](https://www.mongodb.com/) - 数据库
|
|
495
|
-
- [Yjs](https://github.com/yjs/yjs) - CRDT 算法
|
|
496
|
-
- [Vite](https://vitejs.dev/) - 构建工具
|
|
497
|
-
|
|
498
|
-
---
|
|
499
|
-
|
|
500
|
-
## 📞 联系方式
|
|
501
|
-
|
|
502
|
-
- **项目主页**: [https://github.com/yourusername/collabdocchat](https://github.com/yourusername/collabdocchat)
|
|
503
|
-
- **问题反馈**: [Issues](https://github.com/yourusername/collabdocchat/issues)
|
|
504
|
-
- **邮箱**: your.email@example.com
|
|
505
|
-
|
|
506
|
-
---
|
|
507
|
-
|
|
508
|
-
## 🗺 路线图
|
|
509
|
-
|
|
510
|
-
### v1.1.0 (计划中)
|
|
511
|
-
- [ ] 文件上传功能
|
|
512
|
-
- [ ] 富文本编辑器
|
|
513
|
-
- [ ] 消息通知系统
|
|
514
|
-
- [ ] 移动端适配
|
|
515
|
-
|
|
516
|
-
### v1.2.0 (计划中)
|
|
517
|
-
- [ ] 视频会议集成
|
|
518
|
-
- [ ] 屏幕共享
|
|
519
|
-
- [ ] 白板功能
|
|
520
|
-
- [ ] 插件系统
|
|
521
|
-
|
|
522
|
-
### v2.0.0 (未来)
|
|
523
|
-
- [ ] 微服务架构
|
|
524
|
-
- [ ] Docker 部署
|
|
525
|
-
- [ ] 多语言支持
|
|
526
|
-
- [ ] AI 助手集成
|
|
527
|
-
|
|
528
|
-
---
|
|
529
|
-
|
|
530
|
-
<div align="center">
|
|
531
|
-
|
|
532
|
-
**⭐ 如果这个项目对你有帮助,请给我们一个 Star!⭐**
|
|
533
|
-
|
|
534
|
-
Made with ❤️ by CollabDocChat Team
|
|
535
|
-
|
|
536
|
-
</div>
|
|
537
|
-
|
|
538
|
-
|
package/index.html
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>CollabDocChat - 协作文档聊天平台</title>
|
|
7
|
+
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
|
|
8
|
+
<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
|
|
7
9
|
<link rel="stylesheet" href="/src/styles/main.css">
|
|
8
10
|
</head>
|
|
9
11
|
<body>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
echo ========================================
|
|
3
|
+
echo CollabDocChat 一键安装并启动
|
|
4
|
+
echo ========================================
|
|
5
|
+
echo.
|
|
6
|
+
|
|
7
|
+
echo [1/3] 正在安装 CollabDocChat...
|
|
8
|
+
call npm install collabdocchat@latest --ignore-scripts
|
|
9
|
+
if %errorlevel% neq 0 (
|
|
10
|
+
echo 安装失败!
|
|
11
|
+
pause
|
|
12
|
+
exit /b 1
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
echo.
|
|
16
|
+
echo [2/3] 安装完成!正在启动应用...
|
|
17
|
+
cd node_modules\collabdocchat
|
|
18
|
+
|
|
19
|
+
echo.
|
|
20
|
+
echo [3/3] 启动服务器和客户端...
|
|
21
|
+
start /B node server/index.js
|
|
22
|
+
timeout /t 3 /nobreak >nul
|
|
23
|
+
start /B cmd /c "npm run client"
|
|
24
|
+
|
|
25
|
+
echo.
|
|
26
|
+
echo 等待服务器启动...
|
|
27
|
+
timeout /t 8 /nobreak
|
|
28
|
+
|
|
29
|
+
echo.
|
|
30
|
+
echo 正在打开浏览器...
|
|
31
|
+
start http://localhost:5173
|
|
32
|
+
|
|
33
|
+
echo.
|
|
34
|
+
echo ========================================
|
|
35
|
+
echo 启动完成!
|
|
36
|
+
echo ========================================
|
|
37
|
+
echo.
|
|
38
|
+
echo 浏览器已打开,访问: http://localhost:5173
|
|
39
|
+
echo.
|
|
40
|
+
echo 提示:
|
|
41
|
+
echo - 服务器运行在端口 3000
|
|
42
|
+
echo - 客户端运行在端口 5173
|
|
43
|
+
echo - 关闭此窗口不会停止服务
|
|
44
|
+
echo - 要停止服务,请关闭所有 node 进程
|
|
45
|
+
echo.
|
|
46
|
+
pause
|
|
47
|
+
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
echo "========================================"
|
|
4
|
+
echo " CollabDocChat 一键安装并启动"
|
|
5
|
+
echo "========================================"
|
|
6
|
+
echo ""
|
|
7
|
+
|
|
8
|
+
echo "[1/3] 正在安装 CollabDocChat..."
|
|
9
|
+
npm install collabdocchat@latest --ignore-scripts
|
|
10
|
+
if [ $? -ne 0 ]; then
|
|
11
|
+
echo "安装失败!"
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
echo ""
|
|
16
|
+
echo "[2/3] 安装完成!正在启动应用..."
|
|
17
|
+
cd node_modules/collabdocchat
|
|
18
|
+
|
|
19
|
+
echo ""
|
|
20
|
+
echo "[3/3] 启动服务器和客户端..."
|
|
21
|
+
node server/index.js &
|
|
22
|
+
sleep 3
|
|
23
|
+
npm run client &
|
|
24
|
+
|
|
25
|
+
echo ""
|
|
26
|
+
echo "等待服务器启动..."
|
|
27
|
+
sleep 8
|
|
28
|
+
|
|
29
|
+
echo ""
|
|
30
|
+
echo "正在打开浏览器..."
|
|
31
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
32
|
+
open http://localhost:5173
|
|
33
|
+
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
34
|
+
xdg-open http://localhost:5173
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo ""
|
|
38
|
+
echo "========================================"
|
|
39
|
+
echo " 启动完成!"
|
|
40
|
+
echo "========================================"
|
|
41
|
+
echo ""
|
|
42
|
+
echo "浏览器已打开,访问: http://localhost:5173"
|
|
43
|
+
echo ""
|
|
44
|
+
echo "提示:"
|
|
45
|
+
echo " - 服务器运行在端口 3000"
|
|
46
|
+
echo " - 客户端运行在端口 5173"
|
|
47
|
+
echo " - 按 Ctrl+C 停止服务"
|
|
48
|
+
echo ""
|
|
49
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "collabdocchat",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "开源的实时协作文档聊天平台 - 集成任务管理、多人文档编辑、智能点名功能",
|
|
5
5
|
"main": "./server/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
"package.json",
|
|
14
14
|
"vite.config.js",
|
|
15
15
|
"index.html",
|
|
16
|
-
".gitignore"
|
|
16
|
+
".gitignore",
|
|
17
|
+
"install-and-start.bat",
|
|
18
|
+
"install-and-start.sh",
|
|
19
|
+
"QUICK_START.md"
|
|
17
20
|
],
|
|
18
21
|
"keywords": [
|
|
19
22
|
"collaboration",
|
|
@@ -47,6 +50,8 @@
|
|
|
47
50
|
"postinstall": "node scripts/postinstall.js",
|
|
48
51
|
"dev": "concurrently \"npm run server\" \"npm run client\" \"npm run open-browser\"",
|
|
49
52
|
"start": "node scripts/start-app.js",
|
|
53
|
+
"quick-start": "node scripts/quick-start.js",
|
|
54
|
+
"stop": "node scripts/stop-app.js",
|
|
50
55
|
"server": "nodemon server/index.js",
|
|
51
56
|
"client": "vite",
|
|
52
57
|
"open-browser": "node scripts/open-browser.js",
|
|
@@ -57,13 +62,12 @@
|
|
|
57
62
|
},
|
|
58
63
|
"dependencies": {
|
|
59
64
|
"bcryptjs": "^2.4.3",
|
|
60
|
-
"collabdocchat": "^1.0.0",
|
|
61
65
|
"cors": "^2.8.5",
|
|
62
66
|
"dotenv": "^16.3.1",
|
|
63
67
|
"express": "^4.18.2",
|
|
64
68
|
"jsonwebtoken": "^9.0.2",
|
|
65
69
|
"mongoose": "^8.0.3",
|
|
66
|
-
"quill": "^
|
|
70
|
+
"quill": "^1.3.7",
|
|
67
71
|
"quill-cursors": "^4.0.2",
|
|
68
72
|
"ws": "^8.14.2",
|
|
69
73
|
"y-websocket": "^1.5.0",
|
|
@@ -73,6 +77,6 @@
|
|
|
73
77
|
"concurrently": "^8.2.2",
|
|
74
78
|
"nodemon": "^3.0.2",
|
|
75
79
|
"open": "^11.0.0",
|
|
76
|
-
"vite": "^
|
|
80
|
+
"vite": "^5.0.8"
|
|
77
81
|
}
|
|
78
82
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ApiService } from '../services/api.js';
|
|
2
2
|
import { AuthService } from '../services/auth.js';
|
|
3
|
-
import Quill from 'quill';
|
|
4
|
-
import 'quill/dist/quill.snow.css';
|
|
3
|
+
// import Quill from 'quill/dist/quill.js';
|
|
4
|
+
// import 'quill/dist/quill.snow.css';
|
|
5
5
|
import 'emoji-picker-element';
|
|
6
6
|
|
|
7
7
|
export function renderAdminDashboard(user, wsService) {
|