社区创建
P0任何达到 TL2 的用户均可创建社区,需填写名称、URL 标识、简介、主题色与初始规则。
实现要点:URL 标识(slug)全局唯一且创建后不可修改,避免死链。创建者自动成为首位版主。平台对名称做敏感词与重名近似校验。
This page is not translated yet
The interface, navigation and community content are bilingual. The long-form body of this page is still in Chinese. The translation work is tracked as task I18N-10.
Module 02 · V1.0 · Communities & Subreddits
内容的第一层容器,社区自治的边界
把「社区」抽象为可创建、可订阅、可配置、可自治的一等实体,承载主题聚合、规则声明与版主治理。
如果说用户是「谁」,那么社区就是「在哪里」。没有社区容器,内容会退化为单一巨型信息流,无法形成垂直文化,也无法分权治理。
共 8 个功能点,每个功能点给出实现要点,可直接作为开发任务的描述。
任何达到 TL2 的用户均可创建社区,需填写名称、URL 标识、简介、主题色与初始规则。
实现要点:URL 标识(slug)全局唯一且创建后不可修改,避免死链。创建者自动成为首位版主。平台对名称做敏感词与重名近似校验。
包含 Banner、社区图标、简介卡片、订阅按钮、成员数、在线人数、置顶帖与多档排序的内容流。
实现要点:Banner 与图标支持自定义上传,未上传时按社区名称生成确定性渐变色封面,保证视觉不空窗。
订阅(Join)、关注(不加入但接收精选)、退出三种关系;支持收藏社区到自定义分组。
实现要点:订阅写入 subscriptions 表并异步更新社区 member_count 缓存。社区可设置为「公开 / 受限(需审批)/ 私密(不可见)」三种访问模式。
结构化的规则列表(编号 + 标题 + 详细说明 + 违规后果),发帖前强制展示。
实现要点:规则以 JSON 存储,版主可在后台增删改排序。举报弹窗中规则条目作为可选项,实现「举报即归类」,为审核提供依据。
社区内角色:Owner、Moderator、Flair Manager、Wiki Contributor;细粒度权限可勾选。
实现要点:权限以位掩码存储(如 1=删帖、2=封禁、4=加精…),判定时按位与运算,查询成本极低。
两类 Flair:帖子 Flair(如「讨论/教程/求助」)与用户 Flair(可自定义文本与颜色)。
实现要点:版主预置 Flair 列表,发帖时必选其一(可配置为可选);用户 Flair 由版主授予或用户自选,用于标识身份。
主题色、Banner、侧边栏 Widget(简介、规则、版主、相关社区、倒计时、自定义 Markdown)。
实现要点:主题色写入 community 配置,前端通过 CSS 变量注入,实现「进入社区即换主题」的独立站点感。
按热度、增长、新创、分类浏览社区;支持标签化分类(如「技术/生活/游戏」)。
实现要点:展示每个社区的封面、简介、成员数与近期活跃度,降低新用户的探索成本。
2 条关键交互的分步流程,按用户体验顺序描述,可直接作为前端开发与可用性测试脚本。
点击顶部「创建社区」,填写名称,系统实时校验 slug 可用性并展示最终 URL 预览。
填写简介与分类,选择访问模式(公开/受限/私密)。
上传图标与 Banner;不填则使用自动生成的渐变封面与首字母图标。
添加初始规则(可跳过,但会提示「有规则的社区举报处理更快」)。
创建成功进入社区主页,并引导邀请 3 位成员(可选)。
用户在侧边栏点击任一社区,页面不整页刷新,改为局部切换内容流。
同时将社区主题色注入根节点 CSS 变量,Header 更换为社区 Logo 与名称。
离开社区返回首页时主题色平滑过渡回全局默认色。
5 条硬性约束。这些规则应当在服务层强校验,而非仅在前端提示。
社区 slug 全局唯一、2–24 字符、仅字母数字下划线,创建后不可修改。
创建社区门槛为 TL2,且账号注册满 30 天,防止批量建站刷名。
社区数量对同一用户限 5 个(未活跃社区不计入)。
社区删除需 Owner 操作并二次确认,进入 30 天冷静期,期间可恢复。
受限社区的发帖需版主审批,私密社区不出现在任何公开列表与搜索中。
本模块涉及的 7 张表。完整字段、索引与说明见「数据表设计」页。
本模块的设计参照了哪些产品,具体参照了什么。
Subreddit 完全自治 + 装扮体系,是本模块的蓝本。
贴吧
吧内独立等级/头衔/职务分工,垂直归属感极强。
V2EX
节点可轻松创建,低门槛带来内容丰富度。
Lobsters
标签体系与社区可互补,通过标签补充跨社区过滤。
本模块交付时应当达到的量化目标。未达标即视为该模块未完成。
竞品踩过的坑,以及本模块在实现时最容易犯的错误。
社区 slug 若允许修改会产生大量死链与 SEO 损失,必须创建时锁死。
成员数不要实时 COUNT,务必走 Redis 计数器 + 定时校正。
社区过多会导致信息碎片化,需在发现页做质量排序而非纯数量堆叠。
主题色定制必须做对比度校验,防止用户配置出「看不清文字」的配色。