Skip to content
Asad Muqeem
Internal testing

MintScan

Small codes. Big possibilities.

Role
Product, native Android development, design, website and release preparation.
Platform
Android 7.0+
Timeline
2026
Status
Internal testing
MintScan brand illustration with its mint QR and barcode icon and tagline: Small codes. Big possibilities.

Brand illustration, not an app screenshot. MintScan is in internal Android testing; its public website and guides are available.

Overview

A native Android QR and barcode scanner built with Kotlin and XML Views. Camera and photo decoding run on-device, supported codes can be created and shared, and a local library keeps saved results. Currently in internal Android testing.

Problem

Scanning needs a short path from camera to useful action, without unstable layout changes. MintScan keeps the camera controls inside a stable preview and separates basic scanning from advanced batch, organisation and export tools.

What I built

  • Free camera and photo QR/barcode scanning, including choosing between multiple codes in an image
  • All mode by default, with optional QR-only or supported linear barcode mode; torch, focus and zoom
  • Nine QR creation templates and Code 128, EAN-13, EAN-8 and UPC-A barcode creation
  • Standard PNG sharing, optional local history, favourites and search in Free
  • Pro batch scanning up to 500 unique content/format combinations, collections, notes, tags and CSV export
  • Pro predefined QR colours, optional logo, higher resolution, PDF/SVG exports and password-encrypted backup/restore; SVG is unavailable with a logo
  • One-time lifetime Pro through Google Play and RevenueCat; no MintScan account or cloud library sync

Engineering

  1. 01

    A stable native scanner

    CameraX and the bundled ML Kit model decode on-device. XML layouts keep a proportional camera viewport and fixed control positions while result processing runs off the main thread.

  2. 02

    Formats stay distinct

    Multi-code images and Pro batch sessions distinguish raw content together with the format, so the same value in QR and Code 128 remains two results. Batch state is in memory rather than a process-death journal.

  3. 03

    Clear data boundaries

    The library stays local and is not separately encrypted; Pro backups are password-encrypted. Mandatory PostHog usage profiles and Crashlytics diagnostics are disclosed, with raw code contents and selected images excluded from app analytics.

Architecture & technology

  • Kotlin
  • Android XML Views
  • CameraX
  • ML Kit
  • ZXing
  • SQLite
  • Coroutines
  • StateFlow
  • RevenueCat
  • PostHog
  • Firebase Crashlytics