<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mjashem on Mohammad Jashem — Senior Full-Stack Mobile Engineer</title><link>https://mjashem.com/authors/mjashem/</link><description>Recent content in Mjashem on Mohammad Jashem — Senior Full-Stack Mobile Engineer</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>mjashem@hotmail.com (Mohammad Jashem)</managingEditor><webMaster>mjashem@hotmail.com (Mohammad Jashem)</webMaster><lastBuildDate>Sun, 19 Jul 2026 00:00:00 +0600</lastBuildDate><atom:link href="https://mjashem.com/authors/mjashem/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Hosted Coder on Docker: Dev Workspaces with Subdomains</title><link>https://mjashem.com/insights/self-hosted-coder-dev-workspaces/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/self-hosted-coder-dev-workspaces/</guid><description>&lt;p&gt;Open a browser tab, get a fully-loaded dev environment. Close it, it&amp;rsquo;s gone. Open it tomorrow, it&amp;rsquo;s identical — same tools, same shell history, same checkout on the same branch.&lt;/p&gt;</description></item><item><title>Self-Hosted Hugo CI/CD: Drone + Cloudflare Tunnel</title><link>https://mjashem.com/insights/hugo-cicd-self-hosted-drone/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/hugo-cicd-self-hosted-drone/</guid><description>&lt;p&gt;Push to &lt;code&gt;main&lt;/code&gt;. Hugo rebuilds in CI, the built site ships to the server over SCP, the container force-recreates, and the new content is live in well under a minute, in practice. No port ever opens on the server. That last part is the whole point — and once you&amp;rsquo;ve run a static site this way, the idea of exposing a box to the internet to serve HTML feels archaic.&lt;/p&gt;</description></item><item><title>Zero-Trust Homelab: Cloudflare Tunnel, Traefik, No Ports</title><link>https://mjashem.com/insights/self-hosted-zero-trust-homelab/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/self-hosted-zero-trust-homelab/</guid><description>&lt;p&gt;Most homelab guides tell you to forward ports 80 and 443 on your router and put your home IP in DNS. This one opens zero inbound ports. The whole fleet — photos, passwords, CI, dev environments, this site — sits behind a single outbound tunnel that terminates on the router itself. No port to forward, no public IP to leak.&lt;/p&gt;</description></item><item><title>Kahf Kids Flutter Clean Architecture: Riverpod, Auto Route</title><link>https://mjashem.com/insights/kahfkids-flutter-clean-architecture/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/kahfkids-flutter-clean-architecture/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect. &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt; is an Islamic kids&amp;rsquo; education app I built in Flutter and ran in production for about eighteen months across Android, iOS, and Web: curated YouTube videos, Quran, books, games, courses — all behind a parent-controlled PIN. This is the architecture write-up. Not the marketing page — the engineering one.&lt;/p&gt;</description></item><item><title>Kahf Kids React Native / Expo Architecture: Mobile, Web, TV</title><link>https://mjashem.com/insights/building-kahfkids-rn-expo-architecture/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/building-kahfkids-rn-expo-architecture/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect. This is the architecture deep dive for the React Native / Expo rebuild of &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt;, the Islamic kids&amp;rsquo; education app I migrated off Flutter after roughly eighteen months in production. The product is the same — curated video, Quran, books, games, courses, and a doctor-consultation feature (Healthcare / DocTime), all behind a parent-controlled PIN — and the device matrix is the same: low-end Android handsets with Mali and PowerVR GPUs that the Flutter platform-view hot path was ANR-ing on. The architecture underneath is new. This piece is the engineering write-up of that new shape: one React Native / Expo codebase and a shared monorepo package set targeting five platforms — Android, iOS, Web, Android TV, and web TV.&lt;/p&gt;</description></item><item><title>Kahf Kids SEO Architecture: Meta Injection + Sitemaps</title><link>https://mjashem.com/insights/kahfkids-seo-architecture/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/kahfkids-seo-architecture/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect. This is the SEO spoke for &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt;, the Islamic kids&amp;rsquo; education app I migrated from Flutter to React Native / Expo after about eighteen months in production. The product runs curated video, Quran, books, games, and courses behind a parent-controlled PIN, and the web build ships out of the same React Native / Expo codebase as the mobile apps — &lt;a
href="https://mjashem.com/insights/building-kahfkids-rn-expo-architecture/"&gt;documented across the cluster&lt;/a&gt;. This piece is narrow on purpose: the engineering decision that got a client-rendered kids&amp;rsquo; video app actually indexed by Google — meta-injection into the SPA shell, not full server-side rendering.&lt;/p&gt;</description></item><item><title>Crewlix Flutter Clean Architecture: HR App Deep Dive</title><link>https://mjashem.com/insights/building-crewlix-flutter-clean-architecture/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/building-crewlix-flutter-clean-architecture/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect. &lt;a
href="https://mjashem.com/projects/crewlix-hr-app/"&gt;Crewlix&lt;/a&gt; is an HR management app I built in Flutter and shipped to Google Play and the App Store: attendance, leave, employee profiles, and a social feed. This is the architecture write-up — not the marketing version, the engineering one.&lt;/p&gt;</description></item><item><title>AI Code Review in CI/CD: From Slow Reviews to Instant</title><link>https://mjashem.com/insights/ai-code-review-in-ci-cd/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/ai-code-review-in-ci-cd/</guid><description>&lt;p&gt;Review latency is the quietest killer of release cadence on a long-running app. The build ships in minutes, the pipeline promotes in minutes, and then a PR sits for a day and a half waiting for a human to look at it. I&amp;rsquo;m a senior mobile architect — I&amp;rsquo;ve maintained the &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;NCC App&lt;/a&gt; for seven-plus years across three stores — and for a long stretch the bottleneck on my own pipeline was me. Adding AI code review to CI/CD is the single change that collapsed that latency. This is the write-up on how it&amp;rsquo;s wired, what it catches, what it misses, and why a human still signs off on every merge.&lt;/p&gt;</description></item><item><title>AI-Assisted Mobile Development — How It Actually Works</title><link>https://mjashem.com/insights/ai-assisted-mobile-development/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/ai-assisted-mobile-development/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect with 7+ years shipping Flutter, React Native, and Expo in production. I delivered the redesigned &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt; React Native/Expo app in three months, 100% AI-assisted, and I run AI code review on every merge in my CI/CD pipelines. So when founders ask me what &amp;ldquo;AI-assisted mobile development&amp;rdquo; means in practice, my answer isn&amp;rsquo;t a hype pitch. It&amp;rsquo;s a workflow description.&lt;/p&gt;</description></item><item><title>Flutter Platform-View ANRs on Mali/PowerVR GPUs</title><link>https://mjashem.com/insights/flutter-platform-view-anr-mali-powervr/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/flutter-platform-view-anr-mali-powervr/</guid><description>&lt;p&gt;This is the investigation I wish someone had handed me before I spent six weeks patching a Flutter platform-view ANR I couldn&amp;rsquo;t fix in app code. It&amp;rsquo;s the engineering detail behind &lt;a
href="https://mjashem.com/insights/flutter-vs-react-native-vs-expo/"&gt;our full comparison of Flutter vs React Native vs Expo&lt;/a&gt; and the failure mode that ended in &lt;a
href="https://mjashem.com/insights/migrating-kahf-kids-flutter-to-react-native-expo/"&gt;migrating Kahf Kids off Flutter&lt;/a&gt;. Dev forums are full of &lt;em&gt;&amp;ldquo;Flutter WebView ANR on Redmi Note&amp;rdquo;&lt;/em&gt; threads with no real answers — most blame the WebView, tell you to enable hybrid composition, or say clear the cache. None of that fixes this.&lt;/p&gt;</description></item><item><title>Flutter vs React Native vs Expo for MVPs</title><link>https://mjashem.com/insights/flutter-vs-react-native-vs-expo/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/flutter-vs-react-native-vs-expo/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect with 7+ years shipping Flutter, React Native, and Expo in production. I&amp;rsquo;ve kept &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;one Flutter app alive for seven years across three stores&lt;/a&gt;, I&amp;rsquo;ve &lt;a
href="https://mjashem.com/projects/crewlix-hr-app/"&gt;built an HR platform in Flutter&lt;/a&gt; because Flutter was the right call for that product, and I&amp;rsquo;ve also &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;migrated a Flutter app off Flutter&lt;/a&gt; when the architecture stopped fitting. So when founders ask me &amp;ldquo;Flutter or React Native or Expo for the MVP,&amp;rdquo; my answer is never &amp;ldquo;it depends.&amp;rdquo; It depends on &lt;em&gt;what&lt;/em&gt; — and I can tell you the what in about ten minutes if you describe the product.&lt;/p&gt;</description></item><item><title>Hire a Flutter Developer in 2026</title><link>https://mjashem.com/insights/hire-flutter-developer-2026/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/hire-flutter-developer-2026/</guid><description>&lt;p&gt;If you&amp;rsquo;re hiring a Flutter developer in 2026, you&amp;rsquo;re doing it for one of two reasons: you want one codebase shipping to iOS and Android simultaneously, or you have a Flutter app that needs to stay alive. Both are sound decisions — the hire that goes wrong is the one where the buyer couldn&amp;rsquo;t tell a senior architect from a junior who&amp;rsquo;d shipped one tutorial app.&lt;/p&gt;</description></item><item><title>Maintaining a Flutter App for 7 Years</title><link>https://mjashem.com/insights/maintaining-flutter-app-long-term/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/maintaining-flutter-app-long-term/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect, and for the last 7+ years I&amp;rsquo;ve been the maintainer of the &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;NCC App&lt;/a&gt;, the student-assistance app for Northwest Career College. It started on Flutter 1.x in 2019. The current build runs on Flutter 3.41.x stable, with Dart 3, Impeller, and Material 3. Same codebase. Same store listings — Google Play, App Store, Amazon Appstore. Zero major production incidents across the entire window.&lt;/p&gt;</description></item><item><title>Why I Migrated Kahf Kids from Flutter to React Native/Expo</title><link>https://mjashem.com/insights/migrating-kahf-kids-flutter-to-react-native-expo/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/migrating-kahf-kids-flutter-to-react-native-expo/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect. This is the story of moving &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt; off Flutter after roughly eighteen months in production: why the call was forced, what I rebuilt, and how it shipped in three months with an AI-assisted workflow. Not the marketing version — the engineering one.&lt;/p&gt;</description></item><item><title>Docker Commands Reference: A Mobile Dev's Cheatsheet</title><link>https://mjashem.com/blog/complete-docker-commands-reference-guide/</link><pubDate>Tue, 04 Nov 2025 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/blog/complete-docker-commands-reference-guide/</guid><description>&lt;h1 class="relative group"&gt;Docker Commands Reference: A Mobile Dev&amp;rsquo;s Cheatsheet
&lt;div id="docker-commands-reference-a-mobile-devs-cheatsheet" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#docker-commands-reference-a-mobile-devs-cheatsheet" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;As a mobile app developer, I constantly find myself searching for Docker commands. Whether I&amp;rsquo;m setting up a React Native development environment, building Flutter apps in containers, or managing CI/CD pipelines, Docker is essential—but the commands are hard to remember. For the broader why — what a Docker-backed mobile release pipeline actually looks like end-to-end — I wrote up &lt;a
href="https://mjashem.com/insights/mobile-ci-cd-release-automation/"&gt;my mobile CI/CD release-automation setup&lt;/a&gt;. This comprehensive reference guide covers everything from daily essentials to advanced operations, with special focus on cleanup and system management commands that every developer needs.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/blog/complete-docker-commands-reference-guide/feature.jpg"/></item><item><title>Why I Switched from Woodpecker to Drone for Flutter CI/CD</title><link>https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/</link><pubDate>Mon, 03 Nov 2025 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/</guid><description>&lt;h1 class="relative group"&gt;Why I Switched from Woodpecker to Drone for Flutter CI/CD
&lt;div id="why-i-switched-from-woodpecker-to-drone-for-flutter-cicd" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-i-switched-from-woodpecker-to-drone-for-flutter-cicd" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;As a mobile developer managing multiple Flutter apps, I invested heavily in building a self-hosted CI/CD pipeline to automate deployments to Google Play Store, Apple App Store, and Amazon Appstore. The goal was simple: automate my nightly builds so I could sleep better while my apps get deployed automatically. What started as a promising setup with Woodpecker CI eventually became a source of constant frustration and sleepless nights, leading me to migrate to Drone CI. This is the technical story of that migration and the countless hours I lost troubleshooting issues that were supposed to save me time.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/blog/why-i-switched-from-woodpecker-to-drone/feature.jpg"/></item><item><title>Flutter State Management: What I'd Actually Pick in 2026</title><link>https://mjashem.com/blog/flutter-state-management/</link><pubDate>Wed, 17 Jan 2024 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/blog/flutter-state-management/</guid><description>&lt;p&gt;I&amp;rsquo;ve shipped three production Flutter apps — the &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;NCC App&lt;/a&gt; (seven years and counting), &lt;a
href="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/"&gt;Kahf Kids&lt;/a&gt;, and &lt;a
href="https://mjashem.com/projects/crewlix-hr-app/"&gt;Crewlix&lt;/a&gt; — and every one of them runs on Riverpod. Not because Riverpod is objectively best. Because after a decade of &lt;code&gt;setState&lt;/code&gt; sprawl, Provider, Bloc, and Riverpod across real codebases, it&amp;rsquo;s the one that stopped costing me time.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/blog/flutter-state-management/featured.png"/></item></channel></rss>