<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fan ei</title>
    <description>The latest articles on DEV Community by fan ei (@fan_ei_bc365d7c81ba45eed9).</description>
    <link>https://dev.to/fan_ei_bc365d7c81ba45eed9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3871209%2Fdb2a192f-84f0-46a5-9725-f8ee0d79f63d.jpg</url>
      <title>DEV Community: fan ei</title>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fan_ei_bc365d7c81ba45eed9"/>
    <language>en</language>
    <item>
      <title>Show DEV: SmartScan — Open Source Android Document Scanner</title>
      <dc:creator>fan ei</dc:creator>
      <pubDate>Wed, 15 Apr 2026 02:23:25 +0000</pubDate>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9/show-dev-smartscan-open-source-android-document-scanner-mn7</link>
      <guid>https://dev.to/fan_ei_bc365d7c81ba45eed9/show-dev-smartscan-open-source-android-document-scanner-mn7</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;SmartScan is a fully open source document scanner for Android built with Kotlin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Document scanning with edge detection&lt;/li&gt;
&lt;li&gt;PDF generation&lt;/li&gt;
&lt;li&gt;QR Code scanning and generation&lt;/li&gt;
&lt;li&gt;OCR text recognition (powered by ML Kit)&lt;/li&gt;
&lt;li&gt;Document signing and annotation&lt;/li&gt;
&lt;li&gt;Completely offline capable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; Kotlin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Min SDK:&lt;/strong&gt; Android 7.0 (API 24)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera:&lt;/strong&gt; CameraX&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Processing:&lt;/strong&gt; OpenCV&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR:&lt;/strong&gt; Google ML Kit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF:&lt;/strong&gt; iText 7&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture:&lt;/strong&gt; MVVM + Clean Architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Open Source
&lt;/h2&gt;

&lt;p&gt;There are plenty of scanner apps on the Play Store, but most of them are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ad-heavy with intrusive pop-ups&lt;/li&gt;
&lt;li&gt;Watermark everything behind a paywall&lt;/li&gt;
&lt;li&gt;Bloated with unnecessary features&lt;/li&gt;
&lt;li&gt;Not transparent about data handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to build something different — a scanner app that respects users.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/fanei/scan" rel="noopener noreferrer"&gt;https://github.com/fanei/scan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contributions, issues, and PRs are welcome!&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.smartscan.smartscan" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.smartscan.smartscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100% free. No ads. No watermarks. Open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stats So Far
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Users in 8+ countries (Nigeria, Ethiopia, Indonesia, Kenya, Philippines, and more)&lt;/li&gt;
&lt;li&gt;0% crash rate&lt;/li&gt;
&lt;li&gt;75% install conversion rate&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensourceandroidkotlin</category>
    </item>
    <item>
      <title>Naija, Stop Paying for Document Scanners — Here is a Free Alternative</title>
      <dc:creator>fan ei</dc:creator>
      <pubDate>Wed, 15 Apr 2026 02:22:35 +0000</pubDate>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9/naija-stop-paying-for-document-scanners-here-is-a-free-alternative-36cp</link>
      <guid>https://dev.to/fan_ei_bc365d7c81ba45eed9/naija-stop-paying-for-document-scanners-here-is-a-free-alternative-36cp</guid>
      <description>&lt;h2&gt;
  
  
  How Much Are You Spending on Scanning?
&lt;/h2&gt;

&lt;p&gt;Every semester, Nigerian students spend thousands of Naira at cyber cafés just to scan documents — JAMB forms, admission letters, course registration, certificates.&lt;/p&gt;

&lt;p&gt;And the scanner apps on Google Play? Most of them are frustrating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full of pop-up ads every 2 seconds&lt;/li&gt;
&lt;li&gt;Watermarks covering your important documents&lt;/li&gt;
&lt;li&gt;"Premium" features locked behind a paywall&lt;/li&gt;
&lt;li&gt;Heavy apps that drain your data and battery&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  I Built Something Better
&lt;/h2&gt;

&lt;p&gt;SmartScan is a free Android app that does one thing well: scan your documents into clean PDFs. No catch.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scan to PDF&lt;/strong&gt; — Point your camera, get a professional PDF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QR Code Scanner&lt;/strong&gt; — Scan payment codes, class schedules, event tickets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR&lt;/strong&gt; — Turn printed text into editable digital text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sign Documents&lt;/strong&gt; — Add your signature on any PDF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works Offline&lt;/strong&gt; — No data needed. Scan anywhere, anytime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small Size&lt;/strong&gt; — Less than 15MB. Won't eat your storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why It Is Different
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Zero ads. Not "minimal ads" — literally zero&lt;/li&gt;
&lt;li&gt;No watermarks. Your documents stay clean&lt;/li&gt;
&lt;li&gt;No premium tier. Everything is free&lt;/li&gt;
&lt;li&gt;Works on low-end Android phones (Android 7.0+)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Built for Nigerian Students
&lt;/h3&gt;

