跳到正文
微校 WeSmile

四端已跑通 · 小程序 / 网页 / 运营台 / 服务端

校园墙,值得一套真正的系统

投稿排在私信里、报名靠群接龙、统计靠 Excel、出了事只能删消息——这些不是运营不努力,是工具不对。微校 WeSmile 把校园社区该有的东西一次给齐:学生认证、内容分发、匿名树洞、活动报名、二手闲置、课程评价、一周 CP,外加一个校级管理员自己就能用起来的后台。

为校园组织、学生会、社团与校园墙运营者而写。

树洞

在图书馆三楼捡到一张校园卡,失主看到联系我

匿名 · 3 分钟前

闲置

考研全套资料转让,九成新,可自提

¥120 · 计算机学院

活动

周五晚七点 · 社团招新宣讲会

已报名 128 / 200

评课

作业不多,但期末卷子是真的硬

给分 4.2 · 老师 4.8

新鲜事

今天的晚霞,值得所有人抬一次头

❤ 246 · 全校可见

一周 CP

匹配成功,先聊聊看

本周第 37 对

私信

你那台显示器还在吗?

实时送达

认证

学生身份已通过 · 邮箱验证

耗时 1 分 12 秒

审核

一条违规内容已下架,理由已回给作者

审核员处理 · 4 分钟

微校分

连续签到 12 天

+30 分

88
小程序页面

主包 + 7 个分包

297
服务端接口

覆盖学生端与管理端

4
端同源

一套账号、一套内容

3
种认证方式

邮箱 / 照片 / 答题

为什么要换个做法

校园社区的四个老问题

它们都不是「再努力一点」能解决的,因为问题出在没有承载它们的结构。

  1. 投稿堆在私信里排队,转发一条要人工排版一次

    发布即入库的结构化内容流:话题、图片、地点、互动数据都是字段,不是截图

  2. 「你是不是本校的」全靠自觉,混进来的人赶不走

    邮箱 / 学生证照片 / 校情答题三选一,认证结果直接决定他能发什么、能私聊谁

  3. 出事只能删消息、拉黑、发公告,第二天没人记得为什么

    举报队列、内容审核、分级处罚,每一步都留痕,驳回理由原样回给当事人

  4. 活动报名靠接龙,名单靠截图,统计靠 Excel

    场次报名 + 参与者名单 + 活动时间线,导出之前它本来就是结构化数据

功能全景

十二个模块,覆盖校园社区的日常

不是把功能凑齐,是每一块都跑到能给真实用户用的程度。

  • 新鲜事

    校园动态流。话题聚合、六级浏览范围、点赞收藏分享、楼中楼评论。

    • 由近及远六级:本校区 / 本校 / 同区 / 同市 / 同省 / 全站
    • 话题广场:最新与最热
    • 图片九宫格与全屏预览
  • 匿名树洞

    真匿名:作者只有一个马甲,连内部 id 都不下发给客户端。

    • 马甲可更换
    • 抱一抱代替点赞
    • 匿名评论,无真实作者入口
  • 活动

    从发起到收尾:场次、报名、参与者名单、活动时间线、活动评论。

    • 一个活动可挂多个场次
    • 报名名单可查可导
    • 我发起的 / 我报名的分开看
  • 闲置

    校内二手。发布、搜索、详情、直接私聊卖家。

    • 图片直传,不占服务端带宽
    • 详情页一键起会话
    • 评论区问细节
  • 评课

    课程与教师评价。给分与老师双维度评分,评价匿名。

    • 按学院 / 校区 / 教师检索
    • 热搜词由后端统计
    • 匿名评价,署名只有分数
  • 一周 CP

    问卷报名 → 运营人工配对 → 互给联系方式。刻意不做撮合算法。

    • 表单编辑器在管理台
    • 答卷按题合并展示
    • 可解除配对,双方退回待匹配
  • 私信

    WebSocket 实时。带额度、拉黑、撤回,以及三档接收隐私。

    • 未回复仅三条,防骚扰
    • 拉黑与撤回
    • 隐私三档:无限 / 未回复仅三条 / 禁止
  • 学生认证

    三选一:邮箱验证码、学生证照片、按校题库答题。

    • 照片走 AI 初筛后转人工复核
    • 邮箱与答题当场出结果
    • 驳回理由必填,原样发回
  • 微校分

    站内积分。签到获取,可充值、可兑换,收支明细可查。

    • 连续签到累进
    • 微信支付充值
    • 每一笔都有流水
  • 社团组织

    浏览组织、申请加入、组织身份,以及只管自己那一个组织的管理员。

    • 组织主页与封面
    • 申请加入走审核,可查「我加入的组织」
    • 组织管理员看不到别的组织
  • 运营位

    首页轮播、广告位、每日诗词、能力宫格、首页分栏——全部后台可配。

    • 轮播分位置,位置是枚举不是自由字符串
    • 投放范围六档:全站 / 全省 / 全市 / 单校 / 多校 / 校区
    • 跳转路径按注册表强校验,配错提交不上去
  • 举报与审核

    四类目标 × 五类理由,最多六件证据。删除是软删,可恢复。

    • 八类内容统一审核台
    • 动态 / 闲置 / 活动支持上下架
    • 已被他人处理会明确提示

