DEV Community

Cover image for Flutter Dev + AppSec Engineer Built a KRA PIN Checker That Stores ZERO User Data (And Still Makes Money with M-Pesa Tokens) πŸ›‘οΈπŸ‡°πŸ‡ͺ
SAINT
SAINT

Posted on

Flutter Dev + AppSec Engineer Built a KRA PIN Checker That Stores ZERO User Data (And Still Makes Money with M-Pesa Tokens) πŸ›‘οΈπŸ‡°πŸ‡ͺ

Flutter Dev + AppSec Engineer Confessions: How I Built a Privacy-Obsessed KRA PIN Checker That Even My Paranoid Security Friends Approve Of πŸ›‘οΈπŸ‡°πŸ‡ͺ

Hey devs, DevSecOps ninjas, and fellow security weirdos! πŸ‘‹

I’m a part-time Flutter dev by night and a full-time Application Security Engineer by day. That means I spend 9-5 hunting bugs in other people’s code… and then come home to make sure I don’t become the bug myself. πŸ˜…

Let me tell you about PinSight(checKRA) – the app I built from absolute scratch that lets Kenyans verify any taxpayer PIN by kenyan IDs instantly using M-Pesa tokens.

No login. No data stored. No β€œfree tier” nonsense. Just pure, privacy-first magic.

And yes β€” ONE codebase, ALL platforms:

βœ… Android

βœ… iOS

βœ… macOS

βœ… Windows

βœ… Linux

Because why write the same secure app five times?

Here’s the story from both sides of my brain:

1. The Developer Side (Flutter Joy 🎨)

  • Entire UI in Flutter β†’ single codebase, zero platform-specific nightmares
  • Kenyan-themed design with slide + fade animations (animated_widgets)
  • Single screen flow: dropdown β†’ ID β†’ β€œCheck PIN” β†’ result card in flag colors πŸ‡°πŸ‡ͺ
  • Token balance in app bar, auto-triggers Buy Tokens dialog when zero (feels like magic)
  • flutter_dotenv so I never commit secrets (lesson learned the hard way)

2. The Security Engineer Side (Paranoia = Default Setting πŸ”’)

Most apps treat privacy like a suggestion. Mine treats it like oxygen.

What I deliberately DIDN’T do:

  • ❌ No Firebase Auth
  • ❌ No Google/Sign-in-with-anything
  • ❌ No SharedPreferences / Keychain abuse
  • ❌ No logging of IDs, names, or phone numbers
  • ❌ No analytics with PII (Firebase Analytics events only, anonymized)

What I DID do (AppSec flex):

  • Every query is ephemeral – deleted instantly after response
  • Tokens stored on private Node.js backend (MongoDB Atlas) behind HTTPS
  • Tokens auto-delete when count = 0 (no zombie data)
  • M-Pesa callback IP-whitelisted to Safaricom only
  • Always ACK ResultCode: 0 to M-Pesa (no infinite retries)
  • Signed releases with upload keystores (Android) & Apple Developer certs (iOS/macOS)
  • Secrets in .env – never committed
  • Custom regex validation per taxpayer type

3. The DevSecOps Side (Shift-Left or GTFO)

  • Backend on Render with auto-TLS
  • /health endpoint for uptime monitors
  • MongoDB Atlas IP access list
  • Full CI/CD ready (GitHub Actions workflows in repo)
  • Tested every flow in Daraja sandbox
  • Repo structured so contributors can’t leak secrets

Payment Methods (Kenya + Global)

  • πŸ‡°πŸ‡ͺ M-Pesa STK Push & Buy Goods (instant)
  • 🌍 PayPal coming next week! (for diaspora & international users)

Pricing? Brutally honest:

1 token = 1 verification. Buy exactly what you need.

KES 50 β†’ 1 token
KES 100 β†’ 2 tokens
KES 300 β†’ 6 tokens
KES 600 β†’ 14 tokens (best value)

Pay via M-Pesa β†’ approve β†’ paste SMS code β†’ done.

PayPal flow drops soon β€” same token system, global reach.

Tech Stack

Frontend: Flutter (Dart) – truly cross-platform

Backend: Node.js + Express + MongoDB Atlas

Payments: Safaricom Daraja API + PayPal (incoming)

Hosting: Render (paid HTTPS)

Analytics: Firebase (events only)

Download Links

  • Android: Play Store (live!)
  • iOS: App Store (review passed, live in 24h)
  • macOS / Windows / Linux: Direct download from GitHub Releases
  • APK / IPA / DMG / EXE / AppImage on request – DM β€œAppSec approved” πŸ˜‰

GitHub – All Assets for early access of the app

πŸ”— assets + desktop builds:

https://github.com/HovSaintBrandon/checKRA-supaApp-release

Star it if you hate data leaks. Fork it if you want to help add PayPal! πŸš€

Support: hovsaintbrandon@gmail.com

If you’re a dev who actually cares about security, a DevSecOps warrior tired of fixing messes, or just a Kenyan (or friend of Kenya) sick of shady β€œfree” PIN checkers that sell your data…

…try it. I built it the way I wish EVERY app was built.

Let’s make privacy the default β€” on every platform. πŸ‡°πŸ‡ͺπŸ”’πŸŒ

P.S. Yes, I pentest my own app in my free time. Yes, I’m that guy. 😎

Flutter #Dart #CyberSecurity #AppSec #DevSecOps #KenyaTech #PrivacyFirst #Mpesa #PayPal #CrossPlatform #DesktopApps #NoLoginNoProblem

Top comments (0)