<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://jotechblog.netlify.app</loc>
<lastmod>2026-08-14T17:18:44.338Z</lastmod>
<changefreq>daily</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/exploring-django-s-new-rust-powered-api-framework-django-bolt</loc>
<lastmod>2026-08-14T17:18:06.594Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/how-to-add-swagger-for-django-with-django-rest-framework-using-drf-spectacular</loc>
<lastmod>2026-08-14T17:18:06.543Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/httponly-jwt-authentication-with-angular-django-rest-framework</loc>
<lastmod>2026-08-14T17:18:06.550Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/postgresql-master-slave-replication-with-docker</loc>
<lastmod>2026-08-14T17:18:06.549Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/building-a-postgresql-high-availability-setup-with-docker-compose-haproxy-pgbouncer</loc>
<lastmod>2026-08-14T17:18:06.582Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/mastering-asynchronous-tasks-with-celery-in-django</loc>
<lastmod>2026-08-14T17:18:06.550Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/scaling-to-1-million-users-database-sharding-with-django</loc>
<lastmod>2026-08-14T17:18:06.733Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/master-your-code-quality-a-guide-to-pre-commit-hooks-in-python</loc>
<lastmod>2026-08-14T17:18:09.744Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/how-to-add-test-cases-in-fastapi-and-why-they-matter</loc>
<lastmod>2026-08-14T17:18:09.676Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/mypy-for-fastapi-a-practical-beginner-guide-using-this-project</loc>
<lastmod>2026-08-14T17:18:09.692Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/how-to-implement-logout-from-all-devices-with-django-simplejwt</loc>
<lastmod>2026-08-14T17:18:09.673Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/integrating-groq-mcp-and-langchain-in-a-fastapi-project</loc>
<lastmod>2026-08-14T17:18:09.679Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/learning-elasticsearch-my-first-real-project</loc>
<lastmod>2026-08-14T17:18:09.676Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/my-first-hands-on-experience-with-aws-s3-presigned-url-uploads</loc>
<lastmod>2026-08-14T17:18:09.730Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/aws-s3-learning-journey-part-2-using-iam-roles-instead-of-access-keys</loc>
<lastmod>2026-08-14T17:18:09.678Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/aws-learning-journey-part-3-creating-an-iam-user-instead-of-sharing-the-root-account</loc>
<lastmod>2026-08-14T17:18:13.082Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/aws-internet-gateway-explained-what-really-happens-when-you-access-your-ec2-public-ip</loc>
<lastmod>2026-08-14T17:18:13.080Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/ci-cd-with-github-actions-fastapi-aws-ec2-complete-beginner-guide</loc>
<lastmod>2026-08-14T17:18:13.079Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/building-first-crud-api-with-aws-dynamodb-fastapi-and-boto3</loc>
<lastmod>2026-08-14T17:18:13.078Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/blog/dynamodb-going-beyond-basic-crud</loc>
<lastmod>2026-08-14T17:18:13.093Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series</loc>
<lastmod>2026-08-14T17:18:44.106Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/django-bolt</loc>
<lastmod>2025-11-25T17:14:15.975Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/httponly-jwt-authentication</loc>
<lastmod>2026-01-15T03:00:22.835Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/system-design</loc>
<lastmod>2026-02-20T18:59:08.270Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/messaging-event-driven-systems</loc>
<lastmod>2026-03-31T09:33:00.929Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/mcp</loc>
<lastmod>2026-07-07T15:33:55.398Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jotechblog.netlify.app/series/aws</loc>
<lastmod>2026-07-20T07:09:19.701Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
