Overview
Built with Tauri v2, the desktop app provides a native application experience with automatic updates, system tray integration, and native file system access.Technology Stack
- Tauri v2
- React 19 + Vite
- Rust backend
- Convex for data sync
Platforms
- macOS (13.0+)
- Windows
- Linux
- Native M1/M2 support
Key Features
Native Desktop Experience
System Integration
System Integration
- Native window management
- System tray icon
- Custom title bar
- Native file dialogs
- Deep linking support
Performance
Performance
- Lightweight binary (~10MB)
- Fast startup time
- Low memory footprint
- Rust-powered backend for maximum performance
Security
Security
- Tauri’s capability system for permission control
- Sandboxed environment
- Secure IPC between frontend and Rust backend
- Content Security Policy (CSP) enforcement
Automatic Updates
Built-in updater using Tauri’s plugin system:Update Flow
- App checks for updates on startup
- Downloads update in background
- Prompts user to install
- Seamless installation and restart
Cross-Platform Support
Single codebase for all desktop platforms:- macOS: Apple Silicon (aarch64) and Intel (x86_64)
- Windows: 64-bit
- Linux: Multiple distributions
Installation & Setup
Prerequisites
- macOS
- Windows
- Linux
- Xcode Command Line Tools
- Rust (via rustup)
- Node.js 18+ or Bun
Development
Platform-Specific Features
macOS
App Bundle
Native .app bundle with proper code signing and notarization support
Menu Bar
Native macOS menu bar with keyboard shortcuts
Info.plist
Custom Info.plist configuration for permissions and app metadata
Universal Binary
Support for both Intel and Apple Silicon
Windows
MSI Installer
Windows Installer (.msi) with custom branding
Auto-start
Optional startup on Windows boot
System Tray
Minimize to system tray functionality
UAC
Proper User Account Control handling
Linux
AppImage
Portable AppImage distribution
.deb Package
Debian/Ubuntu package support
Desktop Entry
XDG desktop integration
Themes
Respects system dark/light mode
Architecture
Project Structure
Tauri Configuration
tauri.conf.json
Tauri Plugins
The desktop app uses several Tauri plugins:@tauri-apps/plugin-store
@tauri-apps/plugin-store
Persistent key-value storage
@tauri-apps/plugin-updater
@tauri-apps/plugin-updater
Automatic app updates
@tauri-apps/plugin-opener
@tauri-apps/plugin-opener
Open URLs and files in default system apps
@tauri-apps/plugin-process
@tauri-apps/plugin-process
Process management and exit handling
Frontend Stack
React + Vite
The frontend uses modern React with Vite for fast development:vite.config.ts
UI Components
- Tailwind CSS 4: Utility-first styling
- shadcn/ui: Reusable component library (via @teak/ui)
- Ant Design: Complex components like date pickers
- React Router: Client-side routing
- next-themes: Dark mode support
State Management
Authentication Flow
The desktop app uses a special OAuth flow:Building & Distribution
Code Signing
- macOS
- Windows
Release Process
Update Server
The updater requires a server that provides:- Latest version information
- Download URLs for platform-specific binaries
- Signature verification
update-manifest.json
Performance
Bundle Size
The desktop app is extremely lightweight:- macOS: ~10MB .app bundle
- Windows: ~8MB .exe
- Linux: ~12MB AppImage
Memory Usage
Typical memory footprint:- Idle: ~50MB
- Active use: ~100-150MB
- Large card library: ~200MB
Startup Time
Cold start performance:- macOS: <1 second
- Windows: <1.5 seconds
- Linux: <1.5 seconds
Security
Capability System
Tauri v2 uses a capability-based permission system:capabilities/default.json
Content Security Policy
Troubleshooting
Build Failures
Build Failures
- Ensure all system dependencies are installed
- Check Rust toolchain is up to date:
rustup update - Clear cargo cache:
cargo clean - Check Tauri CLI version:
cargo install tauri-cli --version 2
Dev Server Issues
Dev Server Issues
- Ensure port 1420 is available
- Check Vite configuration
- Verify frontend dependencies are installed
Update Issues
Update Issues
- Verify update server is accessible
- Check signature verification
- Ensure app has network permissions
Learn More
Backend
Learn about the Convex backend
Architecture
Understand the system architecture
Tauri
Official Tauri documentation
Tauri v2
Tauri v2 migration guide