&lt;p&gt;I know data is expensive in Nigeria. That is why SmartScan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works completely offline&lt;/li&gt;
&lt;li&gt;Has a small APK size&lt;/li&gt;
&lt;li&gt;Does not run background processes that drain your battery&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Download Now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Google Play:&lt;/strong&gt; &lt;a href="https://play.google.com/store/apps/details?id=com.smartscan.smartscan" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.smartscan.smartscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is free. It will always be free. No tricks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share With Your Classmates
&lt;/h2&gt;

&lt;p&gt;If this helps you, share it with someone who needs it. Every Nigerian student deserves free tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/fanei/scan" rel="noopener noreferrer"&gt;https://github.com/fanei/scan&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nigeriaandroidstudents</category>
    </item>
    <item>
      <title>How I Built an Open Source Android Document Scanner with Kotlin</title>
      <dc:creator>fan ei</dc:creator>
      <pubDate>Tue, 14 Apr 2026 11:29:00 +0000</pubDate>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9/how-i-built-an-open-source-android-document-scanner-with-kotlin-3fa3</link>
      <guid>https://dev.to/fan_ei_bc365d7c81ba45eed9/how-i-built-an-open-source-android-document-scanner-with-kotlin-3fa3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Building a document scanner app seems complex — edge detection, perspective correction, PDF generation, OCR. But with modern Android development tools, it's more approachable than you think.&lt;/p&gt;

&lt;p&gt;Here's how I built SmartScan, a fully open source document scanner app using Kotlin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;The app follows clean architecture principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Presentation Layer&lt;/strong&gt; — MVVM with ViewModels and Compose UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain Layer&lt;/strong&gt; — Use cases for scan, OCR, and export operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Layer&lt;/strong&gt; — Room database for document storage, CameraX for capture&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Technical Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CameraX for Document Capture
&lt;/h3&gt;

&lt;p&gt;CameraX makes camera integration straightforward. For a scanner app, the key is handling the preview and capture lifecycle correctly.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenCV for Edge Detection
&lt;/h3&gt;

&lt;p&gt;Edge detection is the core of any scanner app. I used OpenCV's Canny edge detection combined with contour finding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;gray&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Mat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nc"&gt;Imgproc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cvtColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;gray&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Imgproc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;COLOR_RGBA2GRAY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nc"&gt;Imgproc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Canny&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gray&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edges&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;50.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;150.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  PDF Generation with iText
&lt;/h3&gt;

&lt;p&gt;For PDF creation, iText provides a robust API. The challenge was keeping the library size reasonable — I used iText 7 core module only.&lt;/p&gt;

&lt;h3&gt;
  
  
  OCR with ML Kit
&lt;/h3&gt;

&lt;p&gt;Google's ML Kit makes on-device OCR simple and accurate. It works offline, which is crucial for users in areas with limited connectivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance on low-end devices&lt;/strong&gt; — Had to optimize image processing to avoid OOM errors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera compatibility&lt;/strong&gt; — Different Android OEMs implement camera APIs differently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APK size&lt;/strong&gt; — Kept it under 15MB by using modular dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline OCR&lt;/strong&gt; — ML Kit handles this well but language packs add size&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with MVP features (scan + save)&lt;/li&gt;
&lt;li&gt;Optimize for the weakest devices your users have&lt;/li&gt;
&lt;li&gt;Test on real devices, not just emulators&lt;/li&gt;
&lt;li&gt;Offline-first is not optional for emerging markets&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;The full source code is available: &lt;a href="https://github.com/fanei/scan" rel="noopener noreferrer"&gt;https://github.com/fanei/scan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contributions, issues, and suggestions are welcome!&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the App
&lt;/h2&gt;

&lt;p&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.smartscan.smartscan" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.smartscan.smartscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100% free, no ads, no watermarks. Built for everyone.&lt;/p&gt;

