群里一直在说要有个自己的地方。后来就真的做了一个。这篇把过程记下来,不是教程,更像笔记。
Salonette 是我们群的小平台。服务目前 90 来位成员,9 个投票产生的方向小组,可以发起项目、分享链接、看看彼此在做什么。从动手到上线大概 5 天,AI 帮写了大部分代码。下面把过程摊开,万一你哪天也想给自己的小群体做一个,能少走几步弯路。
做这种小工具最容易犯的错是想太多。投票、活动、日历、AI 摘要、聊天记录归档,每个听着都有道理,但一起做的话三个月也出不来。
所以第一版只留了四样东西:成员档案、方向小组、协作项目、链接分享。其他功能数据库层面留了位子,代码一行没碰。先能用起来再说。
有一条自己定的规矩后来帮了大忙:做就做完整的,不做就彻底不做。灰色的按钮、写着「即将上线」的空页面,这些东西放上去反而让人觉得没做完。
还有一个决定值得单独说。登录没有接 Google,也没有接微信,只用邮箱+密码。听起来很原始,但原因很实际:我们的人全是从微信群点链接进来的,微信内置浏览器不支持 Google 的登录跳转。如果用了 Google OAuth,上线当天所有人都登不进去。这种事不提前想,就是上线以后的事故。
| 层 | 选择 | 为什么 |
|---|---|---|
| 前端框架 | Next.js 16 (App Router) |
服务端组件做读取,Server Actions 做写入,不需要单独写 API 层。Vercel 一键部署 |
| 样式 | Tailwind CSS v4 |
用 CSS 变量定义设计系统(品牌色 Iris #7C7FCA),不需要配置文件 |
| 后端 + 数据库 | Supabase (PostgreSQL) |
自带认证、实时订阅、行级安全(RLS)、文件存储。免费额度够百人规模用。SQL 背景的人上手最快 |
| 认证 | 邮箱+密码 + 魔法链接 | 零第三方依赖,微信浏览器内完全可用 |
| 部署 | Vercel (免费) |
GitHub push 自动部署,自定义域名免费 SSL |
| PWA | 手写 sw.js |
主流 PWA 库(serwist、next-pwa)和 Next.js 16 的 Turbopack 冲突,手写反而最稳 |
成本:第一版总成本 $0/月。Vercel 免费、Supabase 免费(50K 月活、500MB 数据库)、域名 $12/年(Porkbun)。百人以内的社群不需要花钱。
7 张表,不算多。但表和表怎么连的,决定了后面写功能的时候顺不顺。这部分稍微技术一点,不感兴趣可以跳过,但如果你打算自己做类似的东西,这里值得看一眼。
关键理解:group_members 和 project_members 是两张「关系表」(join table),它们的主键是两个外键的组合。这意味着一个人可以加多个组,参与多个项目,但不能重复加入同一个。
⚠️ 如果你用过 NoSQL(比如 Firebase),你可能习惯把「这个组有哪些人」直接存成一个数组。别这样做。一旦你需要查「这个人加了哪些组」、「这个组有多少人」、「谁最近加入的」,数组就废了。关系表是正道。
Supabase 有个功能叫 RLS(Row Level Security),说白了就是在数据库层面控制每一行数据谁能看、谁能改。规则写在数据库里,前端代码怎么写都绕不过去。
Salonette 的几条关键规则举例:
| 表 | 规则 | 意思 |
|---|---|---|
| members | SELECT: 所有登录用户可看 | 成员目录对内公开(只要登录了就能看) |
| members | UPDATE: 只能改自己的行 | user_id = auth.uid() |
| link_bookmarks | SELECT/INSERT/DELETE: 只看自己的 | 收藏是私人的,别人看不到你收藏了什么 |
| projects | INSERT: 必须是目标组的成员 | 不能在没加入的组里发起项目 |
下面这几个都是做的过程中真碰上的,不是假设的。记下来不是炫耀解决了什么,是因为做类似的东西大概率会踩到一样的。
is_admin(),跳过 RLS 直接查。所有涉及管理员判断的策略都改成调用这个函数。sw.js 放在 public 目录,30 行代码搞定缓存策略。简单、可控。NICKNAME_CANONICAL。30 个人的数据,人工校对一遍也就 10 分钟。不要相信自动去重。说实话,Salonette 的代码大部分是 AI 写的。我做的事情是想清楚要什么、给谁用、什么不做,然后交给 AI 编程工具去实现——组件、数据库规则、导入脚本都是这么来的。用 Claude Code 也好,GPT Codex 也好,其他 agent 也行,工具不重要。不会写代码不是障碍,不知道自己要什么才是。
如果你也有一个小群体,也觉得现有的工具不太合适,也许可以试试自己搭一个。成本比想象的低。
| 项目 | 费用 |
|---|---|
| Vercel 部署 | 免费 |
| Supabase 后端 | 免费(50K MAU) |
| 域名(可选) | ~$12/年 |
| AI 编程工具 | GPT Codex / Claude Code / 其他 agent |
| 总计 | $0–$1/月 + 你已有的 AI 订阅费 |
功能砍得狠,只留了四个模块。登录方案一开始就考虑了微信浏览器的限制,没有返工。种子数据用脚本从 Excel 导入,不是手动录的,后面改起来也方便。权限规则从第一天就写好了,不是上线以后补的。
还有一点:没有先做个简易版凑合用。想好了就直接做正式的,5 天够了。