真机截图

它长这样

下面都是真跑起来的界面截的,不是效果图,也没有 P 过。里面的人名、帖子和数字是演示数据——界面是真的,人是编的。

  • 新鲜事:动态流、浏览范围,作者行带社团头衔
  • 树洞:作者只剩一个匿名马甲
  • 活动详情:时间地点、参与者与评论
  • 评课:按任课老师逐位打分,给分和讲课分开评
  • 闲置:校内二手
  • 浏览范围:六级由近及远,从本校区一直到全站
  • 学生认证:三选一
  • 一周 CP:配对成功,互给联系方式
  • 私信:实时会话
  • 我的:微校分与社团头衔

发一条动态

写字 → 配图 → 发布 → 回到列表里看到它。中间还能挑用哪个社团身份发、要不要花积分把它置顶。

它是怎么运转的

一条内容的一生

从按下发布到被处置,中间这七步在四个端上是同一套判据——因为它们都在服务端。

  1. 01发布

    客户端不自己判断能不能发,先问服务端要能力清单

  2. 02校验

    账号状态、认证状态、处罚状态一次判完,不能发就把原因给出来

  3. 03安全

    文本与图片过内容安全,不通过的不落库

  4. 04分发

    内容按作者的校区与学校落位,读者自己决定看多远

  5. 05互动

    点赞收藏分享与楼中楼评论,计数批量算,不逐条查库

  6. 06举报

    四类目标、五类理由、最多六件证据,重复举报按成功处理

  7. 07处置

    下架或软删,都能恢复;驳回理由原样发回给作者

把判据放在服务端,改一次规则,四个端同时生效——这是四端能长期同源的唯一办法。

四个端

一套账号、一套内容、四个入口

学生在小程序里用,也能在浏览器里用;运营在管理台里改,改完四个端一起变。

  1. 微信小程序

    原生小程序框架 · 88 页面

    学生的日常入口。主包放高频页面,八个分包按业务切开。

    • 深色模式跟随系统
    • 分包按业务域切分
    • 微信登录、订阅消息、微信支付
  2. 网页版

    Next.js 16 · shadcn/ui · 36 条路由

    小程序的 88 个页面在这里收敛成 36 条路由,按能力组织而不是按页面。

    • 小程序扫码确认,网页登录同一个账号
    • 桌面三栏 + 移动端底 tab
    • 私信走 WebSocket,掉线有轮询兜底
    • 中英双语,服务端的报错文案跟着所选语言走
  3. 运营管理台

    Next.js 16 · 角色 × 作用域

    校级管理员自己就能用。审核、运营配置、题库、CP 配对、订单都在里面。

    • 八类内容审核 + 软删恢复
    • 学生认证 AI 初筛后人工复核
    • 按学校 / 按组织收窄可管范围
  4. 服务端

    Spring Boot 4 · JPA · Redis · MySQL 8

    19 个业务域纵向切分:改树洞只需要打开一个目录。

    • 297 个接口,覆盖学生端与管理端
    • 自建令牌 + 滑动续期
    • 接口契约有集成测试钉着
06

治理

