Warning
Pre-Alpha Software - This project is under heavy development and not ready for production use. APIs may change without notice. Use at your own risk.
Native iOS app for Vauchi - privacy-focused contact card exchange.
- macOS
- Xcode (download from App Store or developer.apple.com)
- Rust (for building UniFFI bindings)
Run the setup script to configure Xcode:
./scripts/xcode-ide-setup.shThis script will:
- Verify Xcode installation
- Accept the license agreement
- Run first launch setup (installs required components)
- Download iOS platform and simulators
- Install Rust iOS targets for UniFFI builds
If you prefer manual setup or the script fails:
Option A - App Store:
- Open App Store, search "Xcode", install
Option B - Developer Portal (specific versions):
- Go to https://developer.apple.com/download/all/
- Sign in with Apple ID
- Download Xcode .xip file
- Extract and move to
/Applications/Xcode.app
sudo xcodebuild -license acceptxcodebuild -runFirstLaunchxcodebuild -downloadPlatform iOSOr via Xcode: Settings → Components → iOS
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim# Build for simulator
xcodebuild -scheme Vauchi -destination 'platform=iOS Simulator,name=iPhone 16' build
# Run tests
xcodebuild -scheme Vauchi -destination 'platform=iOS Simulator,name=iPhone 16' testopen Vauchi.xcodeprojThen use Cmd+B to build, Cmd+R to run.
vauchi-ios/
├── Vauchi.xcodeproj # Xcode project
├── Package.swift # Swift Package Manager manifest
├── scripts/
│ └── setup-xcode.sh # Development environment setup
├── Vauchi/
│ ├── VauchiApp.swift # App entry point
│ ├── ContentView.swift # Root view
│ ├── Views/
│ │ ├── HomeView.swift
│ │ ├── ContactsView.swift
│ │ ├── ContactDetailView.swift
│ │ ├── ExchangeView.swift
│ │ ├── QRScannerView.swift
│ │ ├── SettingsView.swift
│ │ └── SetupView.swift
│ ├── ViewModels/
│ │ └── VauchiViewModel.swift
│ └── Services/
│ ├── VauchiRepository.swift
│ └── KeychainService.swift
└── VauchiTests/
├── VauchiRepositoryTests.swift
└── VauchiViewModelTests.swift
The iOS app follows MVVM architecture:
- Views: SwiftUI views for UI
- ViewModels: Business logic and state management
- Services: Data access (VauchiRepository wraps UniFFI bindings)
The app uses vauchi-mobile UniFFI bindings to call the Rust vauchi-core library for all cryptographic operations and data storage.
Install iOS simulators:
xcodebuild -downloadPlatform iOSsudo xcodebuild -license acceptxcodebuild -runFirstLaunchrustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim| Repository | Description |
|---|---|
| vauchi/code | Core Rust library (source of UniFFI bindings) |
| vauchi/android | Android app (Kotlin/Compose) |
| vauchi/docs | Documentation |
| vauchi/dev-tools | Build scripts and workspace tools |
TDD: Red→Green→Refactor. Test FIRST or delete code and restart.
Structure: src/ = production code only. tests/ = tests only. Siblings, not nested.
See CLAUDE.md for additional mandatory rules.
- Check vauchi/docs for architecture decisions
- Follow Apple's Human Interface Guidelines
- Write tests for new features
- Core library changes go to vauchi/code
MIT