</description>
      <category>kotlinandroidopencv</category>
    </item>
    <item>
      <title>Why Every Student in Africa Needs a Free Document Scanner App</title>
      <dc:creator>fan ei</dc:creator>
      <pubDate>Tue, 14 Apr 2026 11:28:16 +0000</pubDate>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9/why-every-student-in-africa-needs-a-free-document-scanner-app-d30</link>
      <guid>https://dev.to/fan_ei_bc365d7c81ba45eed9/why-every-student-in-africa-needs-a-free-document-scanner-app-d30</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;As a student in Nigeria, Ghana, Kenya, or anywhere in Africa, you deal with paper every day. Lecture notes, assignment sheets, ID cards, certificates. And what do you do when you need a digital copy?&lt;/p&gt;

&lt;p&gt;You either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay someone at a cyber café&lt;/li&gt;
&lt;li&gt;Use a scanner app that covers your document with watermarks&lt;/li&gt;
&lt;li&gt;Suffer through endless ads just to save one PDF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;I built SmartScan — a completely free document scanner for Android.&lt;/p&gt;

&lt;p&gt;No ads. No watermarks. No "premium" tricks. Just scan, save, share.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features Students Actually Need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scan to PDF&lt;/strong&gt; — Point your camera, get a clean PDF&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QR Code Scanner&lt;/strong&gt; — Scan class schedules, payment codes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR Text Recognition&lt;/strong&gt; — Turn handwritten notes into editable text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works Offline&lt;/strong&gt; — No internet? No problem. Scan anywhere&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small App Size&lt;/strong&gt; — Only a few MB, won't eat your storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sign Documents&lt;/strong&gt; — Add your signature on any document&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Free?
&lt;/h2&gt;

&lt;p&gt;Because students shouldn't have to pay to digitize their own notes. Education tools should be accessible to everyone, regardless of their budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for Your Phone
&lt;/h2&gt;

&lt;p&gt;SmartScan is optimized for the Android phones most students actually use — not just the latest flagship. It works on Android 7.0 and up with minimal resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Details
&lt;/h2&gt;

&lt;p&gt;Built with Kotlin for Android. Open source. Contributions welcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download
&lt;/h2&gt;

&lt;p&gt;Available on Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.smartscan.smartscan" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.smartscan.smartscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub (star it if you like it!): &lt;a href="https://github.com/fanei/scan" rel="noopener noreferrer"&gt;https://github.com/fanei/scan&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Spread the Word
&lt;/h2&gt;

&lt;p&gt;If you found this useful, share it with a classmate. Every student deserves free tools.&lt;/p&gt;

</description>
      <category>studentsafricaandroid</category>
    </item>
    <item>
      <title>I Built a 100% Free Document Scanner App — No Ads, No Watermarks</title>
      <dc:creator>fan ei</dc:creator>
      <pubDate>Fri, 10 Apr 2026 07:41:29 +0000</pubDate>
      <link>https://dev.to/fan_ei_bc365d7c81ba45eed9/i-built-a-100-free-document-scanner-app-no-ads-no-watermarks-8ke</link>
      <guid>https://dev.to/fan_ei_bc365d7c81ba45eed9/i-built-a-100-free-document-scanner-app-no-ads-no-watermarks-8ke</guid>
      <description>&lt;h2&gt;
  
  
  Why I Built SmartScan
&lt;/h2&gt;

&lt;p&gt;Every document scanner app I've tried is the same: ads everywhere, watermarks on every page, and a paywall hiding basic features. So I built my own.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;SmartScan is a completely free Android app that lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scan documents to PDF&lt;/strong&gt; — Fast edge detection, multi-page support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QR Code Generator &amp;amp; Scanner&lt;/strong&gt; — Create and scan QR codes instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR Text Recognition&lt;/strong&gt; — Extract text from images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit &amp;amp; Sign Documents&lt;/strong&gt; — Add signatures, annotations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share anywhere&lt;/strong&gt; — Export as PDF or image&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;100% free&lt;/li&gt;
&lt;li&gt;Zero ads&lt;/li&gt;
&lt;li&gt;No watermarks&lt;/li&gt;
&lt;li&gt;No account required&lt;/li&gt;
&lt;li&gt;Open source (Kotlin/Android)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;Built natively with Kotlin for Android. Source code available on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Google Play:&lt;/strong&gt; &lt;a href="https://play.google.com/store/apps/details?id=com.smartscan.smartscan" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.smartscan.smartscan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/fanei/scan" rel="noopener noreferrer"&gt;https://github.com/fanei/scan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback! What features would you want in a scanner app?&lt;/p&gt;

</description>
      <category>androidopensourceproductivity</category>
    </item>
  </channel>
</rss>
