WorthBase(家底)技术架构全解析:一款本地优先的个人财务 App 文章目录WorthBase家底技术架构全解析一款本地优先的个人财务 App为什么做 WorthBase技术选型为什么选 SQLite 而不是 AsyncStorage为什么选 Zustand 而不是 Redux项目架构数据模型核心特性速览开源地址WorthBase家底技术架构全解析一款本地优先的个人财务 App为什么做 WorthBase市面上的个人财务 App 分两类记账类和资产管理类。记账类关注每笔花了多少钱资产管理类关注你有多少钱。我想要的是后者——不记流水只做状态管理。回答三个核心问题我有多少钱— 多账户余额汇总我的东西值多少— 实物资产估值 持有成本净资产趋势如何— 历史折线图 目标预测并且所有数据只存在本地。不联网、不注册、不上云。技术选型层级技术选择理由框架Expo SDK 55开发体验好EAS 构建便捷UIreact-native-paper (MD3)Material Design 3 开箱即用图表react-native-svg自绘 SVG 图表完全控制渲染手势react-native-gesture-handler图表缩放/拖拽需要精确手势控制状态Zustand轻量、简洁适合中小项目存储expo-sqlite本地 SQLite支持事务和复杂查询路由Expo Router文件系统路由Tab 导航图标lucide-react-native统一图标库支持主题色为什么选 SQLite 而不是 AsyncStorage财务数据有三个特点需要关系型数据库事务导入数据时要么全部成功要么全部回滚关联查询余额快照要按账户 JOIN 查询最新值聚合计算净资产需要 SUM 所有账户余额AsyncStorage 是 KV 存储做这些很痛苦。SQLite 是正确选择。为什么选 Zustand 而不是 Redux项目只有 3 个 storeaccount-store、asset-store、settings-store每个 store 管理一个领域的数据。Zustand 的 API 极简——没有 action、reducer、middleware 的概念直接setState。对 75 个文件的项目来说Redux 太重了。项目架构app/ # Expo Router 页面4 个 Tab 设置 ├── _layout.tsx # 根布局DB 初始化、自动备份、应用锁 ├── index.tsx # 总览 Dashboard净资产、趋势图、持有成本 ├── accounts.tsx # 账户列表余额管理、快照更新 ├── assets.tsx # 资产列表实物资产 CRUD └── settings.tsx # 设置主题、导出/导入、应用锁 src/ ├── engine/ # 纯计算逻辑无 UI 依赖可单测 │ ├── HoldingCostCalculator.ts # 持有成本编排器 │ ├── NetWorthCalculator.ts # 净资产 余额 估值 │ ├── ProjectionCalculator.ts # 线性回归预测目标达成日 │ ├── SettlementCalculator.ts # 卖出结算 │ ├── MaintenanceCalculator.ts # 维护费用分摊 │ ├── RecurringExpenseCalculator.ts # 经常性支出 │ ├── AmortizationRecommender.ts # 按资产分类推荐分摊方式 │ └── strategies/ # 4 种分摊策略Strategy 模式 │ ├── db/ # 数据层SQLite Repository 模式 │ ├── schema.ts # 7 张表的 CREATE TABLE 索引 │ ├── client.ts # SQLite 连接管理 │ ├── migrations.ts # 数据库迁移 │ └── *-repository.ts # 各表的 CRUD7 个 Repository │ ├── stores/ # Zustand 状态管理 │ ├── account-store.ts # 账户数据 余额更新 │ ├── asset-store.ts # 资产数据 CRUD │ └── settings-store.ts # 用户设置 │ ├── services/ # 业务服务 │ ├── backup-service.ts # SQLite 文件级自动备份 │ ├── export-service.ts # JSON/CSV 导出 │ ├── import-service.ts # JSON 导入ID 重映射 事务 │ └── auth-service.ts # 应用锁 │ ├── components/ # UI 组件 │ ├── ui/ # 基础组件Button, Card, Chip, TextInput... │ ├── InteractiveTrendChart.tsx # 趋势图540 行最复杂组件 │ ├── HoldingCostBreakdown.tsx # 持有成本明细 │ └── ... │ ├── theme/ # 主题系统 │ ├── colors.ts # 颜色定义 │ ├── tokens.ts # 间距、圆角、阴影 token │ ├── typography.ts # 字体定义 │ └── ThemeProvider.tsx # 主题上下文 暗色模式 │ └── types/ # TypeScript 类型 ├── enums.ts # 枚举账户类型、资产分类、分摊方式等 └── models.ts # 数据模型接口代码统计75 个源文件11,669 行代码2,800 行测试。数据模型7 张表覆盖完整的财务数据管理accounts ─────────────── 账户8 种类型 └── balance_snapshots ── 余额快照每次更新追加不修改 assets ───────────────── 实物资产8 种分类4 种分摊方式 ├── recurring_expenses ─ 经常性支出保险、停车费等 ├── maintenance_records─ 一次性维护维修、保养 └── valuation_history ── 估值历史可选开启追踪 settings ──────────────── 应用设置KV 存储核心特性速览特性实现方式相关文章4 种持有成本分摊Strategy 模式 智能推荐持有成本深度解析净资产趋势图SVG 自绘 手势缩放/拖拽 降采样趋势可视化深度解析本地数据备份AppState 监听 SQLite 文件复制本地优先架构资产生命周期状态机active → retired/sold资产生命周期管理多账户管理8 种类型 快照机制 负债支持多账户余额管理主题系统Token 驱动 暗色模式设计系统开源地址GitHub: github.com/callmebg/worthbase如果觉得架构设计有参考价值给个 Star。欢迎提 Issue 和 PR。CSDN 标签:React NativeExpo架构设计开源移动开发掘金话题:前端架构React Native开源

