文档
快速入门
从工作区依赖项到由真正的本地 sidecar 支持的桌面窗口。
从英文自动翻译。 查看英文原文
要求
工作区声明Bun 1.4.4 作为它的包管理器。使用存储库锁定文件进行依赖项安装。本机桌面开发还需要 Rust 工具链、平台的 Tauri 构建依赖项以及已安装的系统 Webview。 Tauri CLI 已经成为桌面开发依赖项。
- 苹果系统: 用于 Rust/本机链接和打包的 Xcode 命令行工具。
- 视窗: mSVC 工具链和 WebView2 运行时/构建先决条件。
- Linux: WebKitGTK 4.1、应用程序指示器、librsvg、OpenSSL 和捆绑器工具。 CI 工作流程记录了 Ubuntu 上使用的包。
- iOS 伴侣: macOS、Xcode、CocoaPods 和包含本地固定模块的本机 Expo 版本。
浏览器预览需要 Bun 和工作区依赖项,但不编译 Rust shell。发布安装程序还需要签名配置;这与本地 UI 开发是分开的。
安装依赖项
bun install
bun run --filter @cadcamfun/desktop typecheck
bun test packages/core 在工作区根目录安装一次,以便本地安装 workspace:* 依赖关系一起解决。 CI 使用 bun install --frozen-lockfile 拒绝锁文件漂移。使用包脚本选择存储库的配置编译器,而不是假设每个包都使用相同的 TypeScript 可执行文件。
上面的目标命令提供了快速的源检查。完整的工作区检查是 bun run typecheck 和 bun run test;它们涵盖更多模块并且可能需要更长的时间。单个传递包并不能证明所有运行时集成都已配置。
数据库设置
真正的桌面不需要单独的 CLI 迁移命令。它的启动器提供应用程序数据目录和分阶段迁移到 sidecar;打开数据库应用挂起的迁移。 bun run desktop:dev 作为准备 sidecar 的一部分,暂存迁移资源。
数据库命令行工具是单独的。 bun run db:migrate 委托给数据库包,默认为 ./data/cadcamfun.db 通常相对于该包的进程目录 packages/db/data/cadcamfun.db 通过根脚本调用时。设置绝对值 DATABASE_URL 当您需要定位特定数据库时。
bun run db:generate
bun run db:migrate 一代阅读 packages/db/src/schema.ts 并将迁移写入 packages/db/drizzle。应用迁移会更新选定的 CLI 数据库,而不是每个应用程序数据库。本机桌面数据位于 Tauri 应用程序数据目录中;手动启动的 sidecar 使用 CADCAMFUN_DATA_DIR.
慎重选择数据库
成功的 CLI 迁移不会更改桌面打开的数据库。在调查丢失的项目或应用手动数据操作之前,找到 sidecar 数据目录。
打开桌面
bun run desktop:dev 这会编译真正的 Bun sidecar 并进行迁移,然后运行 Tauri。 Tauri 开始 Vite 的时间为 http://localhost:1420 并打开网络视图。 Rust shell 等待 sidecar 准备好握手; webview 在显示路由屏幕之前会检查运行状况。
保持启动终端打开。 shell 拥有 sidecar 生命周期并提供其启动令牌和路径。如果启动失败,请检查启动原因和应用日志。 Web 视图重试端点发现最多 150 秒; shell 允许 sidecar 自动重启。
bun run --filter @cadcamfun/desktop dev 打开 http://localhost:1420。没有 VITE_SIDECAR_URL,这使用了内存中的伪造 API。它支持请求的子集,并且不提供持久项目、提供程序会话或本机对话框。通过设置 Vite sidecar URL 和令牌流程变量来连接到实时 sidecar。
桌面包的 tauri:dev 当二进制文件丢失时,脚本会创建一个存根 sidecar。存根支持外壳隔离。更喜欢根 desktop:dev 行使应用服务时的命令。
bun run desktop:dev 第一次运行 build:sidecar,它编译边车并阶段迁移(管道步骤 compile 和 resources)。然后开始 tauri dev 在桌面包中。
验证第一个会话
- 等待应用程序离开启动屏幕并确认其已连接到预期的 API。
- 创建或打开项目并输入 CAD 或 CAM。
- 保存工作并通过项目/资源 UI 重新打开它以验证持久性。
- 如果使用助手,请在开始对话之前在桌面设置中配置支持的模型提供程序。
- 如果使用 iOS 配套,请启用其网关并在桌面上创建设备配对。
测试可见路径并不能验证加工安全性。在将 NC 输出传输到机器之前,检查库存、刀具、机器限制、后期输出和实际操作的验证结果。
bun run --cwd packages/web start
bun run --cwd packages/web check
bun run --cwd packages/web build 网络 start 命令运行 Astro。 Use its printed local address.网络 dev 脚本另外启动Studio API,它可以打开选定的本地数据库;在使用 Studio 而不是单独使用静态文档时使用它。
下一个命令
| 目标 | 命令 |
|---|---|
| 仅编译 sidecar 并进行迁移 | bun run build:sidecar |
| 无需安装程序即可构建前端 | bun run build:desktop |
| 审查本机构建计划 | bun scripts/build.ts --dry-run |
| 重新生成 API 客户端 | bun run generate |
| 检查生成的客户端 | bun run generate:check |
| 运行同伴传输测试 | bun run --cwd apps/mobile test |
无需模型即可验证真实的 API
启动本地开发指南中描述的手动 sidecar,或使用您控制的开发流程的端点/令牌。以下配方创建一个一次性项目并列出它。它需要卷曲;可选的标识符提取使用 Bun。将示例端口和令牌替换为隔离 sidecar 的端口和令牌。
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token
curl --fail-with-body "$CADCAM_URL/api/health"
curl --fail-with-body -X POST "$CADCAM_URL/api/projects" -H "Authorization: Bearer $CADCAM_TOKEN" -H 'Content-Type: application/json' -d '{"name":"Documentation smoke","description":"Disposable local check","isPublic":false}' -o /tmp/cadcamfun-project-smoke.json
curl --fail-with-body "$CADCAM_URL/api/projects" -H "Authorization: Bearer $CADCAM_TOKEN"
CADCAM_PROJECT_ID=$(bun --no-env-file -e 'const row = await Bun.file("/tmp/cadcamfun-project-smoke.json").json(); console.write(row.id)')
curl --fail-with-body "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID" -H "Authorization: Bearer $CADCAM_TOKEN" Health 返回一个状态/时间戳对象。项目创建返回 HTTP 201 和项目行及其标识符。列表返回具有所有者/组织关系和计数的项目数组;按标识符读取会返回一个此类相关项目。该示例不调用模型或生成机器输出。
彻底关闭手动 sidecar,使用相同的数据目录重新启动它,更新临时 URL,然后再次列出项目以检查持久性。新的发布可能会选择不同的端口。如果该项目不存在,请首先比较数据目录、客户端端点和授权上下文。
对于这个一次性项目来说,清理是可选的且具有破坏性:发送 DELETE /api/projects/<id> 仅在确认返回的标识符后。创建/列表/读取练习应用程序持久性,无需清理即可成功。
解释首次运行失败
| 失败 | 可能的边界 | 下一步行动 |
|---|---|---|
| 依赖安装无法解析本地包 | 工作区安装 | 使用声明的 Bun 版本和锁定文件从存储库根运行。 |
| 本机链接或 WebKit 错误 | 金牛座先决条件 | 安装匹配 CI 目标使用的工具链/平台库。 |
| 没有准备好的事件 | Sidecar 配置、迁移或启动 | 检查 stderr 和结构化错误事件。保持标准输入打开。 |
| 运行状况正常,项目调用返回 401 | 授权 | 健康是公共的;受保护的 API 调用仍然需要当前进程令牌。 |
| 创建退货 400 | 请求验证/业务验证 | 使用非空名称发送 JSON 并检查返回的消息。 |
| 使用组织数据创建退货 403 | 组织成员资格 | 使用可访问的组织或省略组织字段进行本地检查。 |
| 本地同伴说固定不可用 | 缺少本地 Expo 模块 | 使用自定义 iOS 版本,而不是 Expo Go。 |
保持第一次验证较小:健康状况、一个项目、一个持久的绘图/程序,然后是可选的集成。成功的基础应用程序启动不会自动配置 Stripe、AI 提供程序、远程 GitHub 存储库或移动路由。
需求详情
| 工具 | 版本 | 需要用于 |
|---|---|---|
| Bun | 1.4.4(存储库的 packageManager) | 一切:安装、测试、sidecar、脚本 |
| Rust 工具链 + Tauri 先决条件 | 稳定的; Linux 上的平台 webview 库 | 桌面外壳(desktop:dev,构建) |
| SQLite CLI | 任何 | 可选:只读数据库检查 |
| Xcode | — | 仅适用于 iOS 伴侣 |
你的第一个小时,一步一步
git clone https://github.com/nikomatt69/cadcamfun.git
cd cadcamfun
bun install --frozen-lockfile
bun run typecheck # all workspaces
bun run test # bun test packages apps scripts
bun run desktop:dev # builds the sidecar + migrations, then tauri dev - 当窗口打开时,Sidecar 状态会在几秒钟内变为就绪状态;首次启动时会迁移新的数据目录。
- 创建一个项目,添加一个绘图,绘制一个矩形并拉伸它。
- 打开 CAM,选取实体并生成。导出 NC 之前检查发布级别和声明。
- 打开历史记录面板并提交:该项目现在有了第一个版本。
无需型号密钥
上述一切都可以在没有人工智能提供商的情况下运行。稍后在助手设置中添加一个键。