Skip to content
All projects
In development

MacConnect Pro

Native macOS app for moving files between a Mac and Android or iPhone over USB.

Role
Designer and developer
Year
2026
Illustration of a laptop and a phone connected by a USB cable with files moving between them

What it is

A Swift and SwiftUI app for Apple Silicon that browses and transfers files with ADB-authorised Android devices and paired iPhones and iPads, with no cross-platform runtime.

The problem

Moving files between a Mac and a phone still means flaky third-party tools. Each platform exposes different, limited APIs, and the app has to be honest about what each one allows.

Architecture

Requests flow left to right. Hover a component for its role.

MacConnect Pro architecturesigned releasesSwiftUI app: @Observable view modelsSwiftUI appSparkle 2 updates: EdDSA-verifiedSparkle 2 updatesAppCore: transfer engine, conflictsAppCoreDomain: pure value typesDomainADB provider: binary sync protocolADB providerImageCaptureCore providerImageCaptureCoreproviderAndroid over USBAndroid over USBiPhone or iPad over USBiPhone or iPad overUSB
Solid line: synchronous callDashed line: through a queueDashed box: external or infrastructure
  • SwiftUI app client, @Observable view models
  • Sparkle 2 updates external, EdDSA-verified
  • AppCore service, transfer engine, conflicts
  • Domain service, pure value types
  • ADB provider infrastructure, binary sync protocol
  • ImageCaptureCore provider infrastructure
  • Android over USB external
  • iPhone or iPad over USB external

Key decisions

  • Layers the compiler enforces

    Presentation, AppCore, Domain and Infrastructure are separate Swift packages, so the dependency rule is checked at build time and device-specific errors never leak into the UI.

  • Speak ADB's wire protocol

    Android transfers use the documented binary ADB protocols. The few operations without one run over adb shell behind a validated, quoted and stat-verified boundary.

  • Say no clearly

    Actions a platform does not allow, like writing into iOS app containers, are disabled with a plain explanation instead of failing halfway.

Highlights

  • Swift 6 with strict concurrency checking set to complete.
  • Eight architecture decision records, from concurrency model to signing and licensing.
  • Self-updates through Sparkle 2, verified against an embedded EdDSA key.
  • A 7-day trial stored encrypted in the macOS Keychain with AES-GCM, with its threat model written down.

Stack

Swift 6SwiftUIAppKitSwift Package ManagerImageCaptureCoreADB protocolSparkle 2CryptoKitXcodeGen