在图书馆三楼捡到一张校园卡,失主看到联系我
匿名 · 3 分钟前
四端已跑通 · 小程序 / 网页 / 运营台 / 服务端
投稿排在私信里、报名靠群接龙、统计靠 Excel、出了事只能删消息——这些不是运营不努力,是工具不对。微校 WeSmile 把校园社区该有的东西一次给齐:学生认证、内容分发、匿名树洞、活动报名、二手闲置、课程评价、一周 CP,外加一个校级管理员自己就能用起来的后台。
为校园组织、学生会、社团与校园墙运营者而写。
在图书馆三楼捡到一张校园卡,失主看到联系我
匿名 · 3 分钟前
考研全套资料转让,九成新,可自提
¥120 · 计算机学院
周五晚七点 · 社团招新宣讲会
已报名 128 / 200
作业不多,但期末卷子是真的硬
给分 4.2 · 老师 4.8
今天的晚霞,值得所有人抬一次头
❤ 246 · 全校可见
在图书馆三楼捡到一张校园卡,失主看到联系我
匿名 · 3 分钟前
考研全套资料转让,九成新,可自提
¥120 · 计算机学院
周五晚七点 · 社团招新宣讲会
已报名 128 / 200
作业不多,但期末卷子是真的硬
给分 4.2 · 老师 4.8
今天的晚霞,值得所有人抬一次头
❤ 246 · 全校可见
匹配成功,先聊聊看
本周第 37 对
你那台显示器还在吗?
实时送达
学生身份已通过 · 邮箱验证
耗时 1 分 12 秒
一条违规内容已下架,理由已回给作者
审核员处理 · 4 分钟
连续签到 12 天
+30 分
主包 + 7 个分包
覆盖学生端与管理端
一套账号、一套内容
邮箱 / 照片 / 答题
为什么要换个做法
它们都不是「再努力一点」能解决的,因为问题出在没有承载它们的结构。
投稿堆在私信里排队,转发一条要人工排版一次
发布即入库的结构化内容流:话题、图片、地点、互动数据都是字段,不是截图
「你是不是本校的」全靠自觉,混进来的人赶不走
邮箱 / 学生证照片 / 校情答题三选一,认证结果直接决定他能发什么、能私聊谁
出事只能删消息、拉黑、发公告,第二天没人记得为什么
举报队列、内容审核、分级处罚,每一步都留痕,驳回理由原样回给当事人
活动报名靠接龙,名单靠截图,统计靠 Excel
场次报名 + 参与者名单 + 活动时间线,导出之前它本来就是结构化数据
功能全景
不是把功能凑齐,是每一块都跑到能给真实用户用的程度。
校园动态流。话题聚合、六级浏览范围、点赞收藏分享、楼中楼评论。
真匿名:作者只有一个马甲,连内部 id 都不下发给客户端。
从发起到收尾:场次、报名、参与者名单、活动时间线、活动评论。
校内二手。发布、搜索、详情、直接私聊卖家。
课程与教师评价。给分与老师双维度评分,评价匿名。
问卷报名 → 运营人工配对 → 互给联系方式。刻意不做撮合算法。
WebSocket 实时。带额度、拉黑、撤回,以及三档接收隐私。
三选一:邮箱验证码、学生证照片、按校题库答题。
站内积分。签到获取,可充值、可兑换,收支明细可查。
浏览组织、申请加入、组织身份,以及只管自己那一个组织的管理员。
首页轮播、广告位、每日诗词、能力宫格、首页分栏——全部后台可配。
四类目标 × 五类理由,最多六件证据。删除是软删,可恢复。
真机截图
下面都是真跑起来的界面截的,不是效果图,也没有 P 过。里面的人名、帖子和数字是演示数据——界面是真的,人是编的。
写字 → 配图 → 发布 → 回到列表里看到它。中间还能挑用哪个社团身份发、要不要花积分把它置顶。
它是怎么运转的
从按下发布到被处置,中间这七步在四个端上是同一套判据——因为它们都在服务端。
客户端不自己判断能不能发,先问服务端要能力清单
账号状态、认证状态、处罚状态一次判完,不能发就把原因给出来
文本与图片过内容安全,不通过的不落库
内容按作者的校区与学校落位,读者自己决定看多远
点赞收藏分享与楼中楼评论,计数批量算,不逐条查库
四类目标、五类理由、最多六件证据,重复举报按成功处理
下架或软删,都能恢复;驳回理由原样发回给作者
把判据放在服务端,改一次规则,四个端同时生效——这是四端能长期同源的唯一办法。
四个端
学生在小程序里用,也能在浏览器里用;运营在管理台里改,改完四个端一起变。
原生小程序框架 · 88 页面
学生的日常入口。主包放高频页面,八个分包按业务切开。
Next.js 16 · shadcn/ui · 36 条路由
小程序的 88 个页面在这里收敛成 36 条路由,按能力组织而不是按页面。
Next.js 16 · 角色 × 作用域
校级管理员自己就能用。审核、运营配置、题库、CP 配对、订单都在里面。
Spring Boot 4 · JPA · Redis · MySQL 8
19 个业务域纵向切分:改树洞只需要打开一个目录。
治理
社区能活多久,取决于出事那天
客户端问一次「我现在能做什么」,拿到的是一份名字清单:发帖、评论、私聊、加群、参与交友。客户端不推导「他没认证所以不能发帖」这种规则——推导会在四个端上分叉成四个版本。
超管、运营、审核员、校级管理员、组织管理员各有一套面。跨作用域的资源一律返回「不存在」,和真的不存在长得一模一样——否则光凭报错就能试探出别的学校有什么。
服务端拒绝时给的那句话必须显示出来。审核驳回理由是审核员写的自由文本,提交人真的会看到——所以后台的输入框里写什么,就等于回给学生什么。
横向比较
不是说群和公众号不好用,是它们本来就不是为这件事设计的。
学生身份可信
内容可检索
浏览范围分级
匿名与实名并存
活动报名与名单
运营后台
数据在自己手里
| 微信群 / QQ 群 | 表白墙公众号 | 通用社区 SaaS | 微校 WeSmile | |
|---|---|---|---|---|
| 学生身份可信 | 做不到 | 做不到 | 做不到 | 支持三选一认证 |
| 内容可检索 | 做不到 | 勉强 | 支持 | 支持话题 + 全文搜索 |
| 浏览范围分级 | 做不到 | 做不到 | 勉强 | 支持六级,由近及远 |
| 匿名与实名并存 | 做不到 | 勉强 | 做不到 | 支持树洞马甲 |
| 活动报名与名单 | 做不到 | 做不到 | 勉强 | 支持场次制 |
| 运营后台 | 做不到 | 勉强 | 支持 | 支持校级 / 组织级 |
| 数据在自己手里 | 做不到 | 做不到 | 做不到 | 支持自部署 |
先回答几个
开通
这个问题在系统里有个真名,叫「学校入驻申请」。它不是给我们发一封邮件,是站内的一个计数器——你能自己看到它现在数到哪儿。
输入校名会先给你几个候选:「你是不是要找这个」。这一步不是客套——校名一旦碎成「北大 / 北京大学 / 北京大学(本部)」三行,每一行都到不了阈值,这个功能就等于不存在。服务端还会把校名归一化成同一个计数键,管理台也能把已经分叉的合并回去。
提交之后你看到的是这所学校现在有多少人、还差多少。一个人只能投一次。投错了可以撤回;最后一个人撤走时,那个空计数器会跟着一起消失,不留下一行「0 人在申请」的噪音。
不需要谁来点一下同意。阈值默认 200 人,随每条数据一起下发给客户端——客户端只负责显示,不自己算,所以你在页面上看到的差额和服务端的判断是同一个数。
到阈值建出来的学校是「待开放」状态:还得配上校区与区划码、首页 Logo、这所学校开哪几种认证方式以及它们依赖的东西——开答题认证就得先出一套题。这几步没做完,它不会出现在学校选择列表里。

微信扫这个码就能打开体验版,不用装 App,也不用先注册。
该二维码 2026-09-12 前有效
申请人不会在建校时收到「你的学校开通了」,因为那时它还不能用。开通信要等真正开放之后才发,而且只发一次。宁可晚一点通知,也不发一个当天兑现不了的承诺。