# label-cloud **Repository Path**: fyt2020/label-cloud ## Basic Information - **Project Name**: label-cloud - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-27 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, Nodejs, vite, Express ## README # 🚀 label-cloud ## 📖 项目简介 在线协同标注与任务管理平台。提供用户与角色管理、任务与任务项、目录目录、通知、操作日志等能力,支撑标注流程与数据管理。 ## 🛠 技术栈 ### Frontend(`client/`) - Vue 3、Vite 4 - Pinia(含 pinia-plugin-persistedstate) - Vue Router 4 - Ant Design Vue 4 - Axios、Day.js、ECharts、Fabric.js、Less ### Backend(仓库根目录) - Node.js、Express 4 - Sequelize 6(MySQL,`mysql2`) - JWT(`jsonwebtoken`)、Multer、CORS、Morgan、dotenv ## 📁 项目结构 ``` label-cloud/ ├── client/ # 前端(Vite + Vue3) │ ├── build/ # Vite 构建与插件辅助脚本 │ ├── src/ │ │ ├── api/ # 接口封装 │ │ ├── assets/ # 样式与静态资源 │ │ ├── components/ # 通用组件 │ │ ├── hooks/ # 组合式逻辑 │ │ ├── router/ │ │ ├── store/ # Pinia │ │ ├── theme/ # 主题 token(注入 Less) │ │ ├── utils/ │ │ └── views/ # 页面 │ ├── vite.config.js │ └── package.json ├── src/ # 后端 │ ├── models/ # Sequelize 模型与 db 连接 │ ├── routes/api/ # REST 路由 │ ├── servers/ # 业务服务层 │ └── tools/ # 配置、JWT、日志等 ├── public/ # Express 静态资源(如生产前端入口) ├── index.js # 服务入口 └── package.json ``` ## 🚀 快速开始 ### 克隆 ```bash git clone https://gitee.com/fyt2020/label-cloud.git cd label-cloud ``` ### 安装依赖 ```bash npm install cd client npm install cd .. ``` ### 环境变量 在仓库根目录创建 `.env`,在 `client/` 下按环境维护 `.env`、`.env.development`、`.env.production`(见下文「环境变量说明」)。 ### 数据库 - Windows:`localhost` / 库名 `labelcloud` - 非 Windows:`localhost`、端口 `6036` / 库名 `devown` 请先在 MySQL 中创建对应数据库并导入项目所需表结构(与 Sequelize 模型一致)。 ### 启动 **终端一:后端** ```bash npm start ``` **终端二:前端开发** ```bash cd client npm run dev ``` 默认后端监听 `process.env.PORT`(示例配置为 `5007`);前端开发端口见 `client/.env` 中 `VITE_PORT`(默认 `5173`)。前端通过 `VITE_NODE_URL` 等方式指向后端 API 基地址。 当前前端路由采用 Hash 模式,页面访问示例为 `http://localhost:5007/#/task`。请避免直接使用 `http://localhost:5007/task`,该地址会命中后端路由并返回 404。 ## 🌍 环境变量说明 ### 后端 `.env`(仓库根目录) | 变量 | 说明 | |------|------| | `PORT` | HTTP 监听端口 | | `DB_USER` | MySQL 用户名 | | `DB_WIN_PASSWORD` | Windows 环境下 MySQL 密码 | | `DB_UBUNTU_PASSWORD` | 非 Windows 环境下 MySQL 密码 | ### 前端 `client/.env` / `client/.env.development` / `client/.env.production` | 变量 | 说明 | |------|------| | `VITE_GLOB_APP_TITLE` | 应用标题 | | `VITE_PORT` | Vite 开发服务器端口 | | `VITE_PUBLIC_PATH` | 路由与资源基础路径 | | `VITE_NODE_URL` | 后端 API 根地址(可与运行时 `window.__APP_CONFIG__` 覆盖逻辑配合) | | `VITE_SERVER_URL` | 其它服务端地址占位(按业务使用) | | `VITE_PROXY` | 开发环境代理配置(JSON 数组字符串,见 `client/build/utils.js`) | | `VITE_DROP_CONSOLE` | 构建时是否移除 `console` | | `VITE_DROP_DEBUGGER` | 构建时是否移除 `debugger` | ## 🏗 生产环境构建 ### 前端构建 ```bash cd client npm run build ``` 产物输出目录:`client/dist`。 ### 后端启动 ```bash npm start ``` 将 `client/dist` 中的静态文件按部署策略发布(例如同步到本仓库 `public/` 目录,或交由 Nginx 等反向代理指向 `dist`,并与 `index.js` 中 `express.static` 配置一致)。 ### 推荐部署方式 - Node 进程运行 `index.js`,前置反向代理处理 HTTPS 与静态资源 - MySQL 独立实例,生产环境使用独立强密码并仅注入环境变量,勿将真实密钥写入仓库 ## 🔐 API 示例 登录(无需 `Authorization` 头;`passwd` 须与数据库用户表校验逻辑一致): ```bash curl -X POST "http://127.0.0.1:5007/api/auth/login" -H "Content-Type: application/json" -d '{"user":"admin","passwd":"secret"}' ``` 成功时由 `ResponseHelper` 返回统一 JSON 结构;挂载 `verifyTokenMiddleware` 的路由须在请求头携带有效 JWT。 ## 🧩 常用命令 | 命令 | 目录 | 说明 | |------|------|------| | `npm start` | 根目录 | 启动 Express 服务 | | `npm run lint` | 根目录 | 执行 lint-staged(Prettier) | | `npm run prepare` | 根目录 | 安装 Husky(`prepare` 钩子) | | `npm run dev` | `client/` | 启动 Vite 开发服务器 | | `npm run build` | `client/` | 生产构建 | | `npm run preview` | `client/` | 本地预览构建产物 | ## 📌 TODO(可选) - 按环境拆分并文档化数据库迁移与初始化脚本 - 生产环境密钥与 JWT 配置外置化审计 ## 🤝 贡献 1. 在功能分支开发,保持提交信息符合 Conventional Commits(项目已配置 Commitlint) 2. 提交前执行 `npm run lint` 确保格式化通过 ## 📄 License ISC(见根目录 `package.json` 中 `license` 字段)