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",不手动写 cookie header。

服务端增加 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/targetdist、临时 clone 或本机签名产物。
  • 提交前检查 git status --shortgit diff --check 和 staged diff。

这篇文档有问题?