相关新闻

最新新闻

ONNX模型优化:提升AI推理性能的关键技术

ONNX模型优化:提升AI推理性能的关键技术

1. 大规模推理场景下的ONNX模型优化需求在工业级AI应用中,模型推理性能直接关系到服务质量和运营成本。以某电商平台的商品推荐系统为例,当面临每秒数万次的并发请求时,即使单个请求的推理延迟增加10毫秒,也会导致整体服务成本上升…

2026/7/22 4:42:05
企业AI Agent选型与OpenClaw实战指南

企业AI Agent选型与OpenClaw实战指南

1. 企业架构师视角下的AI Agent技术演进2026年的企业数字化战场,AI Agent已经从实验室概念演变为核心生产力工具。作为经历过三次技术迭代的企业架构师,我亲眼见证了从早期规则引擎到现代自主Agent的进化历程。当前主流Agent平台已形成三大技术流派&…

2026/7/22 4:42:05
YOLOv8在智能交通车辆检测中的实践与优化

YOLOv8在智能交通车辆检测中的实践与优化

1. 项目背景与核心价值在智能交通系统快速发展的今天,车辆检测与识别技术已成为城市管理、道路安全监控和自动驾驶等领域的关键支撑。传统基于规则和手工特征的检测方法在面对复杂道路场景时,往往存在适应性差、误检率高的问题。而基于深度学习的YOLOv8模…

2026/7/22 4:42:05
逆向工程剖析:短信验证码防泄漏机制与客户端安全攻防实战

逆向工程剖析:短信验证码防泄漏机制与客户端安全攻防实战

1. 项目概述:当验证码不再安全最近在安全圈里,一个老生常谈但又不断翻新的议题再次被推到了风口浪尖——短信验证码的安全。你可能也注意到了,无论是“短信验证码轰炸app”这类骚扰工具的泛滥,还是关于系统底层安全机制&#xff0…

2026/7/22 4:42:05
NS-FPN在YOLOv11中的小目标检测优化实践

NS-FPN在YOLOv11中的小目标检测优化实践

1. 项目概述:NS-FPN在YOLOv11中的创新应用这个改进方案的核心在于将NS-FPN(Noise Suppression Feature Pyramid Network)特征金字塔网络集成到YOLOv11目标检测框架中。作为一名长期从事计算机视觉研发的工程师,我特别关注到这种&q…

2026/7/22 4:42:05
Qt Quick (QML) 应用如何通过 C++ 实现任务栏图标与进度条

Qt Quick (QML) 应用如何通过 C++ 实现任务栏图标与进度条

1. 项目概述:当QML的华丽界面遇上任务栏的“小图标”难题在桌面应用开发中,任务栏图标(Taskbar Icon)是一个看似微小、实则至关重要的细节。它不仅是应用在操作系统任务栏上的“脸面”,更是用户与应用进行快速交互&…

2026/7/22 4:37:04

月新闻