文档
Events

Events

使用活动工作台、公开市场和免费报名能力

HackerStart 内置 Events 模块,用于构建活动型 SaaS 或社区运营产品。当前版本覆盖活动创建、发布、公开发现、免费报名和个人报名聚合。

已有页面

页面说明
/workspace/events工作区活动列表,面向 organizer 和 operator
/workspace/events/new多步骤活动创建向导,使用服务端 draft 保存进度
/workspace/events/$eventId工作区活动详情,按权限显示管理视图或参与者视图
/explore公开活动市场,未登录用户也可以浏览
/explore/$eventSlug公开活动详情和免费票报名入口
/my-events当前用户的跨工作区活动报名聚合

角色和权限

Events 复用工作区 membership,但把协作者和公开活动参与者分开处理:

  • collaborator 是真正的工作区成员,可以进入工作区内部页面。
  • event_attendee 是公开活动报名产生的轻量 membership,不会进入成员管理列表,也不会获得工作区协作权限。
  • Workspace owner/admin 默认可以创建活动。
  • 普通成员需要显式的 event_organizer 授权才能创建活动。
  • 编辑、发布、取消和查看报名列表仍绑定到具体 Event 的 organizer/operator 关系。

公开报名会创建 membership_kind='event_attendee',但 tenant resolver 和工作区内部查询默认只接受 membership_kind='collaborator'。这可以防止公开活动参与者进入组织者的工作区内部页面。

活动模型

Events 使用三层结构:

模型说明
Event活动本体,包含标题、slug、时间、地点、可见性和状态
Ticket Type票种目录,包含名称、价格、数量和售卖窗口
Registration用户和活动之间的参与关系
Ticket入场凭证,当前用于免费票自动签发和 check-in 状态

Event 的核心状态是:

  • draft:草稿,只在工作区内部可见。
  • published:已发布,可根据 visibility 出现在工作区或公开市场。
  • cancelled:已取消。公开活动旧链接会显示取消提示,但不会出现在 /explore 列表。

Event 的可见性是:

  • workspace:只面向工作区协作者。
  • public:可以进入 /explore 公开市场。

创建和发布活动

组织者从 /workspace/events/new 创建活动。向导会把 draft 保存在服务端,因此刷新页面或离开后可以继续编辑。

发布前至少需要:

  • 标题
  • 开始和结束时间
  • 至少一个 Ticket Type

发布后,visibility='public' 的活动会出现在 /explorevisibility='workspace' 的活动只保留在工作区内。

公开发现和报名

/explore 使用独立的 public read layer,不复用工作区内部查询。发现列表只返回:

  • status='published'
  • visibility='public'
  • 未结束的活动,除非用户选择查看 past

公开页面支持:

  • Featured 活动,按报名数和开始时间排序
  • 分类筛选
  • upcoming / past 筛选
  • 标题和摘要关键词搜索

登录用户可以在 /explore/$eventSlug 报名免费 Ticket Type。未登录用户会被引导到登录页,登录后回到原活动页面。

当前限制

  • paid Ticket Type 可以展示,但付费报名还没有交付。
  • QR code、转票、waiting list、多票购买还没有交付。
  • 公开 organizer profile、channel、活动更新通知和 analytics 还没有交付。
  • 紧急治理取消还没有交付;当前取消活动需要具备该 Event 的 organizer 权限。

相关文件

文件说明
src/events/server.ts工作区 Events Server Functions
src/events/public-server.ts公开发现 Server Functions
src/events/public-registration-server.ts公开报名和 /my-events Server Functions
src/db/queries/events.ts工作区 Events 查询和报名事务
src/db/queries/events-public.ts公开 Events 查询
src/routes/_authenticated/_workspace/workspace.events.*.tsx工作区 Events 路由
src/routes/{-$locale}/explore/*公开 Explore 路由
src/routes/_authenticated/my-events.tsx我的活动页面

本页内容