00 / 00
Desktop 模板设计原则
01MVP Desktop scaffold 的技术选择、裁剪边界和验收标准
01MVP Desktop 模板的目标是给新产品一个可以直接改名、登录、调用 API、保存本地偏好并打包成 Tauri 应用的薄骨架。它不复制 OneSay 的录音、Todo、Widget、ASR 或产品视觉,也不把 OneSay 的 UI 包带进 01MVP 模板。
参考模板选择
主参考使用 dannysmith/tauri-template。它的价值在于工程形态成熟:Tauri v2、React 19、TypeScript、Vite、TanStack Query、类型化前后端边界、多窗口、偏好设置、自动更新、文档和质量工具都有清晰组织。
辅助参考:
- Tauri create project:确认官方 Tauri v2 + React + TypeScript 的基础结构。
- Tauri permissions:确认 Tauri v2 capability 模型。
- Tauri updater:确认自动更新需要签名产物、端点和公钥。
- Tauri UI:参考桌面 UI 密度、窗口控件、Tailwind/shadcn 的组合方式。
- OneSay Desktop:只复用已经验证过的 runtime adapter 分层经验,不复用业务逻辑或品牌样式。
裁剪原则
- 保留:Tauri v2、React 19、TypeScript、Vite Plus、Tailwind CSS、TanStack Query、typed runtime adapter、本地偏好、设置面板、updater wrapper、托盘 skeleton、API/auth 接入。
- 延后:specta 生成绑定、NSPanel、复杂多窗口、i18n、Zustand、命令面板、重型静态分析、发布流水线。
- 禁止:复制 OneSay 录音能力、复制
@onesay/ui、把模板做成另一个完整业务 App。
技术边界
products/01mvp/apps/desktop 只做桌面客户端。后端仍由 products/01mvp/apps/web/src/server/hono.ts 承载,通过同一个 /api/auth 和 /api/rpc 提供 Better Auth 与 oRPC。
桌面端使用独立的 browser/desktop oRPC adapter:
- API base URL 来自
VITE_DESKTOP_SERVER_URL。 - Auth base URL 指向
${VITE_DESKTOP_SERVER_URL}/auth。 - oRPC base URL 指向
${VITE_DESKTOP_SERVER_URL}/rpc。 - 浏览器/WebView 请求使用
credentials: "include",不手动写cookieheader。
服务端增加 DESKTOP_ALLOWED_ORIGINS,用于 Hono CORS 和 Better Auth trusted origins。默认只覆盖本地开发 origin,生产环境由项目使用者显式配置。
文件结构
products/01mvp/apps/desktop
├── src
│ ├── components
│ ├── config
│ ├── hooks
│ ├── lib
│ ├── runtime
│ ├── App.tsx
│ ├── main.tsx
│ └── styles.css
├── src-tauri
│ ├── capabilities
│ ├── icons
│ ├── src
│ ├── Cargo.toml
│ └── tauri.conf.json
├── .env.example
├── README.md
├── package.json
├── tsconfig.json
└── vite.config.ts验收标准
vpr @01mvp/desktop#type-check通过。vpr @01mvp/desktop#lint通过。vpr @01mvp/desktop#test通过。vpr @01mvp/desktop#build通过。cargo check --manifest-path products/01mvp/apps/desktop/src-tauri/Cargo.toml通过。pnpm exec tauri dev --config '{"build":{"beforeDevCommand":""}}'能启动 native app,不依赖未配置的 updater 发布端点。- 浏览器打开 Desktop dev server 后,能看到桌面 shell、API 状态、登录表单、设置面板和模板说明。
@01mvp/product的 build/lint/type-check/test 脚本包含 desktop。products/01mvp/apps/web/content/docs/template/apps/desktop记录项目结构、环境变量、后端接入和后续发布边界。
清理要求
- 新 app 不依赖
@onesay/ui或 OneSay 业务包。 - 不引入未使用的重型依赖。
- 不提交
src-tauri/target、dist、临时 clone 或本机签名产物。 - 提交前检查
git status --short、git diff --check和 staged diff。
这篇文档有问题?