I'm a Senior Mobile & Full-Stack AI Engineer — 7 years of Flutter inside 11 years of mobile — with native iOS, Android and macOS (Swift, SwiftUI, Kotlin). When a package can't do the job, I write the plugin or platform channel myself. I build with AI coding agents and own the architecture and code review. I fix apps that break offline, lose data on sync, fail on real-world edge cases, mishandle payments and subscriptions — and now, AI features that have to respect privacy. I own the work from architecture to App Store and Google Play release, and I've shipped two products of my own solo: Hourwise on the Mac App Store and Repha on Google Play.
| The problem | What I did | Result |
|---|---|---|
| Prayer times were wrong at high latitudes. Users in far-northern cities saw times that didn't match their local schedule; earlier fixes had failed. | Traced it to the sunrise/sunset calculation; built a new offline prayer-time engine | Correct times where they were wrong before, online or offline |
| A receipt scanner too slow for a FinTech reimbursement flow. Users also waited on a spinner during verification. | Native scanner (Swift/Java) behind Flutter; live WebSocket verification progress; offline claims with sync; instant payout | ~0.5 s per code; reimbursement ~5–10 s after the scan |
| Stripe and Apple payments that disagreed in a subscription app. Apple tracks purchases per Apple ID, the app per account. | As team lead, redesigned one account-level entitlement model for both payment systems, with duplicate-purchase detection | After ~2 years in development, approved and live within ~1 month |
| Learning apps that broke without internet. | Led 6 developers; device as the source of truth with a Firebase/SQLite sync layer | Two apps passed 100,000 downloads each |
| Lawyers losing billable hours. | Built Hourwise solo: passive capture, on-device learning from corrections, LEDES exports | Live on the Mac App Store; work history never leaves the Mac |
| Pharmacies ordering stock by phone and paper. A pharmacy in Bangladesh buys from dozens of companies, each through its own medical rep. | Built Repha solo: one list split by company and sent to each rep; 73,000+ medicines searchable offline; photo-to-order OCR; Laravel backend and admin | Live on Google Play; pilot in Rajshahi; runs at zero hosting cost |
| Releases took an hour and waited on one laptop. | Fastlane + GitHub Actions pipeline | ~10–20 minutes per release |
B2B ordering network for pharmacies and pharma companies' medical representatives in Bangladesh · founder and sole engineer · closed source · Google Play · ehsanur.com/repha
Private, AI-assisted timekeeping and billing for solo lawyers and small firms · founder and sole engineer · closed source · Mac App Store
| Package | The problem it removes |
|---|---|
| flutter_crdt_sync_kit | Two devices edit the same data offline and one change silently overwrites the other. CRDT merge, Supabase/REST adapters. |
| local_voice | Voice commands that need the cloud, an API key and a connection. |
| flutter_a11y_lens | Accessibility bugs found late by users or auditors — flags WCAG issues live. |
- Remote from Bangladesh (UTC+6). Full-time or contract; no relocation or visa sponsorship required; works with any time zone with a flexible core overlap.
- Your hours: three years working an overseas team's hours.
- Async by default: a written update every day — shipped, blocked, needed.
- Ownership: architecture → code → tests → CI/CD → store approval → maintenance.

