Pennybase:迷你版的后端即服务BaaS平台


【超通俗版】Pennybase:一个迷你版"后端外卖平台"

Poor man的后端即服务(BaaS),类似于Firebase/Supplement/Pocketbase

想象你想开家网店,但不会做饭(写后端代码)。这时候你可以叫外卖(用BaaS平台)!Firebase就像麦当劳,PocketBase是沙县小吃,而今天要介绍的是我自家厨房做的"泡面版"后端——Pennybase!

它在不到1000行的Go代码中实现了核心后端功能,只使用标准库,没有外部依赖:

  • 使用CSV和版本化记录的基于文件的存储
  • 带有JSON响应的REST API
  • 使用会话cookie和基本身份验证进行身份验证
  • RBAC和基于所有权的权限
  • 通过SSE实时更新
  • 数字/文本/列表的模式验证
  • 使用Go模板进行模板渲染

这个泡面有什么特别?
- 只有700行代码(相当于35包泡面摞起来的高度)
- 纯手工制作(零外部依赖)
- 该有的都有:数据存储、用户管理、实时更新

数据怎么存?
我们把商品信息都记在小本本(CSV文件)上:
- 每行记录就像一张便利贴(Record)
- 但实际展示时要包装成精美礼盒(Resource)
- 礼盒说明书(Schema)告诉我们怎么打包:
  - "价格"要写数字(Number)
  - "商品名"要写文字(Text)
  - "标签"可以写多个(List)

仓库管理(数据库):
- 新商品到货就贴到本本最后面(追加写入)
- 找商品时先查目录(内存索引)
- 卖完的商品就划掉(版本号归零)

开店营业(HTTP API):
- GET /api/商品 :看菜单
- POST /api/商品 :上新
- PUT /api/商品/123 :改价格
- DELETE /api/商品/456 :下架

会员系统:
- 普通顾客只能看菜单(read)
- VIP可以下单(create)
- 店长才能改菜单(update)

实时通知:
- 用"大喇叭"(Server-Sent Events)喊:
  - "新商品上架啦!"
  - "3号商品卖完啦!"

️ 自定义功能:
- 可以加"自动提醒"(Hook):
  - "每当有人下单,就微信通知我"
  - "商品价格不能低于10块钱"

学习价值:
就像泡面能教你下面条,Pennybase能教你:
1. 怎么设计简单数据库
2. 怎么搭HTTP接口
3. 怎么做用户权限
4. 怎么实现实时更新


结论
Pennybase是一个简单但功能强大的BaaS,可用于构建Web应用程序原型,而无需每次构建单独的后端。它有一个简单的数据模型,一个简单的存储,一个REST API,身份验证和授权,实时更新和“准入挂钩”。当然,它仍然是一个玩具,而不是生产级BaaS解决方案。