<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mohammad Jashem — Senior Full-Stack Mobile Engineer</title><link>https://mjashem.com/</link><description>Recent content 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/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>Privacy Policy</title><link>https://mjashem.com/privacy/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/privacy/</guid><description>&lt;p&gt;This policy explains what data this site collects, why, and how long it stays. It applies to &lt;strong&gt;mjashem.com&lt;/strong&gt; only — any client engagement is governed by the separate contract between us.&lt;/p&gt;</description></item><item><title>Terms of Service</title><link>https://mjashem.com/terms/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/terms/</guid><description>&lt;p&gt;These terms govern your use of &lt;strong&gt;mjashem.com&lt;/strong&gt;. By accessing the site you agree to them. Any paid engagement is governed by a separate signed contract — these terms do not override that contract.&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>Mobile CI/CD &amp; Release Automation — The Complete Stack</title><link>https://mjashem.com/insights/mobile-ci-cd-release-automation/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/insights/mobile-ci-cd-release-automation/</guid><description>&lt;p&gt;I&amp;rsquo;m Mohammad Jashem — a Senior Mobile Architect shipping Flutter, React Native, and Expo to production for 7+ years. I maintain the &lt;a
href="https://mjashem.com/projects/ncc-mobile-app/"&gt;NCC App&lt;/a&gt; across Google Play, the App Store, and Amazon Appstore, and I haven&amp;rsquo;t cut a release by hand in years. Three stores, three review processes, three device matrices — all on a pipeline I built once and have kept shippable since.&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>Kahf Kids: Flutter App &amp; RN/Expo Migration</title><link>https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/</guid><description>&lt;h2 class="relative group"&gt;Context
&lt;div id="context" 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="#context" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Kahf Kids is an Islamic education and entertainment app for children — curated YouTube videos, games, Quran, books, and courses behind a parent-controlled PIN — alongside a doctor-consultation surface (DocTime / Healthcare) that puts a VoIP call inside the app. I architected the original Flutter build, shipped it on Android, iOS, and Web, and ran it in production for about eighteen months while the user base grew.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/projects/kahfkids-flutter-app-deep-dive/featured-card.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><item><title>About Mohammad Jashem</title><link>https://mjashem.com/about/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/about/</guid><description/></item><item><title>Crewlix HR App: Flutter Clean Architecture</title><link>https://mjashem.com/projects/crewlix-hr-app/</link><pubDate>Sun, 01 Jan 2023 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/projects/crewlix-hr-app/</guid><description>&lt;h2 class="relative group"&gt;Context
&lt;div id="context" 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="#context" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Crewlix is an HR management mobile app for Android and iOS. It digitizes the daily HR operations of a modern workforce — attendance, leave, employee profiles, internal communication — behind a single login on a phone. I built it in Flutter, end to end, and shipped it to both stores.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/projects/crewlix-hr-app/featured-card.jpg"/></item><item><title>Flutter Clean Architecture: 7-Year, 70-Module Case Study</title><link>https://mjashem.com/projects/ncc-mobile-app/</link><pubDate>Fri, 01 Feb 2019 00:00:00 +0600</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/projects/ncc-mobile-app/</guid><description>&lt;h2 class="relative group"&gt;At a glance
&lt;div id="at-a-glance" 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="#at-a-glance" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;A student app built once to last.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;7+ years&lt;/strong&gt; maintained, from Flutter 1.x through the latest stable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;70+ feature modules&lt;/strong&gt; in a single codebase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3 app stores&lt;/strong&gt; — Google Play, App Store, and Amazon Appstore&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solo-owned for six years&lt;/strong&gt;, then a team&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero major production incidents&lt;/strong&gt; across the whole window&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One Clean Architecture refactor&lt;/strong&gt;, made in year two — still in place&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the project I point to when someone asks what &amp;ldquo;senior&amp;rdquo; means in mobile engineering. Not the flashiest build. The one that stays up.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mjashem.com/projects/ncc-mobile-app/featured-card.jpg"/></item><item><title>Work with me</title><link>https://mjashem.com/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mjashem@hotmail.com (Mohammad Jashem)</author><guid>https://mjashem.com/contact/</guid><description>&lt;p&gt;Tell me about your project. I reply to every serious enquiry within 1–2 business days.&lt;/p&gt;
&lt;form action="https://api.staticforms.dev/submit" method="POST" class="not-prose flex flex-col gap-4 max-w-xl mt-6"&gt;
&lt;input type="hidden" name="apiKey" value="sf_6445cd563a5800608d8bce1d"&gt;
&lt;input type="hidden" name="subject" value="New lead from mjashem.com"&gt;
&lt;input type="text" name="honeypot" style="display:none" tabindex="-1" autocomplete="off"&gt;
&lt;div&gt;
&lt;label class="sig-label" for="name"&gt;Name&lt;/label&gt;
&lt;input class="sig-field w-full" type="text" id="name" name="name" required&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;label class="sig-label" for="email"&gt;Email&lt;/label&gt;
&lt;input class="sig-field w-full" type="email" id="email" name="email" required&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;label class="sig-label" id="project_type-label" for="project_type"&gt;Project type&lt;/label&gt;
&lt;div class="sig-select" data-sig-select&gt;
&lt;select class="sig-field w-full" id="project_type" name="project_type" required&gt;
&lt;option value="" selected disabled&gt;Select…&lt;/option&gt;
&lt;option value="New app"&gt;New app&lt;/option&gt;
&lt;option value="Existing app maintenance"&gt;Existing app maintenance&lt;/option&gt;
&lt;option value="Migration (e.g. Flutter → React Native)"&gt;Migration (e.g. Flutter → React Native)&lt;/option&gt;
&lt;option value="CI/CD setup"&gt;CI/CD setup&lt;/option&gt;
&lt;option value="AI code review"&gt;AI code review&lt;/option&gt;
&lt;option value="Other"&gt;Other&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;label class="sig-label" for="message"&gt;Message&lt;/label&gt;
&lt;textarea class="sig-field w-full" id="message" name="message" rows="5" required&gt;&lt;/textarea&gt;
&lt;/div&gt;
&lt;button type="submit" class="btn btn-primary"&gt;Send message →&lt;/button&gt;
&lt;/form&gt;
&lt;h2 class="relative group"&gt;Other ways to reach me
&lt;div id="other-ways-to-reach-me" 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="#other-ways-to-reach-me" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;div class="sig-contact-channels"&gt;
&lt;a class="sig-contact-channel" href="mailto:mjashem@hotmail.com"&gt;
&lt;span class="sig-contact-channel-icon" aria-hidden="true"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect width="20" height="16" x="2" y="4" rx="2"/&gt;&lt;path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="sig-contact-channel-body"&gt;
&lt;span class="sig-contact-channel-label"&gt;Email&lt;/span&gt;
&lt;span class="sig-contact-channel-value"&gt;mjashem@hotmail.com&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;a class="sig-contact-channel" href="https://linkedin.com/in/mjashem" target="_blank" rel="noopener noreferrer"&gt;
&lt;span class="sig-contact-channel-icon" aria-hidden="true"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="currentColor"&gt;&lt;path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.13 1.45-2.13 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28zM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="sig-contact-channel-body"&gt;
&lt;span class="sig-contact-channel-label"&gt;LinkedIn&lt;/span&gt;
&lt;span class="sig-contact-channel-value"&gt;linkedin.com/in/mjashem&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;</description></item></channel></rss>