<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:3000/vi/home</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/home" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/home" />
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>http://localhost:3000/vi/courses</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/courses" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/courses" />
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog" />
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://localhost:3000/vi/contact</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/contact" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/contact" />
<changefreq>weekly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://localhost:3000/vi/privacy</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/privacy" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/privacy" />
<changefreq>weekly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>http://localhost:3000/vi/terms</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/terms" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/terms" />
<changefreq>weekly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/init-mount-markdown-pipeline</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/init-mount-markdown-pipeline" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/init-mount-markdown-pipeline" />
<lastmod>2026-06-16T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/tu-redis-cache-sang-cqrs-projection</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/tu-redis-cache-sang-cqrs-projection" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/tu-redis-cache-sang-cqrs-projection" />
<lastmod>2026-06-16T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/kafka-vs-rabbitmq-chon-cai-nao</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/kafka-vs-rabbitmq-chon-cai-nao" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/kafka-vs-rabbitmq-chon-cai-nao" />
<lastmod>2026-06-15T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/start-here-monorepo-tour</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/start-here-monorepo-tour" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/start-here-monorepo-tour" />
<lastmod>2026-06-14T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/graphql-leaf-module-convention</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/graphql-leaf-module-convention" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/graphql-leaf-module-convention" />
<lastmod>2026-06-13T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/ai-balancer-multi-provider-routing</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/ai-balancer-multi-provider-routing" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/ai-balancer-multi-provider-routing" />
<lastmod>2026-06-12T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/rag-qdrant-langchain</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/rag-qdrant-langchain" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/rag-qdrant-langchain" />
<lastmod>2026-06-11T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/challenge-ai-grading-outcome-approach</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/challenge-ai-grading-outcome-approach" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/challenge-ai-grading-outcome-approach" />
<lastmod>2026-06-10T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/keycloak-two-device-sessions</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/keycloak-two-device-sessions" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/keycloak-two-device-sessions" />
<lastmod>2026-06-09T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/realtime-socketio-cdc-backbone</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/realtime-socketio-cdc-backbone" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/realtime-socketio-cdc-backbone" />
<lastmod>2026-06-08T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/coding-judge-judge0-bullmq</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/coding-judge-judge0-bullmq" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/coding-judge-judge0-bullmq" />
<lastmod>2026-06-07T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:3000/vi/blog/media-pipeline-ffmpeg-dash</loc>
<xhtml:link rel="alternate" hreflang="vi" href="http://localhost:3000/vi/blog/media-pipeline-ffmpeg-dash" />
<xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/blog/media-pipeline-ffmpeg-dash" />
<lastmod>2026-06-06T00:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
</urlset>
