Prerequisites
Node.js
Version 18 or later
pnpm
Version 8 or later
C++ toolchain
Platform-specific (see below)
macOS
macOS 11+ (Big Sur) is required for development. The native addon targets
MACOSX_DEPLOYMENT_TARGET=10.15.Linux
Windows
Install Visual Studio Build Tools
Download Visual Studio Build Tools and install the “Desktop development with C++” workload.
Install Node.js
Download from nodejs.org or use a version manager like nvm-windows.
Clone and install
pnpm uses workspaces to manage the monorepo structure (
apps/desktop and packages/ui). All dependencies are hoisted to the root node_modules.Build the native addon
The native addon must be built before running or packaging the app:Build configuration
The addon build is configured viabinding.gyp:
Troubleshooting addon build
Error: 'node-gyp' is not recognized
Error: 'node-gyp' is not recognized
Ensure you’re using
npx node-gyp instead of relying on npm scripts:Error: Python not found
Error: Python not found
node-gyp requires Python 3.6+:
Error: MSBuild not found (Windows)
Error: MSBuild not found (Windows)
Install Visual Studio Build Tools with the “Desktop development with C++” workload. If already installed, ensure MSBuild is in PATH:
Development builds
Run in development mode
- electron-vite dev server for hot-reload
- Main process with source maps
- Renderer process with React Fast Refresh
- Worker process compiled on-demand
The dev server runs at
http://localhost:5173 for the renderer. The main process and workers are rebuilt automatically on file changes.Preview production build
Production builds
Build configuration
Electron build is configured viaelectron.vite.config.ts:
Package for distribution
apps/desktop/out/make/
Packaging for distribution requires additional setup for code signing and notarization. See the Configuration guide for platform-specific requirements.
Platform-specific packaging
macOS (DMG)
Linux (AppImage/deb)
Windows (NSIS/MSI)
Windows builds should be code-signed with an EV certificate for SmartScreen reputation. See electron-builder docs for signing configuration.
Turbo caching
Turborepo caches build outputs to speed up subsequent builds:.turbo/cache/
CI/CD
The project includes a GitHub Actions workflow for automated builds:Build scripts reference
| Script | Description |
|---|---|
pnpm install | Install all dependencies (root + workspaces) |
pnpm turbo dev | Start development mode with hot-reload |
pnpm turbo build | Build all packages and apps for production |
pnpm turbo start | Run the built app (no dev server) |
pnpm turbo lint | Lint all workspaces |
pnpm turbo test | Run all tests |
pnpm turbo typecheck | Type-check all workspaces |
cd apps/desktop && pnpm run make | Package distributable |
cd apps/desktop && pnpm run publish | Build + notarize (macOS) |
Next steps
Configuration
Environment variables, core paths, and runtime configuration
Testing
Run tests, write new tests, and debug test failures