Skip to content

EventX — B2B 企业活动管理平台

CNB

一站式活动管理 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.json

2. 前端部署(同域)

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 Pages

3. 域名规划

路径用途
/参与者端
/organizer/*主办方工作台
/admin/*管理后台
/api/*API 网关 → CloudBase

类型共享

server/types/index.ts 是前后端共享的类型定义源。client/src/types/index.tsadmin/src/types/index.ts 保持同步。

文档

  • PRD.md — 完整产品需求文档(数据模型、云函数设计、API路由、交互流程、套餐设计)

由云锦鸿维护