<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-edge-functions-flutter-guide</loc>
    <lastmod>2026-10-13</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fix-supabase-max-connection-reached-supavisor</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-auth-oauth2-provider</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-custom-oidc-providers</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-stripe-sync-webhooks-engine</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-pgvector-semantic-search</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-edge-function-timeouts-limits</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fix-supabase-migration-drift-column-missing</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-storage-large-uploads-zip-downloads</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-automatic-embeddings-vector-search</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-custom-smtp-google-workspace</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-analytics-buckets-query-logs</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-test-rls-policies</loc>
    <lastmod>2026-10-12</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-vault-secrets-api-keys</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-declarative-schemas-database-as-code</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-audit-logs-postgres-triggers</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-soft-deletes-supabase-js</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-edge-functions-background-tasks-websockets</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-log-drains-observability</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-cli-v2-config-as-code</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-branching-preview-databases</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-queues-pgmq-background-jobs</loc>
    <lastmod>2026-10-10</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-cron-pg-cron-recurring-jobs</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-pipelines-vs-realtime-flutter</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-role-based-access-control-custom-claims</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/proxy-pattern-dart-lazy-loading</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/memento-pattern-dart-snapshot-undo</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/decorator-pattern-dart-flutter-widgets</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/facade-pattern-dart</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flyweight-pattern-dart</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/composite-pattern-dart</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/chain-of-responsibility-dart-validation</loc>
    <lastmod>2026-10-09</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/state-pattern-dart-enum-switches</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/adapter-pattern-dart</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/iterator-pattern-dart-custom-iterables</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/command-pattern-dart-undo-redo-flutter</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/template-method-pattern-dart</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/abstract-factory-dart</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/null-object-pattern-dart</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/shotgun-surgery-code-smell</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/debugging-strategies-print-to-profiling</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/cicd-flutter-apps-github-actions</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/git-workflows-solo-developers</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/solid-principles-dart-flutter</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/replace-magic-numbers-dart-constants</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/extract-widget-refactoring-flutter-ui</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/factory-method-vs-builder-dart</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/strategy-pattern-dart-kill-if-else-chain</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/design-patterns-flutter-developers-guide</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-supabase-offline-first</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-vs-pocketbase-2026</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/ai-features-flutter-app-gemini</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/stripe-payments-flutter-supabase-edge-functions</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-flutter-phone-otp-auth</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/publish-flutter-app-app-store-2026</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-flutter-push-notifications-fcm</loc>
    <lastmod>2026-10-08</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-vs-firebase-flutter-2026</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/webauthn-passkeys-passwordless-nodejs</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/csrf-attacks-samesite-cookies-tokens-defenses</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/http-caching-cache-control-etag-vary</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/webcodecs-api-native-video-processing</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/document-picture-in-picture-api-widgets</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/web-platform-baseline-2026-less-javascript</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/css-container-queries-responsive-components</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/react-data-fetching-2026-suspense-error-boundaries</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/optimistic-ui-react-19-use-optimistic</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fix-react-memory-leaks-subscriptions-timers</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/javascript-event-loop-microtasks-macrotasks</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/web-components-2026-custom-elements-shadow-dom</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/popover-api-vs-dialog-element</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/scroll-driven-css-animations</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/css-anchor-positioning-tooltips-popovers</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/view-transitions-api-page-transitions</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/css-specificity-styles-not-applying</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/javascript-closures-scope-explained</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/html5-form-validation-without-javascript</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/localstorage-indexeddb-cookies-web-storage</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/core-web-vitals-measuring-fixing-performance</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/css-grid-flexbox-layout-guide</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/service-workers-offline-first-web-apps</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fetch-api-timeouts-retries-cancellation</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-empty-responses-safety-filters</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-safety-settings-harm-category</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-audio-diarization-transcription</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-text-to-speech-apps</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-video-understanding</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-vision-flutter-camera-photos</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-nano-banana-image-generation</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-implicit-context-caching</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-multimodal-embeddings</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-embeddings-semantic-search</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-file-search-rag</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-function-calling-400-errors</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/genkit-dart-tool-calling</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/genkit-dart-type-safe-ai-flow</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-backend-proxy-flutter-api-keys</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-streaming-flutter-generate-content-stream</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-prompt-caching-cost-control</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/perceptual-image-diff-apps</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-speech-to-text</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/ai-agents-mobile-developers-explained</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/rag-concepts-app-developers-2026</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/ai-chatbot-flutter-gemini-supabase-memory</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-structured-output-json</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/gemini-api-flutter-first-ai-feature</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-custom-exceptions</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-args-kwargs</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-closures-explained</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-asyncio-create-task</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-threading-lock-semaphore</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-asyncio-gather</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-daemon-threads</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-threadpoolexecutor</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-shallow-deep-copy</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-mutable-vs-immutable</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-garbage-collection</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-operator-overloading</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-mixins-guide</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-protocols-structural-typing</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-multiple-inheritance-mro</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-slots-memory</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-dataclasses-vs-namedtuple</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-enums-type-safe</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-metaclasses-guide</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-descriptors-explained</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-context-managers</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-generators-guide</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-315-sentinel-values</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-315-new-features</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-delete-duplicates</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-window-functions-app-queries</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-vacuum-autovacuum-tuning</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-table-partitioning-guide</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-advisory-locks</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-merge-conditional-upsert</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-recursive-ctes</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-skip-locked-job-queue</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-listen-notify-backend</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-deadlock-40p01-fix</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-pgbouncer-transaction-mode</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/pg-stat-statements-slow-queries</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-async-io</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-group-by-all</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-copy-to-json</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-temporal-tables</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-wait-for-lsn</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-repack-concurrently</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-on-conflict-do-select</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-19-new-features</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-virtual-generated-columns</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-btree-skip-scan</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-returning-old-new-audit</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-18-uuidv7-primary-keys</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-storage-image-transformations</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-apple-sign-in-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fix-supabase-realtime-messages-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-edge-function-errors-fix</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-realtime-broadcast-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-realtime-filters-guide</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-passkey-login-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-sessions-refresh-tokens-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-new-api-keys-migration</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/fix-supabase-42501-permission-denied</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-mfa-flutter-totp</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-anonymous-sign-in-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-offline-sync-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-backups-point-in-time-recovery</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-multi-tenancy-saas-patterns</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-pagination-flutter-cursor-offset</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-full-text-search-postgres</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-edge-functions-dart</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-realtime-presence-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-storage-video-uploads-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-database-triggers-guide</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/row-level-security-supabase-policies</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-google-sign-in-flutter</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-web-deployment-hosting</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-auth-flutter-email-password</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-theming-dark-mode-guide</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-supabase-complete-guide-2026</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-performance-profiling-jank</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/in-app-purchases-flutter-revenuecat</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-splash-screen-native-animated</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/shimmer-loading-flutter-placeholders</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/hero-animations-flutter-guide</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/platform-channels-flutter-methodchannel</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/localization-flutter-multilanguage-apps</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/reduce-flutter-app-size-apk-ipa</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-flavors-dev-staging-prod</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/custompaint-flutter-custom-shapes-charts</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/observer-pattern-flutter-changenotifier</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/singleton-dart-pattern-guide</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/guard-clauses-dart-cleaner-code</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/dependency-injection-flutter-get-it</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/repository-pattern-flutter-supabase</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/clean-architecture-flutter-template</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/debugging-flutter-devtools</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/push-notifications-flutter-fcm</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/testing-flutter-unit-widget-integration</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/clipboard-share-sheets-flutter</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/go-router-deep-linking-flutter</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/lazy-loading-pagination-flutter-lists</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-web-scraping-beautifulsoup</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-virtual-environments</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-threads-asyncio-multiprocessing</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-requests-http-retries-timeouts</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-regex-crash-course</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-pytest-fixtures-parametrize</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-oop-dataclasses</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-logging-done-right</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-json-encoding-decoding</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-file-handling-paths-csv</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-decorators-explained-visually</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-datetime-timezones</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/python-asyncio-practical-guide</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-upsert-on-conflict</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-transactions-isolation-levels</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-subqueries-ctes</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-timestamps-timezones</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-joins-explained-visual</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-indexes-btree-gin</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-group-by-having-aggregations</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-foreign-keys-cascading-deletes</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/postgresql-distinct-on-window-functions</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/jsonb-postgresql-flexible-data</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/explain-analyze-postgresql-query-plans</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/rest-apis-flutter-http-json</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/null-safety-dart-guide</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/http-timeouts-retry-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/async-await-futures-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/form-validation-flutter-guide</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/debounce-search-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/future-wait-parallel-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/error-handling-dart-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/streams-streambuilder-flutter-guide</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/json-serialization-dart-freezed</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/secure-gemini-api-key-flutter-proxy</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-supabase-realtime-chat-app</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/flutter-supabase-storage-image-upload</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-rls-patterns-flutter</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
  <url>
    <loc>https://www.hasnainmorani.dev/blog/supabase-email-auth-flutter-tutorial</loc>
    <lastmod>2026-09-30</lastmod>
    <changefreq>weekly</changefreq>
  </url>
</urlset>
