概览

功能完备的 Tauri 2 桌面启动模板,内置认证、计费、设置、更新、系统钥匙串安全存储与能力受限的 IPC。

Tauri 模板是一套功能完备、clone-and-ship 的桌面启动模板,面向需要在 Windows、macOS 与 Linux 上发布商业应用的团队。它预置了真实桌面产品的高频基础设施 ——认证、可搜索的设置中心、自动更新管线、带脱敏的日志、Creem 计费、系统钥匙串安全存储、 能力受限的 IPC、打包,以及一键改名——你只需替换品牌、页面和业务逻辑即可发布。

保留 Rust 核心与类型化的命令边界,把默认品牌、演示界面和产品逻辑替换成你自己的。

"功能完备" 表示模板提供真实的桌面应用基础设施,不表示可以不经审查直接上线。 部分界面是 ExampleOpt-in slotRemovable demo,发布前应按你的产品改造或删除。

Tauri 还是 Electron?

本模板是 Soar Electron 启动模板的 Tauri 对应版本:相同的前端技术栈、相同的产品界面, 以及相同的 Supabase + Creem 后端。差异只在桌面层。

关注点Electron 版本模板
原生运行时打包的 Chromium + Node 主进程Rust 核心 + 系统 webview(安装包更小、内存更低)
安全边界contextBridge preload 脚本声明式能力 ACL——按窗口授权,绝不使用通配
IPC 类型手写 Zod schematauri-specta 编译期推导类型,提交的 src/lib/bindings.ts 由 CI 检测漂移
安全存储Electron safeStorage通过 Rust keyring crate 使用系统钥匙串

如果两者你都拥有,Supabase 计费 schema 与 Edge Functions 是共享的——一套后端即可服务两端。 需要对比时可查看 Electron 根目录

技术栈

层级选择
原生运行时Tauri 2(Rust),单个系统 webview 窗口
UI 运行时React 19、React Router 7(HashRouter,懒加载路由)
语言与构建TypeScript 5.8、Vite 7
样式Tailwind CSS 4 + tw-animate-css、shadcn/ui(Radix、CVA、cmdk、sonner)
应用状态zustand 5、TanStack Query 5、react-hook-form、zod 4
后端客户端supabase-js 2,带类型化数据库访问
更新tauri-plugin-updater,基于 minisign 签名的静态更新源
可观测性tauri-plugin-log + Rust 脱敏,可选 Sentry(Rust crate + @sentry/browser
本地化i18next / react-i18next,英文和简体中文
测试Vitest 4,以及独立的 WebdriverIO + tauri-driver e2e 套件
工具链pnpm 11.1.3、ESLint、Prettier、tauri-specta 代码生成、一键改名

功能状态

本根目录统一使用这些状态标签:

  • Integrated — 已接入应用,默认可用。
  • Flag-gated — 整个子系统由构建期开关剥离或隐藏;每页会说明默认值。
  • Opt-in slot — 在配置用户开启之前保持关闭。
  • Example — 可运行的演示代码,供替换为你的产品逻辑。
  • Removable demo — 以 [template-demo] 标记的评估界面,由 Showcase 删除清单覆盖。
领域状态范围
Shell 与 IPCIntegratedRust 核心 + 沙箱 webview、15 个类型化命令、tauri-specta 绑定带 CI 漂移检测、能力 ACL、受控外链导航
桌面界面Integrated无边框自定义标题栏、TS 构建的原生菜单 + 托盘、命令面板、窗口状态持久化、日志、脱敏诊断
设置Integrated版本化 tauri-plugin-store JSON 存储、前向迁移、备份导入/导出、搜索、主题、语言、代理、存储、通知、快捷键
认证Flag-gatedVITE_AUTH_ENABLED 默认;Supabase 邮箱/密码,会话存于系统钥匙串
数据示例ExampleTodos、profile、头像上传是可复制的范式;需要设置文档中的 Supabase schema
计费Flag-gatedVITE_BILLING_ENABLED 默认;Creem 结账、客户门户、许可证模式与 <FeatureGate> 仅在配置后启用
隐私插槽Opt-in slotRust 与 webview 的 Sentry;模板提供供应商无关的分析配置与授权界面,但在你实现 provider 前,传输层仍是 no-op scaffold
自动更新Flag-gatedVITE_AUTO_UPDATE_ENABLED 默认;后台检查是另一项运行时开关,默认关
Showcase 目录Removable demo能力目录、组件画廊与演示路由,位于 VITE_SHOWCASE_ENABLED[template-demo] 标记之后
分发IntegratedWindows NSIS + MSI、macOS DMG、Linux AppImage/deb/rpm、env 驱动的签名/公证、minisign 签名更新源
开发体验Integratedpnpm dev、质量门禁脚本、就近测试、类型化 IPC、一键改名

应用界面地图

webview 是一个位于无边框桌面外壳内的 React SPA(HashRouter):

  • 侧边栏布局 — 首页、展示(26 项能力目录 + 组件画廊 + 实时演示)、日志、帮助、 更新、账户、设置、关于,以及启用计费时的订阅。
  • 认证 — 登录、注册、忘记密码、重置密码页面在外壳之外渲染。
  • 设置中心 — 目前 8 个可搜索标签:通用、外观、通知、快捷键、代理、存储、更新、高级。
  • 账户页 — 独立的 /account 路由,承载已登录用户的资料与头像流程。
  • 关于 — 带复制按钮的脱敏诊断。
  • 命令面板Cmd/Ctrl+K 打开路由动作、设置快捷项,以及启用演示层时的展示动作。
  • 引导门 — 首启引导;设置了 EULA_URL 时可加入可选的 EULA 门。

VITE_AUTH_ENABLED 开启(默认)时,webview 会在挂载前校验 VITE_SUPABASE_URLVITE_SUPABASE_PUBLISHABLE_KEY.env.example 中的占位值 可通过校验,因此你能立即浏览外壳——但真正的认证、资料、头像、todos 与计费流程 需要一个 Supabase 项目。

品牌默认值

在你评估模板期间,身份刻意保持直白:Soar Taurisoar-tauri:// 深链协议,以及 com.soarstarter.tauri bundle 标识符。前端模块从 shared/constants.ts 导入这些值;pnpm rebrand 会在该文件、 tauri.conf.jsonCargo.tomlpackage.json 之间同步它已知的字段。 原生元数据和钥匙串身份中仍需手动处理的项目见品牌定制页面。

从这里开始

从 clone 到可分发桌面应用的最快路径:

On this page