Skip to content

Mobile & Web Software Engineer · AI Agent & Local-Model Workflows

Asim Abdul Ghafoor

I ship production apps across Flutter, Swift, Laravel and React, and I spend my days with AI agents and local models: opencode, Zed and Codex harnesses on top of MLX-served Qwen models on Apple silicon.

01 — Selected Work

Things that shipped

iOS app — own product

MyWazaif

An Islamic daily-worship companion I built and publish myself: a built-in Quran reader, prayer-time notifications for a user’s location, a Qibla compass and an audio player, all offline-first. Shipped on the App Store.

Key decisions

  • Swift and SwiftUI throughout, Swift Package Manager only — no third-party UI dependencies to chase through app reviews
  • Prayer-time engine computed locally from coordinates so notifications never wait on a network
  • Core Data as the source of truth for recitation progress and reading position
  • Push and local notification scheduling handled as a release concern from day one, not bolted on

Published and maintained on the App Store with a full public product site at mywazaif.com.

SwiftSwiftUICore DataCloudKitApp StoreWebsite

Mobile — client work

Multi-app delivery platform

A food-delivery platform for a Gulf-region client: three Flutter apps — customer, vendor and rider — on one Laravel backend, with real-time order tracking. All three apps are live on Google Play.

Key decisions

  • One shared Dart package for API clients and design tokens across all three apps, so a contract change lands once
  • WebSockets (Laravel Reverb) for rider position and order-state updates instead of polling
  • PostGIS geo-queries server-side for delivery zones and rider assignment
  • Branded-SMS OTP provider integrated behind an interface so it can be swapped without touching app code

Customer, vendor and rider apps all published on Google Play and in active operation.

FlutterDartLaravel 12ReverbPostGIS

Android app — own product

Wird

The Android twin of MyWazaif, written natively in Kotlin: a folder-based recitation audio player with Android Auto and Wear OS companions, background playback and a Qibla compass.

Key decisions

  • Kotlin and Jetpack compose, media3 for background playback with full lock-screen and notification control
  • Android Auto media browser built against car app templates so the surface degrades gracefully
  • Wear OS tile and audio sync shipped from the same repository, same release train
  • Qibla bearing from sensors with explicit calibration UX rather than a silent fallback

Active on Google Play — release 3.6.5 shipped August 2026.

KotlinComposemedia3Wear OSGoogle Play

Web — client work

Enterprise booking platform

A cruise and shore-excursion booking platform for an enterprise travel client: itineraries, hotels, transport, package markups and cancellation protection. I led the frontend migration off a legacy Vue codebase and the database migration alongside it.

Key decisions

  • Strangler-fig migration, route groups moved to React as features touched them — no freeze on the roadmap
  • MySQL → PostgreSQL migration with dual-write verification before cutover
  • AWS security-compliance work folded into the release process rather than treated as a separate project
  • A private-car module and markup engine built as pure domain logic, testable without the UI

Live platform in commercial operation; migration completed without a downtime window.

Laravel 12PHP 8.2ReactPostgreSQLAWS

Flutter utility — own product

ID Copy

A small utility I built and publish: prints CR80 ID cards as 2-up duplex A4 PDFs and captures 1–2 page passports into an automatic 2×2 grid. A deliberately boring, well-scoped tool that does exactly one job.

Key decisions

  • Flutter with platform print services — no print-server dependency; a PDF rendered on-device is the artifact
  • Documented data-retention policy: card images are processed and discarded, never uploaded
  • Fixed physical geometry (CR80 at 85.60 × 53.98 mm) verified against real printers, not assumed

Published on Google Play with a public site at idcopy.appsservices.net.

AI / RAG — client work

Document Q&A assistant

A document question-and-answer assistant for an enterprise client: employees ask questions in plain language and get cited answers grounded in their own policy PDFs and Word documents, deployed across dev, stage and prod.

Key decisions

  • Retrieval-augmented generation with answers grounded in explicit citations and a refusal mode for out-of-scope questions
  • Chunking and indexing validated against a curated question set rather than vibes
  • Conversation history and document indexing separated so retrieval quality can be tuned alone

Deployed with environment-promoted releases and an evaluation set that gates every re-index.

Azure OpenAIAI SearchPythonRAG

Client work is described generically under NDA. More available on request.

02 — About

The unglamorous part comes first

I design and ship production software for phones and browsers — from architecture and code review to the app-store release and everything after it.

My name is Asim Abdul Ghafoor. I work as a technical lead on mobile and web products built for international clients: Flutter and native iOS and Android apps, Laravel backends, React frontends. Most of my work spans the whole lifecycle — technical scoping and proposals, architecture decisions, shipping releases to the App Store, Google Play and Huawei AppGallery, and staying on the call with clients when a decision needs a developer in the room.

These days a large part of my work is agentic: I set up AI coding agents — opencode, omp, pi, Zed, a DeepSeek harness, Paper-Clip, Codex and Claude Code — and run the models behind them locally on Apple silicon. That means MLX and MLX-Serve, oMLX, MTPLX and LM Studio serving Qwen3.8-Flash-Next and Qwen3.8-27B, with my own benchmark scripts comparing engines and quants. I care about which agent loop and which local model actually hold up on real production code, not just demos.

Before the release window there is usually the unglamorous part: version plans, staged rollouts, review rejections, migration scripts written at the quiet end of the day. I document as I go and I would rather make the boring choice that survives three years of growth than the clever one that needs an explanation.

03 — Skills & Expertise

Skills & Expertise

AI Agents

  • opencode
  • omp
  • pi
  • Zed
  • DeepSeek harness
  • Paper-Clip
  • Codex
  • Claude Code

Local Models & Inference

  • Qwen3.8-Flash-Next (MLX)
  • Qwen3.8-27B
  • Sushi (MLX)
  • MLX-Serve
  • oMLX
  • MTPLX
  • LM Studio

Mobile

  • Flutter
  • Dart
  • Swift
  • SwiftUI
  • Kotlin
  • Jetpack Compose
  • React Native
  • Android Auto
  • Wear OS

Backend

  • PHP 8
  • Laravel 12
  • Filament 3
  • Livewire
  • REST / JSON:API

Frontend

  • TypeScript
  • React
  • Next.js
  • Vue
  • Tailwind CSS
  • Vite

Data & Infra

  • MySQL
  • PostgreSQL
  • PostGIS
  • MongoDB
  • Redis
  • Docker
  • AWS
  • Azure
  • CI/CD
  • nginx

AI / ML

  • RAG pipelines
  • Azure OpenAI
  • YOLOv11
  • OpenCV
  • MLX

04 — Experience

Timeline

  1. 2024 — Present · current

    Technical Lead— Software development company serving international clients

    Mobile & web engineering, proposals, scoping and releases for enterprise products

  2. 2022 — 2024

    Senior Software Engineer— Software development company

    Flutter apps, Laravel backends and React frontends for client products

  3. 2020 — 2022

    Software Engineer— Software development company

    Web applications in PHP, Laravel and Vue; first mobile releases

  4. Independent

    Freelance Developer— Direct clients

    Business sites and small web tools