<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://codeluma.ca/</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-home.jpg</image:loc>
      <image:caption>CodeLuma Development Inc. - full-stack software, web and app studio in Nova Scotia</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-services.jpg</image:loc>
      <image:caption>CodeLuma development services in Nova Scotia</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/software-development.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-software-development.jpg</image:loc>
      <image:caption>Custom full-stack software development in Nova Scotia</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/web-development.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-web-development.jpg</image:loc>
      <image:caption>Professional web development in Nova Scotia and Canada</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/app-development.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-app-development.jpg</image:loc>
      <image:caption>Android, iOS and progressive web app development</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/hosting.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-hosting.jpg</image:loc>
      <image:caption>Managed web hosting from a Canadian team</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/maintenance.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-maintenance.jpg</image:loc>
      <image:caption>Website and software maintenance plans</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/email-services.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-email-services.jpg</image:loc>
      <image:caption>Professional business email hosting</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/services/social-media-management.php</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-social-media-management.jpg</image:loc>
      <image:caption>Social media management for Nova Scotia businesses</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/portfolio-showcase.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-portfolio.jpg</image:loc>
      <image:caption>CodeLuma web, software, Android and iOS development portfolio</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/portfolio/go-marty/</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-gomarty.jpg</image:loc>
      <image:caption>Go Marty Android navigation app by CodeLuma</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/portfolio/kaltro-wear/</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-kaltrowear.jpg</image:loc>
      <image:caption>Kaltro Wear custom streetwear store built by CodeLuma</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/about.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-about.jpg</image:loc>
      <image:caption>About CodeLuma Development Inc., Nova Scotia</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/contact.php</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-contact.jpg</image:loc>
      <image:caption>Start a project conversation with CodeLuma</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/support.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-support.jpg</image:loc>
      <image:caption>CodeLuma Development Inc. Support Centre</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/faq.php</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://codeluma.ca/blog.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/img26/og-blog.jpg</image:loc>
      <image:caption>CodeLuma software, app and web development insights</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/privacy.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://codeluma.ca/terms.php</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=rest-vs-graphql-picking-the-right-api-style-for-your-product</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/rest-vs-graphql-picking-the-right-api-style-for-your-product-cover.webp</image:loc>
      <image:caption>A simple diagram showing two different data paths branching from a single server icon, one labeled REST and one labeled GraphQL.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=pre-authorized-debit-pad-for-canadian-recurring-billing</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/pre-authorized-debit-pad-for-canadian-recurring-billing-cover.webp</image:loc>
      <image:caption>A simple illustration of a bank document with a signature line connecting to a recurring calendar icon, representing an authorized recurring debit.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=largest-contentful-paint-find-and-fix-your-slowest-hero-element</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/largest-contentful-paint-find-and-fix-your-slowest-hero-element-cover.webp</image:loc>
      <image:caption>A simple illustration of a stopwatch next to a browser window with a large image block loading.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=writing-a-one-page-mvp-brief-your-developers-can-build-from</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/writing-a-one-page-mvp-brief-your-developers-can-build-from-cover.webp</image:loc>
      <image:caption>A single sheet of paper with five labeled sections pinned to a clipboard, next to an open laptop.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-write-a-software-project-brief-that-gets-useful-quotes</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-write-a-software-project-brief-that-gets-useful-quotes-cover.webp</image:loc>
      <image:caption>A simple illustration of a checklist document beside an open laptop, representing a well-organized project brief.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=agents-vs-chatbots-which-one-does-your-business-need</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/agents-vs-chatbots-which-one-does-your-business-need-cover.webp</image:loc>
      <image:caption>A simple flowchart illustration showing three paths branching from a question mark toward a speech bubble, a chat window, and a gear icon.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=pipeda-compliance-checklist-for-canadian-websites-and-web-apps</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/pipeda-compliance-checklist-for-canadian-websites-and-web-apps-cover.webp</image:loc>
      <image:caption>A simple illustration of a padlock resting on a checklist page beside a small website window and a database icon.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=api-rate-limiting-protect-your-service-keep-partners-happy</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/api-rate-limiting-protect-your-service-keep-partners-happy-cover.webp</image:loc>
      <image:caption>Network cables plugged neatly into a switch, representing controlled and evenly distributed data traffic.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=accepting-interac-debit-and-e-transfer-in-your-online-store</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/accepting-interac-debit-and-e-transfer-in-your-online-store-cover.webp</image:loc>
      <image:caption>A simple illustration of a debit card and a smartphone showing a bank transfer beside a checkout screen icon.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=fixing-interaction-to-next-paint-inp-a-practical-guide</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/fixing-interaction-to-next-paint-inp-a-practical-guide-cover.webp</image:loc>
      <image:caption>A simple illustration of a stopwatch next to a cursor click icon, representing the delay between a tap and the screen responding.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=mvp-scope-cutting-a-simple-must-have-vs-later-filter</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/mvp-scope-cutting-a-simple-must-have-vs-later-filter-cover.webp</image:loc>
      <image:caption>A simple illustration of sticky notes sorted into must-have and later columns on a wall.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=mvp-scope-cutting-the-must-have-vs-later-filter</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/mvp-scope-cutting-the-must-have-vs-later-filter-cover.webp</image:loc>
      <image:caption>A simple illustration of sticky notes on a wall being sorted into two columns labeled must-have and later.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=mvp-scope-cutting-the-must-have-vs-later-feature-filter</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/mvp-scope-cutting-the-must-have-vs-later-feature-filter-cover.webp</image:loc>
      <image:caption>A simple illustration of a feature backlog sorted into two columns, must-have and later, with a single path highlighted through the must-have column.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=is-your-website-ready-for-ai-search-a-practical-checklist</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/is-your-website-ready-for-ai-search-a-practical-checklist-cover.webp</image:loc>
      <image:caption>A blue globe with a pink wireframe grid on a stand, illustrating search across the whole web</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-future-of-web-development-what-business-owners-should-expect-next-year</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-future-of-web-development-what-business-owners-should-expect-next-year-cover.webp</image:loc>
      <image:caption>Road stretching toward a horizon with web icons along the way illustration for the future of web development</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-value-of-a-retainer-why-ongoing-software-maintenance-beats-one-off-projects</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-value-of-a-retainer-why-ongoing-software-maintenance-beats-one-off-projects-cover.webp</image:loc>
      <image:caption>Calendar with recurring wrench and shield icons illustrating an ongoing software maintenance retainer</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=custom-reporting-engines-generating-pdf-invoices-and-excel-exports-at-scale</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/custom-reporting-engines-generating-pdf-invoices-and-excel-exports-at-scale-cover.webp</image:loc>
      <image:caption>Documents and spreadsheets flowing from a report engine illustration for PDF and Excel generation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=optimizing-the-post-purchase-experience-automated-tracking-invoices-and-emails</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/optimizing-the-post-purchase-experience-automated-tracking-invoices-and-emails-cover.webp</image:loc>
      <image:caption>Package with tracking timeline and email icons illustration for post-purchase experience</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=monitoring-web-application-health-setting-up-real-time-uptime-and-error-tracking</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/monitoring-web-application-health-setting-up-real-time-uptime-and-error-tracking-cover.webp</image:loc>
      <image:caption>Dashboard with health metrics and alert indicators illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-run-a-successful-discovery-phase-before-starting-any-software-project</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-run-a-successful-discovery-phase-before-starting-any-software-project-cover.webp</image:loc>
      <image:caption>Magnifying glass and roadmap illustration representing a software discovery phase</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-low-code-and-ai-assistants-are-changing-custom-software-development</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-low-code-and-ai-assistants-are-changing-custom-software-development-cover.webp</image:loc>
      <image:caption>Code editor with an AI assistant suggestion and drag-and-drop blocks illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-high-availability-systems-designing-apps-that-failover-smoothly</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-high-availability-systems-designing-apps-that-failover-smoothly-cover.webp</image:loc>
      <image:caption>Two servers with a failover arrow illustration for high availability systems</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=handling-third-party-api-outages-gracefully-in-your-application-architecture</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/handling-third-party-api-outages-gracefully-in-your-application-architecture-cover.webp</image:loc>
      <image:caption>Circuit breaker and fallback path illustration for third-party API outages</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-a-customer-loyalty-and-referral-program-that-drives-repeat-purchases</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-a-customer-loyalty-and-referral-program-that-drives-repeat-purchases-cover.webp</image:loc>
      <image:caption>Loyalty card with stars and gift boxes illustration for a customer rewards program</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=mobile-first-optimization-ensuring-flawless-performance-across-all-devices</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/mobile-first-optimization-ensuring-flawless-performance-across-all-devices-cover.webp</image:loc>
      <image:caption>Smartphone and tablet layouts illustration for mobile-first design</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=choosing-the-right-tech-stack-for-your-startup-a-founder-s-guide</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/choosing-the-right-tech-stack-for-your-startup-a-founder-s-guide-cover.webp</image:loc>
      <image:caption>Stack of technology layers illustration for choosing a startup tech stack</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-white-label-software-products-for-multi-client-reselling</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-white-label-software-products-for-multi-client-reselling-cover.webp</image:loc>
      <image:caption>One application shown with three different branded skins for different clients illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=monitoring-user-activity-and-audit-logs-for-enterprise-compliance</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/monitoring-user-activity-and-audit-logs-for-enterprise-compliance-cover.webp</image:loc>
      <image:caption>Audit trail log entries with magnifying glass illustration for compliance monitoring</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-scalable-notification-systems-email-sms-and-push-notifications-done-right</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-scalable-notification-systems-email-sms-and-push-notifications-done-right-cover.webp</image:loc>
      <image:caption>Email, SMS and push notification icons flowing from a central hub illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=webhooks-and-automated-workflows-connecting-your-e-commerce-store-to-erp-and-crm</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/webhooks-and-automated-workflows-connecting-your-e-commerce-store-to-erp-and-crm-cover.webp</image:loc>
      <image:caption>Store connected to ERP and CRM with event arrows illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-roi-of-accessibility-wcag-expanding-your-market-reach-and-protecting-your-brand</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-roi-of-accessibility-wcag-expanding-your-market-reach-and-protecting-your-brand-cover.webp</image:loc>
      <image:caption>Universal access symbol and web page layout illustration for accessibility</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=designing-for-conversion-how-full-stack-performance-directly-impacts-your-bottom-line</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/designing-for-conversion-how-full-stack-performance-directly-impacts-your-bottom-line-cover.webp</image:loc>
      <image:caption>Funnel illustration showing performance improving conversion on a blue gradient</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=moving-from-spreadsheets-to-custom-software-when-your-business-outgrows-excel</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/moving-from-spreadsheets-to-custom-software-when-your-business-outgrows-excel-cover.webp</image:loc>
      <image:caption>Spreadsheet grid transforming into a structured application interface illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-lower-your-monthly-aws-cloud-hosting-bill-without-sacrificing-performance</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-lower-your-monthly-aws-cloud-hosting-bill-without-sacrificing-performance-cover.webp</image:loc>
      <image:caption>Cloud invoice shrinking with efficiency icons illustration for cloud cost optimisation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=file-upload-management-direct-to-cloud-storage-architecture-for-large-media-files</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/file-upload-management-direct-to-cloud-storage-architecture-for-large-media-files-cover.webp</image:loc>
      <image:caption>Files uploading directly to cloud storage with a progress bar illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=securing-your-e-commerce-platform-against-fraud-and-bot-attacks</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/securing-your-e-commerce-platform-against-fraud-and-bot-attacks-cover.webp</image:loc>
      <image:caption>Shield blocking bots and suspicious transactions illustration for e-commerce security</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=handling-traffic-spikes-how-to-keep-your-app-online-during-major-marketing-launches</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/handling-traffic-spikes-how-to-keep-your-app-online-during-major-marketing-launches-cover.webp</image:loc>
      <image:caption>Traffic surge graph and servers illustration for a marketing launch</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-transition-your-local-business-into-a-scalable-digital-platform</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-transition-your-local-business-into-a-scalable-digital-platform-cover.webp</image:loc>
      <image:caption>Storefront turning into digital platform illustration for a local business going online</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=implementing-feature-flags-safely-testing-new-product-features-with-select-users</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/implementing-feature-flags-safely-testing-new-product-features-with-select-users-cover.webp</image:loc>
      <image:caption>Toggle switches with a percentage rollout slider illustration for feature flags</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=ci-cd-pipelines-how-automated-testing-speeds-up-feature-delivery-and-reduces-bugs</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/ci-cd-pipelines-how-automated-testing-speeds-up-feature-delivery-and-reduces-bugs-cover.webp</image:loc>
      <image:caption>Automated pipeline stages from commit to production illustration for CI/CD</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=securing-business-data-role-based-access-control-rbac-and-multi-tenant-architectures</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/securing-business-data-role-based-access-control-rbac-and-multi-tenant-architectures-cover.webp</image:loc>
      <image:caption>Tenant isolation and permission layers illustration for RBAC and multi-tenant architecture</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=implementing-advanced-product-filtering-and-search-that-converts</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/implementing-advanced-product-filtering-and-search-that-converts-cover.webp</image:loc>
      <image:caption>Search bar with filter chips and product grid illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=migrating-to-next-js-how-modern-frameworks-improve-seo-and-user-experience</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/migrating-to-next-js-how-modern-frameworks-improve-seo-and-user-experience-cover.webp</image:loc>
      <image:caption>Framework migration diagram with pages moving from legacy stack to modern stack</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=protecting-your-intellectual-property-code-ownership-and-security-best-practices-for-founders</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/protecting-your-intellectual-property-code-ownership-and-security-best-practices-for-founders-cover.webp</image:loc>
      <image:caption>Shield and lock illustration representing intellectual property protection for software founders</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=why-long-term-technical-partnerships-beat-hiring-one-off-coders</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/why-long-term-technical-partnerships-beat-hiring-one-off-coders-cover.webp</image:loc>
      <image:caption>Two hands building a bridge from puzzle pieces illustration for long-term technical partnership</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=integrating-video-and-audio-streaming-capabilities-into-your-custom-web-app</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/integrating-video-and-audio-streaming-capabilities-into-your-custom-web-app-cover.webp</image:loc>
      <image:caption>Video player with play button and streaming waveform illustration for media streaming in web apps</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=containerization-with-docker-ensuring-your-app-runs-identically-everywhere</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/containerization-with-docker-ensuring-your-app-runs-identically-everywhere-cover.webp</image:loc>
      <image:caption>Shipping container blocks representing Docker containers running the same everywhere</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=using-ai-and-llm-apis-to-automate-customer-support-and-content-workflows</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/using-ai-and-llm-apis-to-automate-customer-support-and-content-workflows-cover.webp</image:loc>
      <image:caption>Chat assistant with human review loop illustration for AI-assisted support</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=migrating-your-online-store-to-a-custom-platform-without-losing-seo-rankings</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/migrating-your-online-store-to-a-custom-platform-without-losing-seo-rankings-cover.webp</image:loc>
      <image:caption>Store migration roadmap illustration protecting search rankings</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=edge-computing-explained-delivering-instant-content-to-global-users</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/edge-computing-explained-delivering-instant-content-to-global-users-cover.webp</image:loc>
      <image:caption>Globe with edge nodes illustration representing edge computing</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=outsourcing-web-development-how-to-avoid-common-pitfalls-and-hire-the-right-partner</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/outsourcing-web-development-how-to-avoid-common-pitfalls-and-hire-the-right-partner-cover.webp</image:loc>
      <image:caption>Handshake and team illustration on a blue gradient for outsourcing web development</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=red-flags-to-watch-out-for-when-hiring-freelance-developers</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/red-flags-to-watch-out-for-when-hiring-freelance-developers-cover.webp</image:loc>
      <image:caption>Red warning flags planted along a project timeline illustration for freelance hiring red flags</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=real-time-collaboration-tools-building-google-docs-style-features-with-websockets</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/real-time-collaboration-tools-building-google-docs-style-features-with-websockets-cover.webp</image:loc>
      <image:caption>Two cursors editing the same document with connected arrows illustration for real-time collaboration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=domain-name-system-dns-and-ssl-management-avoiding-outdated-certificates-and-downtime</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/domain-name-system-dns-and-ssl-management-avoiding-outdated-certificates-and-downtime-cover.webp</image:loc>
      <image:caption>Domain name and padlock certificate expiry illustration for DNS and SSL management</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-internal-dashboards-giving-your-team-the-data-they-need-to-move-fast</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-internal-dashboards-giving-your-team-the-data-they-need-to-move-fast-cover.webp</image:loc>
      <image:caption>Analytics dashboard with charts and KPIs illustration for internal team tools</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=automated-tax-calculation-and-compliance-for-online-stores-using-apis</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/automated-tax-calculation-and-compliance-for-online-stores-using-apis-cover.webp</image:loc>
      <image:caption>Calculator and receipt with tax lines illustration for automated tax calculation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=database-query-optimization-how-we-fixed-a-slow-dashboard-and-saved-hosting-costs</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/database-query-optimization-how-we-fixed-a-slow-dashboard-and-saved-hosting-costs-cover.webp</image:loc>
      <image:caption>Database table and query plan illustration for query optimisation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=why-your-saas-needs-a-modular-monolith-before-moving-to-microservices</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/why-your-saas-needs-a-modular-monolith-before-moving-to-microservices-cover.webp</image:loc>
      <image:caption>Stacked modules diagram representing a modular monolith application architecture</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=what-happens-after-launch-post-launch-support-iteration-and-growth-plans</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/what-happens-after-launch-post-launch-support-iteration-and-growth-plans-cover.webp</image:loc>
      <image:caption>Rocket launch trail transitioning into a growth chart illustration for post-launch support and iteration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=offline-first-web-apps-why-progressive-web-apps-pwas-matter-for-field-teams</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/offline-first-web-apps-why-progressive-web-apps-pwas-matter-for-field-teams-cover.webp</image:loc>
      <image:caption>Phone with a cloud crossed out and a sync arrow illustration for offline-first progressive web apps</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=understanding-gdpr-and-data-privacy-compliance-for-web-applications</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/understanding-gdpr-and-data-privacy-compliance-for-web-applications-cover.webp</image:loc>
      <image:caption>Padlock and personal data icons illustration for privacy compliance</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=enterprise-data-migration-moving-decades-of-records-safely-without-downtime</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/enterprise-data-migration-moving-decades-of-records-safely-without-downtime-cover.webp</image:loc>
      <image:caption>Large database moving between systems with a progress bar illustration for data migration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=multi-currency-and-multi-language-e-commerce-setup-for-global-expansion</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/multi-currency-and-multi-language-e-commerce-setup-for-global-expansion-cover.webp</image:loc>
      <image:caption>Globe with currency symbols and language bubbles illustration for global e-commerce</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=technical-seo-checklist-for-full-stack-developers-and-business-owners</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/technical-seo-checklist-for-full-stack-developers-and-business-owners-cover.webp</image:loc>
      <image:caption>Search magnifying glass and checklist illustration for technical SEO</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-plan-a-software-roadmap-that-keeps-investors-and-developers-aligned</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-plan-a-software-roadmap-that-keeps-investors-and-developers-aligned-cover.webp</image:loc>
      <image:caption>Timeline graphic representing a phased software roadmap</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=async-communication-and-project-management-how-we-keep-remote-clients-in-the-loop</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/async-communication-and-project-management-how-we-keep-remote-clients-in-the-loop-cover.webp</image:loc>
      <image:caption>Message thread, task board and calendar overlapping illustration for async project communication</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-interactive-data-visualizations-and-analytics-dashboards-for-users</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-interactive-data-visualizations-and-analytics-dashboards-for-users-cover.webp</image:loc>
      <image:caption>Dashboard with bar, line and donut charts illustration for interactive data visualisation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=managing-environment-variables-and-secrets-safely-in-production-teams</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/managing-environment-variables-and-secrets-safely-in-production-teams-cover.webp</image:loc>
      <image:caption>Key and vault illustration representing secrets management in software teams</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=real-time-data-synchronization-across-multiple-cloud-services-and-databases</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/real-time-data-synchronization-across-multiple-cloud-services-and-databases-cover.webp</image:loc>
      <image:caption>Multiple databases and cloud services synchronised through an event stream illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-a-custom-b2b-portal-handling-tiered-pricing-net-30-terms-and-bulk-orders</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-a-custom-b2b-portal-handling-tiered-pricing-net-30-terms-and-bulk-orders-cover.webp</image:loc>
      <image:caption>B2B ordering portal interface illustration with pricing tiers and purchase orders</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=headless-cms-architecture-why-modern-businesses-are-ditching-traditional-wordpress</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/headless-cms-architecture-why-modern-businesses-are-ditching-traditional-wordpress-cover.webp</image:loc>
      <image:caption>Split architecture diagram showing a content management system feeding multiple front ends</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-for-scale-architecture-choices-that-won-t-break-when-you-go-viral</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-for-scale-architecture-choices-that-won-t-break-when-you-go-viral-cover.webp</image:loc>
      <image:caption>Network node illustration on a blue gradient representing scalable application architecture</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-discovery-phase-what-happens-during-our-first-two-weeks-working-together</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-discovery-phase-what-happens-during-our-first-two-weeks-working-together-cover.webp</image:loc>
      <image:caption>Two-week calendar with discovery activities and deliverables illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=fine-tuning-open-source-llms-vs-using-commercial-apis-for-business-apps</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/fine-tuning-open-source-llms-vs-using-commercial-apis-for-business-apps-cover.webp</image:loc>
      <image:caption>Two paths labelled API and self-hosted model with a decision diamond illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=automated-backups-and-disaster-recovery-plans-every-business-should-have</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/automated-backups-and-disaster-recovery-plans-every-business-should-have-cover.webp</image:loc>
      <image:caption>Backup copies and recovery timeline illustration for disaster recovery planning</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=integrating-crm-and-email-marketing-tools-into-your-custom-web-application</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/integrating-crm-and-email-marketing-tools-into-your-custom-web-application-cover.webp</image:loc>
      <image:caption>Web app connected to CRM and email marketing tools illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=pci-dss-compliance-what-business-owners-need-to-know-about-payment-security</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/pci-dss-compliance-what-business-owners-need-to-know-about-payment-security-cover.webp</image:loc>
      <image:caption>Shield with credit card illustration for PCI-DSS payment security</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=caching-strategies-how-redis-and-cdns-can-save-your-server-and-speed-up-your-site</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/caching-strategies-how-redis-and-cdns-can-save-your-server-and-speed-up-your-site-cover.webp</image:loc>
      <image:caption>Layered cache diagram with CDN and Redis on a blue gradient</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-hidden-costs-of-technical-debt-why-cheap-code-costs-more-long-term</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-hidden-costs-of-technical-debt-why-cheap-code-costs-more-long-term-cover.webp</image:loc>
      <image:caption>Growth chart illustration showing rising maintenance cost from accumulated technical debt</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-we-estimate-software-projects-accurately-without-budget-surprises</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-we-estimate-software-projects-accurately-without-budget-surprises-cover.webp</image:loc>
      <image:caption>Estimate range bar with confidence bands and risk markers illustration for software estimation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=prompt-engineering-for-developers-building-reliable-ai-features-that-don-t-hallucinate</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/prompt-engineering-for-developers-building-reliable-ai-features-that-don-t-hallucinate-cover.webp</image:loc>
      <image:caption>Prompt template with grounded citations and a checkmark illustration for reliable AI features</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=zero-downtime-deployments-why-your-users-should-never-see-maintenance-mode</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/zero-downtime-deployments-why-your-users-should-never-see-maintenance-mode-cover.webp</image:loc>
      <image:caption>Two parallel environments switching traffic with no interruption illustration for zero-downtime deployment</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-build-and-document-a-reliable-webhook-system-for-third-party-partners</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-build-and-document-a-reliable-webhook-system-for-third-party-partners-cover.webp</image:loc>
      <image:caption>Outgoing webhook delivery with retries and signatures illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=handling-subscription-billing-and-dunning-management-without-losing-revenue</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/handling-subscription-billing-and-dunning-management-without-losing-revenue-cover.webp</image:loc>
      <image:caption>Recurring billing cycle illustration with a calendar and payment cards</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=image-optimization-strategies-for-heavy-media-and-e-commerce-platforms</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/image-optimization-strategies-for-heavy-media-and-e-commerce-platforms-cover.webp</image:loc>
      <image:caption>Image compression illustration with photos shrinking in file size</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-much-does-it-cost-to-build-a-custom-web-application-in-2026</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-much-does-it-cost-to-build-a-custom-web-application-in-2026-cover.webp</image:loc>
      <image:caption>Bar chart illustration comparing cost tiers for custom web application projects</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=fixed-price-vs-time-and-materials-contracts-which-is-best-for-your-software-project</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/fixed-price-vs-time-and-materials-contracts-which-is-best-for-your-software-project-cover.webp</image:loc>
      <image:caption>Two contract types on balance scales illustration comparing fixed price and time and materials</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-build-a-micro-saas-product-from-concept-to-first-paying-customer</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-build-a-micro-saas-product-from-concept-to-first-paying-customer-cover.webp</image:loc>
      <image:caption>Small cloud application with a subscription price tag and a first customer notification illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=infrastructure-as-code-iac-keeping-your-cloud-environments-secure-and-reproducible</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/infrastructure-as-code-iac-keeping-your-cloud-environments-secure-and-reproducible-cover.webp</image:loc>
      <image:caption>Code files generating cloud infrastructure diagram illustration for infrastructure as code</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=automating-business-operations-zapier-alternatives-vs-custom-node-js-workers</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/automating-business-operations-zapier-alternatives-vs-custom-node-js-workers-cover.webp</image:loc>
      <image:caption>Automation platform versus custom code workers comparison illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=managing-inventory-and-real-time-stock-updates-in-high-volume-e-commerce</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/managing-inventory-and-real-time-stock-updates-in-high-volume-e-commerce-cover.webp</image:loc>
      <image:caption>Warehouse shelves and stock counters illustration for inventory management</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-we-boosted-a-client-s-page-speed-score-from-40-to-99</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-we-boosted-a-client-s-page-speed-score-from-40-to-99-cover.webp</image:loc>
      <image:caption>Before and after page speed score gauge on a blue gradient</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=no-code-vs-custom-full-stack-development-which-one-does-your-business-actually-need</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/no-code-vs-custom-full-stack-development-which-one-does-your-business-actually-need-cover.webp</image:loc>
      <image:caption>Side-by-side comparison chart of no-code versus custom software development</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=what-to-look-for-when-hiring-a-full-stack-developer-or-agency-for-your-project</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/what-to-look-for-when-hiring-a-full-stack-developer-or-agency-for-your-project-cover.webp</image:loc>
      <image:caption>Checklist with magnifying glass over candidate profiles illustration for hiring a developer or agency</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=vector-databases-explained-powering-semantic-search-and-ai-memory</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/vector-databases-explained-powering-semantic-search-and-ai-memory-cover.webp</image:loc>
      <image:caption>Scattered points in a coordinate space clustered by meaning illustration for vector databases</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=cloud-hosting-showdown-aws-gcp-azure-and-paas-options-for-growing-businesses</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/cloud-hosting-showdown-aws-gcp-azure-and-paas-options-for-growing-businesses-cover.webp</image:loc>
      <image:caption>Cloud platform logos replaced by generic clouds and servers comparison illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-a-secure-public-api-to-open-up-new-revenue-streams-for-your-business</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-a-secure-public-api-to-open-up-new-revenue-streams-for-your-business-cover.webp</image:loc>
      <image:caption>API gateway with developer portal illustration for a public API business</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=preventing-cart-abandonment-ux-and-backend-fixes-that-recover-lost-sales</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/preventing-cart-abandonment-ux-and-backend-fixes-that-recover-lost-sales-cover.webp</image:loc>
      <image:caption>Shopping cart with dropped items illustration for cart abandonment</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=server-side-rendering-vs-static-site-generation-what-s-best-for-your-e-commerce-site</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/server-side-rendering-vs-static-site-generation-what-s-best-for-your-e-commerce-site-cover.webp</image:loc>
      <image:caption>Rendering pipeline diagram comparing server-side rendering and static generation</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=when-to-rewrite-vs-refactor-making-the-right-call-for-your-growing-app</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/when-to-rewrite-vs-refactor-making-the-right-call-for-your-growing-app-cover.webp</image:loc>
      <image:caption>Decision grid graphic for choosing between refactoring and rewriting software</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=case-study-revamping-a-legacy-monolith-to-double-conversion-rates-and-cut-load-times</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/case-study-revamping-a-legacy-monolith-to-double-conversion-rates-and-cut-load-times-cover.webp</image:loc>
      <image:caption>Old tangled structure being replaced by a clean modular layout illustration for a legacy modernisation case study</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=building-an-ai-powered-search-and-recommendation-engine-for-your-product</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/building-an-ai-powered-search-and-recommendation-engine-for-your-product-cover.webp</image:loc>
      <image:caption>Search bar with ranked result cards and recommendation tiles illustration for AI-powered search</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=preventing-common-web-vulnerabilities-protecting-customer-data-from-sqli-and-xss</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/preventing-common-web-vulnerabilities-protecting-customer-data-from-sqli-and-xss-cover.webp</image:loc>
      <image:caption>Code snippet with warning shield representing SQL injection and XSS protection</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=connecting-legacy-systems-to-modern-cloud-apps-via-custom-middleware</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/connecting-legacy-systems-to-modern-cloud-apps-via-custom-middleware-cover.webp</image:loc>
      <image:caption>Legacy server connected to cloud apps through a middleware layer illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=integrating-stripe-paypal-and-apple-pay-a-guide-to-seamless-checkout-flows</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/integrating-stripe-paypal-and-apple-pay-a-guide-to-seamless-checkout-flows-cover.webp</image:loc>
      <image:caption>Payment cards and wallet icons illustration for a seamless checkout flow</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=the-business-impact-of-slow-load-times-conversion-rates-seo-and-revenue</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/the-business-impact-of-slow-load-times-conversion-rates-seo-and-revenue-cover.webp</image:loc>
      <image:caption>Rising revenue chart contrasted with a slow-loading page on a blue gradient</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=from-concept-to-launch-building-a-scalable-mvp-on-a-startup-budget</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/from-concept-to-launch-building-a-scalable-mvp-on-a-startup-budget-cover.webp</image:loc>
      <image:caption>Layered architecture diagram on a blue gradient representing a scalable MVP</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=case-study-how-we-built-a-custom-platform-that-scaled-to-100k-active-users</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/case-study-how-we-built-a-custom-platform-that-scaled-to-100k-active-users-cover.webp</image:loc>
      <image:caption>Growth staircase with user count milestones illustration for a scaling case study</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-integrate-generative-ai-features-into-your-existing-web-application</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-integrate-generative-ai-features-into-your-existing-web-application-cover.webp</image:loc>
      <image:caption>Chat bubble with sparkle icon connected to a web application illustration for generative AI integration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=why-your-business-needs-a-regular-security-audit-and-how-to-prepare-for-one</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/why-your-business-needs-a-regular-security-audit-and-how-to-prepare-for-one-cover.webp</image:loc>
      <image:caption>Magnifying glass over a shield and checklist illustration for a security audit</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-custom-api-integrations-save-your-team-hours-of-manual-data-entry</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-custom-api-integrations-save-your-team-hours-of-manual-data-entry-cover.webp</image:loc>
      <image:caption>Two systems connected by API arrows replacing manual data entry illustration</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=shopify-vs-custom-headless-e-commerce-which-is-right-for-your-growing-brand</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/shopify-vs-custom-headless-e-commerce-which-is-right-for-your-growing-brand-cover.webp</image:loc>
      <image:caption>Shopping cart split between hosted platform and custom headless architecture</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=why-your-website-is-losing-customers-a-guide-to-core-web-vitals-and-speed-optimization</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/why-your-website-is-losing-customers-a-guide-to-core-web-vitals-and-speed-optimization-cover.webp</image:loc>
      <image:caption>Speedometer illustration representing website speed and Core Web Vitals</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://codeluma.ca/blog-post.php?slug=how-to-validate-your-saas-idea-in-2-weeks-without-writing-full-code</loc>
    <lastmod>2026-10-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://codeluma.ca/assets/blog/how-to-validate-your-saas-idea-in-2-weeks-without-writing-full-code-cover.webp</image:loc>
      <image:caption>Rocket illustration on a deep blue background representing a fast SaaS validation sprint</image:caption>
    </image:image>
  </url>
</urlset>
