Skip to content
← 返回项目

概念演示 · 家里的小生意

订餐系统沙盒

订餐会员管理系统

妈妈订餐工作室的一天,从晚上的接龙到最后一单送达,用虚构的会员走一遍,你可以亲手试试。

真实的应用自 2026 年 4 月起上线使用

这是一个概念演示,不是真实的系统。真实的应用和代码都不公开,因为里面存的是真实的顾客数据。本页的一切都是合成的:会员、餐数、价格和群消息都是虚构的,你在这里的操作也不会离开你的浏览器。

起点

我妈妈经营一家小小的订餐工作室。会员先买预付餐卡,再在群里接龙,报第二天的午餐和晚餐。

有这个系统之前,每天晚上的接龙要靠人工统计,再发消息转给下一个人。当天的订单、餐卡余额、收入和支出,最后还要录进一个 Excel 表。同一批数字,在一天结束之前要经手好几遍。

它做什么

这个应用贴合工作室本来的节奏,而不是让工作室去迁就它。每一步都在发生的时候,由做这件事的人记一次。

  1. 餐卡

    员工给会员开卡、续卡或升级餐卡。每一笔卖卡收入都会自动记账。

  2. 订单

    晚上的接龙变成第二天的订单,可以一条条录,也可以批量录。午餐和晚餐是两条独立的订单,每一份都从会员的餐卡里扣。

  3. 出餐

    手机上的出餐视图把每一份餐从待出餐推到已出餐,再到已送达。已送达是终态,完成的订单不能事后被悄悄改掉。

  4. 财务

    卖卡和散客餐费自动入账,支出手动录入,当天的数字不用再录第二遍就能对上。

怎么做出来的

角色
独立开发
开始
2026 年 4 月
平台
网页版,另有 iOS 和 Android 测试版
状态
已上线使用
  • TypeScript
  • Expo
  • React Native
  • Hono
  • Turso (libSQL)
  • Drizzle ORM
  • Zod
  • Vitest
  • Turborepo
  • Vercel
  • GitHub Actions

同一套 Expo 代码同时构建 iOS、Android 和网页版。应用连到部署在 Vercel 上的 Hono API,数据库用 Turso(libSQL),表结构和迁移交给 Drizzle。

业务规则放在一个共享包里,用 Zod 写成校验规则,应用和 API 用的是同一套。这样表单和服务器对一张有效的订单、一笔有效的支出,理解永远一致。下面的沙盒用普通的 JavaScript 复刻了其中几条。

凡是同时动到餐卡余额和账本的操作,比如取消订单,都放在同一个数据库事务里完成,所以餐卡余额和账本不会对不上。

我的角色

我是唯一的开发者。数据模型和业务规则是我设计的,应用、API 和放规则的共享包也都是我写的。

我把工作分阶段推进,用 Linear 跟踪。项目从 2026 年 4 月 22 日开始,登录、会员、餐卡、订餐和出餐视图在 4 月 25 日前都已上线。之后又陆续加了零售、标签打印,以及整套界面的重新设计。

试一试

这是一个概念演示,不是真实的系统。真实的应用和代码都不公开,因为里面存的是真实的顾客数据。本页的一切都是合成的:会员、餐数、价格和群消息都是虚构的,你在这里的操作也不会离开你的浏览器。

分四步走完工作室的一天:给餐卡充值,把模拟群聊里明天的接龙录成订单,在出餐视图里推进每一份餐,最后看当天的汇总。每一步操作都会写进操作记录,就像真实的应用会留下审计记录一样。

合成数据 · 概念演示,不是真实系统

第 1 步: 给餐卡充值

会员和剩余餐数

  • 小安剩 6 餐
  • 阿本剩 3 餐
  • 可可剩 1 餐
  • 大卫剩 12 餐
  • 艾拉已用完
  • 小凡剩 9 餐
餐包

剩下的餐会结转,充值是在原有餐数上加。这笔收入会自动入账。

第 2 步: 把接龙录成订单

工作室群聊(模拟)

工作室

明天的接龙。写上名字,午餐写“午”,晚餐写“晚”,后面跟份数,比如:小安 午1 晚1。

可以改动名单来试试这些规则。没有餐卡的散客,在名字后面加上(散客)。每一行都带一个键,同一行录两次也不会多出订单。

录入前检查

  1. 可录入1. 小安 午1 晚1小安 · 午餐 1,晚餐 1 · 餐卡 6 变 4
  2. 可录入2. 阿本 午2阿本 · 午餐 2 · 餐卡 3 变 1
  3. 暂缓3. 可可 午1 晚1可可还剩 1 餐,这次需要 2 餐。请先充值。
  4. 可录入4. 大卫 晚1大卫 · 晚餐 1 · 餐卡 12 变 11
  5. 暂缓5. 艾拉 午1艾拉还剩 0 餐,这次需要 1 餐。请先充值。
  6. 可录入6. 小林(散客) 午1小林 · 午餐 1 · 散客,每份 $16.00,共 $16.00

第 3 步: 出餐统计

明天各状态的餐数
状态午餐晚餐
待出餐00
已出餐00
已送达00

订单

还没有订单。先在第 2 步录入接龙。

第 4 步: 当天汇总

当天结余
-$86.40
卖卡收入
$0.00
散客餐费
$0.00
支出
$86.40
已送达餐数
0 餐
餐卡剩余餐数
31 餐

流水

  • 明天的食材手动-$86.40
录入支出

操作记录

最新的在最上面。真实的应用会给每一次改动留下审计记录。

还没有操作。试试上面的步骤。

沙盒没有包含的部分

沙盒省略了登录、员工账号、餐卡升级、零售和标签打印。在真实的应用里,接龙是员工通过批量下单表单录入的,自动生成次日接龙汇总还在计划之中。这里由演示替你读取模拟群聊,好让你看到后面的整个流程。

会员、餐包、价格和支出都是虚构的,与工作室本身和使用它的人都无关。

使用合成数据的概念演示。真实的应用和代码不公开。