社区能活多久,取决于出事那天
功能决定它能不能开张,治理决定它能不能开一年。这三条是我们踩过之后固定下来的。
  • 能力由服务端算,不让客户端猜

    客户端问一次「我现在能做什么」,拿到的是一份名字清单:发帖、评论、私聊、加群、参与交友。客户端不推导「他没认证所以不能发帖」这种规则——推导会在四个端上分叉成四个版本。

  • 权限 = 角色能做的 ∩ 作用域允许的

    超管、运营、审核员、校级管理员、组织管理员各有一套面。跨作用域的资源一律返回「不存在」,和真的不存在长得一模一样——否则光凭报错就能试探出别的学校有什么。

  • 说「不行」的时候,要说清为什么

    服务端拒绝时给的那句话必须显示出来。审核驳回理由是审核员写的自由文本,提交人真的会看到——所以后台的输入框里写什么,就等于回给学生什么。

横向比较

为什么不用现成的?

不是说群和公众号不好用,是它们本来就不是为这件事设计的。

微信群 / QQ 群
表白墙公众号
通用社区 SaaS
微校 WeSmile
  • 学生身份可信

    做不到
    做不到
    做不到
    支持三选一认证
  • 内容可检索

    做不到
    勉强
    支持
    支持话题 + 全文搜索
  • 浏览范围分级

    做不到
    做不到
    勉强
    支持六级,由近及远
  • 匿名与实名并存

    做不到
    勉强
    做不到
    支持树洞马甲
  • 活动报名与名单

    做不到
    做不到
    勉强
    支持场次制
  • 运营后台

    做不到
    勉强
    支持
    支持校级 / 组织级
  • 数据在自己手里

    做不到
    做不到
    做不到
    支持自部署

先回答几个

你现在大概在想的问题

看全部问答

我们只有五六个人,跑得起来吗?

跑得起来,但要先砍功能。建议第一版只开新鲜事、树洞和活动三块,认证只开邮箱一种。审核班最少要两个人轮,因为「审核」的成本不在数量,在响应时间。

一定要做学生认证吗?

如果你打算开树洞和私信,几乎一定要。认证不是为了拦人,是为了让处罚有意义——一个删了号五分钟就能再注册的社区,任何治理手段都是装饰。

匿名树洞会不会失控?

会,所以匿名是对其他用户匿名,不是对系统匿名。内容仍然过安全检测,仍然可举报可下架,处罚仍然落到真实账号上。

要花多少钱?

系统本身是自部署的。硬成本是一台跑 MySQL 和 Redis 的服务器、一个对象存储桶、一个小程序账号;小程序账号同时支持网页扫码登录,想做充值再加商户号。

开通

怎么把我学校加进来

这个问题在系统里有个真名,叫「学校入驻申请」。它不是给我们发一封邮件,是站内的一个计数器——你能自己看到它现在数到哪儿。

  1. 先搜,别急着新建

    输入校名会先给你几个候选:「你是不是要找这个」。这一步不是客套——校名一旦碎成「北大 / 北京大学 / 北京大学(本部)」三行,每一行都到不了阈值,这个功能就等于不存在。服务端还会把校名归一化成同一个计数键,管理台也能把已经分叉的合并回去。

  2. 投一票,人数是公开的

    提交之后你看到的是这所学校现在有多少人、还差多少。一个人只能投一次。投错了可以撤回;最后一个人撤走时,那个空计数器会跟着一起消失,不留下一行「0 人在申请」的噪音。

  3. 人数够了当场建校

    不需要谁来点一下同意。阈值默认 200 人,随每条数据一起下发给客户端——客户端只负责显示,不自己算,所以你在页面上看到的差额和服务端的判断是同一个数。

  4. 建校之后还要开放

    到阈值建出来的学校是「待开放」状态:还得配上校区与区划码、首页 Logo、这所学校开哪几种认证方式以及它们依赖的东西——开答题认证就得先出一套题。这几步没做完,它不会出现在学校选择列表里。

微校 WeSmile 体验版小程序码

先扫码试试

微信扫这个码就能打开体验版,不用装 App,也不用先注册。

该二维码 2026-09-12 前有效

到阈值那一刻,我们只通知自己

申请人不会在建校时收到「你的学校开通了」,因为那时它还不能用。开通信要等真正开放之后才发,而且只发一次。宁可晚一点通知,也不发一个当天兑现不了的承诺。

不想等,或者等不起

这套系统本来就是自部署的:代码、数据库、对象存储都在你们自己手里。学校自己起一套,不用排队也不用凑人数——那条路写在落地手册里,第一步是先砍功能。

看落地手册

先看它能做什么,还是先看怎么落地?

功能全景讲的是「有什么」,落地手册讲的是「从哪开始」。

1142704468@qq.com微信