TERMPOD Docs

Getting Started

Set up TermPod for development — prerequisites, installation, and running locally.

Prerequisites

  • macOS 13+ (Ventura or later)
  • Xcode 16+ (for iOS builds)
  • Rust (latest stable via rustup)
  • Node.js 20+ (LTS)
  • pnpm 10+ (npm install -g pnpm)
  • XcodeGen (brew install xcodegen)

Installation

1. Clone and install

git clone https://github.com/termpod/termpod.git
cd termpod
pnpm install

2. Configure environment

cp .env.example .env

Edit .env with your values. See Configuration for details on each variable.

3. Run in development

# Desktop app (dev mode with hot reload)
pnpm dev:desktop

# Relay server (local via Miniflare)
pnpm dev:relay

# Both at once
pnpm dev

4. iOS app

# Generate Xcode config from .env and regenerate .xcodeproj
pnpm ios:generate

# Open in Xcode
open apps/ios/TermPod.xcodeproj

Build and run from Xcode on a simulator or device. The APPLE_TEAM_ID from your .env is used for code signing automatically.

5. Production builds

# Desktop (sources .env for signing identity + notarization)
cd apps/desktop
pnpm build:release

# Relay (deploy to Cloudflare)
cd relay
wrangler secret put JWT_SECRET
wrangler secret put RESEND_API_KEY
wrangler secret put SENTRY_DSN         # optional
wrangler deploy

Build Commands Reference

CommandDescription
pnpm installInstall all dependencies
pnpm devRun desktop + relay together
pnpm dev:desktopTauri dev with hot reload
pnpm dev:relayWrangler local dev (Miniflare)
pnpm buildBuild all packages via Turborepo
pnpm lintTypeScript type checking (all packages)
pnpm testRun all tests (Vitest)
pnpm formatPrettier format (write)
pnpm format:checkPrettier format (check)
pnpm ios:generateGenerate xcconfig + xcodeproj from project.yml
cd apps/desktop/src-tauri && cargo clippyLint Rust code

Code Style

  • TypeScript: Prettier (semi: true, singleQuote: true, trailingComma: all, printWidth: 100). Lint is tsc --noEmit (no ESLint).
  • Rust: Clippy. Edition 2024.
  • Swift: Standard Swift conventions.

On this page