书接上回,保质期记录小程序(零)——碎碎念 ,上周末开始自己写了,目前基本完成后端MVP部分。
项目的英文名是keeper,中文名还没想好。
简单介绍 & MVP版本
其实就是一个记录保质期+提醒的小工具,具体的看我整理的MVP

家庭的设计
原来我设计的是,每个人的物品可以是私人的,也可以是家庭的,并且支持转移
但这会造成一个问题,每次权限判断的时候需要分开判断
所以我干脆借鉴米家的方式,没有私人物品的概念,每个人注册时自动为其创建一个”xxx的家庭”,只要TA不邀请人进来,就是私人空间。后续这个空间可以直接拉人共享,也可以新建一个家庭用于共享。
这样反而可以实现一个人多个私人空间的效果,产品力更强;同时,技术上的实现也更干净,少了很多无用数据库索引和复杂的鉴权中间件
技术碎碎念
- 语言:还是喜欢Go,在公司写Java写麻了
- 框架:
- 后端:用的 CloudWeGo 的 Hertz,暂时不打算用 Kitex,没必要引入微服务增加复杂度
- 代码生成:并使用 cwgo 的 standard_v2 作为代码模板(用了两天就想自定义模板了哈哈)
- 主要是用它生成 server 端也就是 hertz 的代码
- 之前还用cwgo来生成model和gorm gen,但是发现局限性太大了就舍弃了
- 数据库层:
- 整体架构:比较简单,router、handler、service是cwgo生成的,model是自己写的
- 接口定义
- IDL:用的thrift。原来用的protobuf,但是 CloudWeGo 对 thrift 的支持明显更好,就换成thrift了
- 然后用 hertz 的 swagger 生成 swagger,再导入到 Apifox
- 鉴权
- HTTP Middleware
- 主要是加了一个家庭权限中间件,从接口path中取出orgId,然后查询用户在该家庭中的角色是否符合需求
- 登录注册
- 目前做了最简单的用户体系,直接填手机号和密码注册无验证,后续接一下短信,短期内自己使用的暂时没必要,毕竟发短信要钱还要审核
- 后续有必要再去接邮箱、微信登录等