Core Development Scripts
Development Server
- Runs on
http://localhost:5173 - Auto-reloads on file changes
- TypeScript type checking in watch mode
Tauri Development
- Launches desktop app with webview
- Hot reload for frontend code
- Rust compilation on backend changes
- Full access to system APIs
Production Build
- Generates optimized frontend bundle
- Compiles Rust backend
- Creates macOS app bundle (
.app) - Generates distributable installer (
.dmg) - Target:
aarch64-apple-darwin
This script automatically runs
pnpm db:generate before building to ensure migrations are up to date.Test Build
- Runs
pnpm db:generatefirst - Creates production frontend bundle
- Output:
build/directory - Does not create app bundle
Code Quality Scripts
Type Checking
- Validates TypeScript types
- Checks Svelte component types
- Reports type errors
Watch Mode Type Checking
- Continuous type validation
- Auto-checks on file changes
- Useful during active development
Code Formatting
- Formats TypeScript, JavaScript, Svelte files
- Formats JSON, YAML, Markdown files
- Auto-fixes formatting issues
- Writes changes to files
Linting
- Validates Prettier formatting
- Reports formatting violations
- Does not auto-fix (use
formatto fix) - Useful in CI/CD pipelines
Database Scripts
Generate Migrations
- Runs
drizzle-kit generateto create SQL migrations - Runs
pnpm db:migrations:rustto generate Rust bindings - Outputs migrations to
src-tauri/migrations/
- After changing
src/lib/db/schema.ts - Before building for production
- When database schema is out of sync
Generate Rust Migration Bindings
- Reads SQL from
src-tauri/migrations/ - Generates Rust code for embedding migrations
- Used internally by
db:generate
Shell Scripts
Download Apple Container CLI
- Downloads from official Apple source
- Extracts to
src-tauri/binaries/sidecar/ - Required for container management features
- macOS only
Create Container Symlink
Common Workflows
Initial Setup
Daily Development
Schema Changes
Pre-Commit Workflow
Production Build
Troubleshooting
Build Issues
Database Issues
Type Errors
Environment Variables
Tauri Build Signing
For signed production builds, create a.env file:
Signing keys are only required for production builds. Development builds do not require signing.
Script Categories
Core Development
dev- Vite development servertauri dev- Tauri development modetauri:build- Production build
Code Quality
check- Type checkingcheck:watch- Type checking in watch modeformat- Format codelint- Check formatting
Database
db:generate- Generate migrations + Rust bindingsdb:migrations:rust- Generate Rust bindings only
Shell Scripts
script:download-apple-container- Download Apple CLIscript:container-symlink- Create container symlink
Tips
Additional Resources
- Project Structure - Understand the codebase
- Contributing Guide - Coding standards and workflow
- Development Setup - Environment setup instructions
Script Reference
| Script | Command | Description |
|---|---|---|
dev | vite dev | Start Vite development server |
build | pnpm db:generate && vite build | Build frontend for testing |
preview | vite preview | Preview production build |
tauri | tauri | Tauri CLI commands |
tauri:build | ./scripts/tauri-build.sh | Production build for Apple Silicon |
check | svelte-kit sync && svelte-check | Run type checking |
check:watch | svelte-kit sync && svelte-check --watch | Type checking in watch mode |
format | prettier --write . | Format code with Prettier |
lint | prettier --check . | Check code formatting |
db:generate | drizzle-kit generate && pnpm db:migrations:rust | Generate migrations + Rust bindings |
db:migrations:rust | tsx scripts/generate-migrations.ts | Generate Rust migration bindings |
script:download-apple-container | ./scripts/download-apple-container-cli.sh | Download Apple Container CLI |
script:container-symlink | ./scripts/symlink.sh | Create container symlink |