EventX — B2B 企业活动管理平台
一站式活动管理 SaaS 平台,支持行业峰会、展览展会、商务会议、培训沙龙、产品发布会、招商会等全类型活动管理。
目录结构
eventx-full/
├── client/ # 参与者端 + 主办方端前端
│ ├── src/
│ │ ├── api/ # API 请求层
│ │ ├── components/ # 布局组件(ParticipantLayout, OrganizerLayout)
│ │ ├── hooks/ # React Query hooks
│ │ ├── pages/ # 页面组件
│ │ │ ├── participant/ # 参与者页面(首页、活动、报名、匹配、我的)
│ │ │ └── organizer/ # 主办方页面(工作台、活动管理、报名/签到/展位/团队/数据)
│ │ ├── stores/ # Zustand 状态管理
│ │ ├── types/ # TypeScript 类型定义
│ │ └── utils/ # 工具函数 + Mock 数据
│ ├── public/_routes.json # SPA fallback 配置
│ ├── vite.config.ts # Vite 构建配置
│ └── package.json
│
├── admin/ # 管理后台前端(Ant Design Pro)
│ ├── src/
│ │ ├── api/ # 管理端 API
│ │ ├── components/ # AdminLayout 布局
│ │ ├── pages/ # 仪表盘、企业/活动/统计/套餐/Banner/设置
│ │ └── types/ # TypeScript 类型定义
│ ├── public/_routes.json # SPA fallback 配置
│ ├── vite.config.ts # base 设为 "/admin/"
│ └── package.json
│
├── server/ # CloudBase 云函数
│ ├── company/ # 企业模块(注册、认证、更新、邀请)
│ ├── subscription/ # 订阅模块(套餐列表、订阅、续费)
│ ├── event/ # 活动模块(CRUD、审核、发布、模板)
│ ├── form/ # 表单模块(创建、提交、导出)
│ ├── ticket/ # 票种模块(创建、库存管理)
│ ├── registration/ # 报名模块(创建、取消、退款)
│ ├── booth/ # 展位模块(批量创建、申请、分配)
│ ├── checkin/ # 签到模块(生成码、扫码、统计)
│ ├── matching/ # 商务匹配模块(生成、响应)
│ ├── meeting/ # 会议预约模块
│ ├── guest/ # 嘉宾模块
│ ├── notification/ # 通知模块(发送、列表、已读)
│ ├── admin/ # 管理模块(仪表盘、企业/活动审核、统计)
│ ├── report/ # 报告模块
│ ├── common/ # 公共模块(auth、response、error、validator、logger、permission)
│ ├── types/ # 接口类型定义(前后端共享)
│ ├── indexes/ # 数据库索引初始化
│ └── package.json
│
├── mockups/ # UI 原型图(21页 SVG + PNG)
│ ├── admin/ # 管理后台原型(5页)
│ ├── organizer/ # 主办方端原型(8页)
│ └── participant/ # 参与者端原型(8页)
│
├── cloudbaserc.json # CloudBase 部署配置(envId 留占位符)
├── PRD.md # 产品需求文档
├── README.md # 本文件
└── .cnb.yml # CI/CD 流水线配置技术栈
| 层级 | 技术选型 |
|---|---|
| 参与者端 + 主办方端 | React 18 + Vite + TypeScript + Ant Design + React Query + Zustand |
| 管理后台 | React 18 + Vite + TypeScript + Ant Design + React Query |
| 后端 | CloudBase 云函数(Node.js 18) |
| 数据库 | CloudBase NoSQL |
| 前端部署 | EdgeOne Pages(同域部署) |
快速开始
前置要求
- Node.js >= 18
- npm >= 9
参与者端 + 主办方端
bash
cd client
npm install
npm run dev # 启动开发服务器 → http://localhost:3000
npm run build # 生产构建 → client/dist/管理后台
bash
cd admin
npm install
npm run dev # 启动开发服务器 → http://localhost:3001/admin/
npm run build # 生产构建 → admin/dist/API 代理
开发环境下两个前端均通过 Vite proxy 将 /api 请求转发到 http://localhost:8080。
API 概览
统一响应格式:
json
{ "code": 0, "data": {}, "message": "ok" }| 模块 | 前缀 | 云函数数量 |
|---|---|---|
| 企业 | /api/company/* | 5 |
| 订阅 | /api/subscription/* | 3 |
| 活动 | /api/event/* | 7 |
| 表单 | /api/form/* | 3 |
| 票种 | /api/ticket/* | 2 |
| 报名 | /api/registration/* | 3 |
| 展位 | /api/booth/* | 3 |
| 签到 | /api/checkin/* | 3 |
| 匹配 | /api/matching/* | 2 |
| 会议 | /api/meeting/* | 1 |
| 嘉宾 | /api/guest/* | 1 |
| 通知 | /api/notification/* | 3 |
| 管理 | /api/admin/* | 4 |
| 报告 | /api/report/* | 1 |
| 合计 | 41 个接口 |
部署说明
1. CloudBase 云函数部署
bash
# 安装 CloudBase CLI
npm install -g @cloudbase/cli
# 修改 cloudbaserc.json 中的 envId
# cloudbaserc.json → "envId": "your-env-id"
# 部署
tcb fn deploy --config cloudbaserc.json2. 前端部署(同域)
bash
# 1. 构建参与者端
cd client && npm run build
# 2. 构建管理后台
cd ../admin && npm run build
# 3. 合并构建产物(同域部署)
cp -r admin/dist/* client/dist/admin/
# 4. 部署 client/dist/ 到 EdgeOne Pages3. 域名规划
| 路径 | 用途 |
|---|---|
/ | 参与者端 |
/organizer/* | 主办方工作台 |
/admin/* | 管理后台 |
/api/* | API 网关 → CloudBase |
类型共享
server/types/index.ts 是前后端共享的类型定义源。client/src/types/index.ts 和 admin/src/types/index.ts 保持同步。
文档
- PRD.md — 完整产品需求文档(数据模型、云函数设计、API路由、交互流程、套餐设计)