<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://pavlealeksic.com</loc>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://pavlealeksic.com/about</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://pavlealeksic.com/contact</loc>
<changefreq>yearly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog</loc>
<lastmod>2026-06-25T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/frontend</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/backend</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/ai</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/databases</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/saas</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/ecommerce</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/services/cloud</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/ai-engineering</loc>
<lastmod>2026-06-25T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/cloud-and-devops</loc>
<lastmod>2026-06-13T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/databases-and-storage</loc>
<lastmod>2026-06-06T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/javascript-and-typescript</loc>
<lastmod>2026-06-12T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/react-and-next-js</loc>
<lastmod>2026-06-24T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/saas-development</loc>
<lastmod>2026-06-18T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/security-and-best-practices</loc>
<lastmod>2026-05-18T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/category/web-development</loc>
<lastmod>2026-05-04T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/building-production-rag</loc>
<lastmod>2026-06-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/nextjs-server-actions-forms-mutations</loc>
<lastmod>2026-06-24T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/choosing-a-vector-database-2026</loc>
<lastmod>2026-06-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/react-server-components-mental-model</loc>
<lastmod>2026-06-20T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/saas-background-jobs-queues</loc>
<lastmod>2026-06-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/structured-outputs-and-tool-calling</loc>
<lastmod>2026-06-17T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/nextjs-16-caching-demystified</loc>
<lastmod>2026-06-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/kubernetes-for-developers</loc>
<lastmod>2026-06-13T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/typescript-discriminated-unions</loc>
<lastmod>2026-06-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/llm-agents-that-work</loc>
<lastmod>2026-06-11T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/you-dont-need-useeffect</loc>
<lastmod>2026-06-09T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/postgres-explain-analyze-guide</loc>
<lastmod>2026-06-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/evaluating-llm-apps</loc>
<lastmod>2026-06-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/typescript-generics-explained</loc>
<lastmod>2026-06-03T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/nextjs-streaming-suspense-app-router</loc>
<lastmod>2026-05-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/typescript-error-handling-result-types</loc>
<lastmod>2026-05-27T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/cutting-llm-cost-and-latency</loc>
<lastmod>2026-05-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/postgres-connection-pooling-serverless</loc>
<lastmod>2026-05-21T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/owasp-top-10-fullstack-2026</loc>
<lastmod>2026-05-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/do-you-need-redis</loc>
<lastmod>2026-05-14T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/securing-llm-applications</loc>
<lastmod>2026-05-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/stripe-billing-for-saas</loc>
<lastmod>2026-05-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/web-caching-explained</loc>
<lastmod>2026-05-04T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/drizzle-vs-prisma-typescript-orm-2026</loc>
<lastmod>2026-05-01T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/postgresql-indexing-explained-which-index-type</loc>
<lastmod>2026-04-29T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/nextjs-16-authentication-workos-authkit</loc>
<lastmod>2026-04-26T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/npm-supply-chain-attacks-protect-codebase</loc>
<lastmod>2026-04-24T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/designing-a-permissions-system</loc>
<lastmod>2026-04-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/react-state-management-2026</loc>
<lastmod>2026-04-14T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/jwt-vs-session-cookies</loc>
<lastmod>2026-04-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/blue-green-canary-deployments</loc>
<lastmod>2026-04-06T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/rate-limiting-strategies</loc>
<lastmod>2026-04-02T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/zod-in-production</loc>
<lastmod>2026-03-25T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/gitops-with-argocd</loc>
<lastmod>2026-03-18T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/rest-graphql-trpc-2026</loc>
<lastmod>2026-03-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/saas-audit-logs</loc>
<lastmod>2026-03-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/production-nodejs-dockerfile</loc>
<lastmod>2026-02-24T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/zero-downtime-db-migrations</loc>
<lastmod>2026-02-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/cloud-cost-optimization</loc>
<lastmod>2026-02-05T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/secrets-management</loc>
<lastmod>2026-01-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/github-actions-cicd-patterns</loc>
<lastmod>2026-01-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/observability-logs-metrics-traces</loc>
<lastmod>2026-01-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/webhooks-done-right</loc>
<lastmod>2025-12-22T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/building-a-saas-that-scales</loc>
<lastmod>2025-12-10T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/typescript-utility-types</loc>
<lastmod>2025-11-28T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/core-web-vitals-2026</loc>
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/terraform-pragmatic-start</loc>
<lastmod>2025-10-30T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/postgres-fulltext-vs-search-engine</loc>
<lastmod>2025-10-08T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://pavlealeksic.com/blog/cors-csrf-same-origin-explained</loc>
<lastmod>2025-09-15T00:00:00.000Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
</urlset>
