1.6 KiB
1.6 KiB
技术方案
客户端
默认选 Web-first PWA。
技术栈:
- Vue 3 + TypeScript。
- Vite。
- PWA manifest + Service Worker。
- Vue Router。
- Pinia。
- Dexie + IndexedDB。
选择理由:
- 不需要应用商店安装。
- 更新由服务端发布,用户无需手动升级 App。
- 同一套代码覆盖 iOS、Android 和桌面浏览器。
- 账本主要是表单、列表、汇总和同步,Web 足够。
本地存储:
- IndexedDB 是客户端主数据源。
- 所有账目先写本地,再进入同步队列。
- Service Worker 缓存应用壳,使无网络时仍能打开。
- localStorage 只存轻量配置。
后端
默认选 Node.js + TypeScript + Fastify + PostgreSQL。
职责:
- 账号登录。
- 设备审批。
- 账本、成员和邀请管理。
- 按账本权限过滤数据访问。
- 同步 push/pull。
- 服务端变更日志。
测试
首期只做 Playwright 端到端测试。
覆盖重点:
- 手机视口下的核心操作。
- 账本权限和邀请。
- 离线记账。
- 恢复网络后的同步。
暂不引入单元测试和组件测试。
备选
React Native
仅在这些情况再考虑:
- 必须应用商店分发。
- 必须强后台同步。
- 必须调用大量原生能力。
- PWA 在目标设备上体验不可接受。
Supabase / Firebase
可以加快早期开发,但离线同步和冲突语义仍要自己把控。当前不作为默认方案。
工程结构
apps/
web/ # PWA Web App
services/
api/ # Fastify API
packages/
domain/ # 共享类型、同步操作定义
db/ # 数据库 schema 和迁移
docs/