← Selected work

LocalScan / Released · iOS + macOS

Clean scans.
Entirely on your device.

A native document scanner with shared scan logic and explicit capture, adjustment, and export workflows.

SwiftUI · Vision · Local-firstReleased · iOS + macOS
LocalScan document adjustment interface on iPhone

Capture. Adjust. Export.

LocalScan turns captured or imported document photos into scans on iPhone, iPad, and Mac. The workflow keeps the important decisions visible: load the document, detect its boundary, adjust the corners when needed, inspect the preview, and export explicitly.

Automatic detection is useful, but a person still needs a way to correct it. Manual corner adjustment and curved-side controls provide that escape hatch instead of assuming every photo is a perfectly flat page.

Illustrative document photo with perspective and shadow
Photo / adjustment preview
The same representative document shown straight and bright
Clean document

Illustrative workflow using a fictional document. This preview does not process an uploaded image or reproduce the app’s scan output.

A shared core, native surfaces.

The implementation separates scan geometry, rendering/export, provider policy, and OCR contracts into LocalScanCore. SwiftUI interfaces adapt the workflow to each platform: capture and imports on mobile, and file picking or drag and drop on Mac.

The shared core keeps the document rules consistent. The interface remains native, with platform-appropriate toolbars and actions rather than forcing the same screen onto every device. Vision supports detection and OCR; explicit copy, share, and export actions let people decide where the result goes.

Privacy is an architectural choice.

The scan workflow has no cloud processing, remote storage, accounts, analytics, or automatic network requests. Processing remains on-device. The distinction between app-runtime behaviour and public support/distribution pages is documented so the privacy claim has a clear boundary.

A local scanner should not require someone to understand a sync model before scanning a page. Keeping the processing local simplifies that decision, while explicit export preserves control over the result.

Released, with a verifiable destination.

LocalScan has a public App Store listing for iOS and macOS. The repository documents platform-specific build and validation gates, shared-core checks, and release metadata. This portfolio links directly to the listing rather than describing a private prototype as a shipped app.