
- Kotlin
- Jetpack Compose
- ML Kit
- Room
- Play Billing
TapScan
Android PDF scanner with on-device OCR and full-text search — no watermark, no scan limits, no account required.
About this project
Built a native Android app in Kotlin + Jetpack Compose around one loop: scan → save → share. Capture uses the ML Kit Document Scanner API for auto edge detection and multi-page sessions. OCR runs on-device with ML Kit Text Recognition and feeds a Room-backed search index, so the library is searchable by filename and by scanned text. PDF pages are generated locally and handed straight to the Android share sheet, with no upload step anywhere. The free tier has zero watermarks and no scan caps; Pro is a single non-consumable Play Billing purchase that unlocks batch scanning, compression, password protection, and format conversion — none of it required for the core loop. Ads are limited to one banner on the library screen, never inside the scan flow.
Published on Google Play. Scan → save → share has no watermarking, no daily cap, and no sign-in; OCR text is searchable from the library, and the only ad in the app sits outside the capture flow.
More Work
Halal MUI
Android app to check BPJPH halal certificates & BPOM registrations in one search box — by certificate number, registration number, or product name.
EngineeringHarga Pangan
Monitor Indonesian food prices with a trading-view interface — commodities as tickers, color-coded daily changes, historical charts, top gainers/losers, and watchlist. Data from PIHPS Bank Indonesia.