Skip to content
All projects

DocScanner Pro

A Flutter document scanner that keeps image processing off the UI thread.

Role
Designer and developer
Year
2026

Source is in a private repository.

What it is

Scan pages with a guided camera, crop and straighten them, apply document filters and export to PDF, PNG or JPEG through the phone's native share and save sheets. It runs on iOS and Android.

The problem

Cropping, rotating and filtering full-resolution photos on a phone stalls the interface if it runs on the UI thread, and scanned documents are sensitive files that must not leak.

Architecture

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

DocScanner Pro architectureheavy workpreviewsCamera and batch captureCamera and batchcaptureFlutter UIFlutter UIBackground isolates: crop, rotate, filters, thumbnailsBackground isolatesCrop and edge adjuster: 8 handles, 10-step undoCrop and edgeadjusterSandboxed storage: canonical-path checksSandboxed storageNative share and save: PDF, PNG, JPEG, AirPrintNative share andsave
Solid line: synchronous callDashed line: through a queueDashed box: external or infrastructure
  • Camera and batch capture client
  • Flutter UI service
  • Background isolates worker, crop, rotate, filters, thumbnails
  • Crop and edge adjuster service, 8 handles, 10-step undo
  • Sandboxed storage data, canonical-path checks
  • Native share and save external, PDF, PNG, JPEG, AirPrint

Key decisions

  • Nothing heavy on the UI thread

    Cropping, rotation, filtering, thumbnails and format conversion run on background isolates. Filter previews are computed in parallel on 150 px thumbnails.

  • Treat scans as sensitive

    Every read, write and share is checked against a canonical directory, Android backups are disabled, and release builds are shrunk and obfuscated.

Highlights

  • Batch capture assembles multi-page PDFs as you scan.
  • Five filters, including a high-contrast black and white mode tuned for text.
  • Exports to Files, iCloud Drive, Google Drive, AirDrop or straight to a printer.

Stack

FlutterDartDart isolatesiOSAndroidR8 / ProGuard
DocScanner Pro home screen with scan counts and recent scans
DocScanner Pro home screen with scan counts and recent scans
Export and share sheet offering PDF, PNG, JPEG, share and print
Export and share sheet offering PDF, PNG, JPEG, share and print
Export dialog where the file name is editable but the extension is locked
Export dialog where the file name is editable but the extension is locked
Document library with search and page counts
Document library with search and page counts