Development

Prerequisites

  • mise — tool version manager
  • Git

mise will install the correct versions of Go, Node, and other tools automatically.

Setup

git clone https://github.com/yuler/airvoice.git
cd airvoice
mise trust
mise install

Project Structure

airvoice/
├── cli/          # Go CLI — WebSocket server + keystroke injection
├── android/      # Android Kotlin/Compose app
├── ios/          # iOS SwiftUI app
├── www/          # Documentation site (Astro)
├── scripts/      # Build and dev scripts
├── mise.toml     # Task runner + tool versions
└── go.mod

Common Tasks

TaskCommand
Build CLImise run cli:build
Run servermise run cli:dev
Run testsmise run cli:test
Build Android (debug APK)mise run android:build
Install Android (USB)mise run android:install
Build iOS (simulator)mise run ios:dev
Build iOS (device)mise run ios:build
Docs dev servermise run www:dev
Build docsmise run www:build

Android Development

Requires JDK (Android Studio JBR works). Build a debug APK:

mise run android:build

The APK is at android/app/build/outputs/apk/debug/app-debug.apk. Release builds are published on GitHub Releases as airvoice-android-*.apk.

iOS Development

Open the project in Xcode:

open ios/Airvoice.xcodeproj

The project uses XcodeGen to generate project.yml. If you modify project settings, edit ios/project.yml and regenerate:

xcodegen generate

Signing

For device builds, create your signing config:

cp ios/Signing.xcconfig.example ios/Signing.xcconfig

Edit ios/Signing.xcconfig and set DEVELOPMENT_TEAM to your Apple Team ID (find it in Xcode → Settings → Accounts).