<?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>https://gabrielcaiana.com/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/" /><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://gabrielcaiana.com/pt</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/" /><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://gabrielcaiana.com/about</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/about" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/about" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/about" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/pt/about</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/about" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/about" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/about" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/blog</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/pt/blog</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/tags</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/tags" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/tags" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/tags" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/pt/tags</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/tags" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/tags" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/tags" /><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/armazenamento-persistente-no-nuxt-com-unstorage/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/" /><lastmod>2025-07-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/armazenamento-persistente-no-nuxt-com-unstorage/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/armazenamento-persistente-no-nuxt-com-unstorage/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/persistent-storage-in-nuxt-with-unstorage/" /><lastmod>2025-07-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/arquitetura-modular-frontend-nuxt-layers-revoluciona-organizacao-projetos-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/" /><lastmod>2025-10-02T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/arquitetura-modular-frontend-nuxt-layers-revoluciona-organizacao-projetos-vue/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/arquitetura-modular-frontend-nuxt-layers-revoluciona-organizacao-projetos-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/modular-architecture-with-nuxt-layers-in-vue-projects/" /><lastmod>2025-10-02T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/cache-http-cdn-cloudflare/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/" /><lastmod>2025-09-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/cache-http-cdn-cloudflare/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/cache-http-cdn-cloudflare/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/http-caching-and-cdn-with-cloudflare-complete-guide/" /><lastmod>2025-09-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-armazenar-dados-no-navegador-sem-fazer-bagunca/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/" /><lastmod>2025-07-07T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/como-armazenar-dados-no-navegador-sem-fazer-bagunca/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-armazenar-dados-no-navegador-sem-fazer-bagunca/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-store-data-in-the-browser-without-making-a-mess/" /><lastmod>2025-07-07T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/how-core-web-vitals-works/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-core-web-vitals-works/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-funciona-o-core-web-vitals/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-core-web-vitals-works/" /><lastmod>2024-02-24T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/como-funciona-o-core-web-vitals/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-core-web-vitals-works/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-funciona-o-core-web-vitals/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-core-web-vitals-works/" /><lastmod>2024-02-24T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-manter-estado-componentes-entre-rotas-keepalive-nuxt-3/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/" /><lastmod>2024-08-26T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/como-manter-estado-componentes-entre-rotas-keepalive-nuxt-3/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/como-manter-estado-componentes-entre-rotas-keepalive-nuxt-3/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-preserve-component-state-between-routes-with-keepalive-in-nuxt-3/" /><lastmod>2024-08-26T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/componentes-para-debug-e-renderizacao-com-devonly-e-clientonly-no-nuxt-3/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/" /><lastmod>2024-08-31T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/componentes-para-debug-e-renderizacao-com-devonly-e-clientonly-no-nuxt-3/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/componentes-para-debug-e-renderizacao-com-devonly-e-clientonly-no-nuxt-3/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/components-for-debug-and-rendering-with-devonly-and-clientonly-in-nuxt-3/" /><lastmod>2024-08-31T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/composable-abstraction-layer-pinia-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/" /><lastmod>2026-03-23T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/composable-abstraction-layer-pinia-vue/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/composable-abstraction-layer-pinia-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/composable-abstraction-layer-the-missing-pattern-between-pinia-and-its-vue-components/" /><lastmod>2026-03-23T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/building-a-robust-architecture/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/building-a-robust-architecture/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/construindo-uma-arquitetura-robusta/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/building-a-robust-architecture/" /><lastmod>2024-01-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/construindo-uma-arquitetura-robusta/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/building-a-robust-architecture/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/construindo-uma-arquitetura-robusta/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/building-a-robust-architecture/" /><lastmod>2024-01-10T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/entendendo-as-10-heuristicas-de-nielsen/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/" /><lastmod>2022-07-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/entendendo-as-10-heuristicas-de-nielsen/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/entendendo-as-10-heuristicas-de-nielsen/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/understanding-nielsens-10-heuristics/" /><lastmod>2022-07-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/explorando-a-programacao-funcional-em-javascript/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/" /><lastmod>2024-03-30T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/explorando-a-programacao-funcional-em-javascript/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/explorando-a-programacao-funcional-em-javascript/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/exploring-functional-programming-in-javascript/" /><lastmod>2024-03-30T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/integracao-github-discord-notificacoes-pull-requests/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/" /><lastmod>2024-09-01T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/integracao-github-discord-notificacoes-pull-requests/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/integracao-github-discord-notificacoes-pull-requests/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/integration-between-github-and-discord-for-pull-request-notifications/" /><lastmod>2024-09-01T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/javascript-em-2025-guia-completo-metodos-operadores/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/" /><lastmod>2025-08-28T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/javascript-em-2025-guia-completo-metodos-operadores/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/javascript-em-2025-guia-completo-metodos-operadores/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/javascript-in-2025-complete-guide-to-the-most-popular-methods-and-operators/" /><lastmod>2025-08-28T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/metricas-para-medir-performance-em-software/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/" /><lastmod>2024-01-11T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/metricas-para-medir-performance-em-software/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/metricas-para-medir-performance-em-software/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/metrics-to-measure-software-performance/" /><lastmod>2024-01-11T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/monorepo-nestjs-pnpm-workspaces-dev-experience/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/" /><lastmod>2026-04-06T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/monorepo-nestjs-pnpm-workspaces-dev-experience/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/monorepo-nestjs-pnpm-workspaces-dev-experience/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nestjs-monorepo-with-pnpm-workspaces-how-i-structured-the-dev-experience-for-multiple-services/" /><lastmod>2026-04-06T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-4-nova-estrutura-diretorios-migracao/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/" /><lastmod>2025-09-01T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/nuxt-4-nova-estrutura-diretorios-migracao/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-4-nova-estrutura-diretorios-migracao/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nuxt-4-new-directory-structure-and-migration-guide/" /><lastmod>2025-09-01T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-4-typescript-type-safety/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/" /><lastmod>2025-09-07T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/nuxt-4-typescript-type-safety/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-4-typescript-type-safety/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/nuxt-4-typescript-and-type-safety-complete-guide/" /><lastmod>2025-09-07T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-webpack-analyze/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/" /><lastmod>2024-01-21T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/nuxt-webpack-analyze/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/nuxt-webpack-analyze/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/how-to-add-webpack-package-analysis-to-your-nuxt-project/" /><lastmod>2024-01-21T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/o-que-aprendi-com-spec-driven-development/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/" /><lastmod>2026-04-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/o-que-aprendi-com-spec-driven-development/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/o-que-aprendi-com-spec-driven-development/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/what-i-have-learned-from-building-a-product-with-spec-driven-development/" /><lastmod>2026-04-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/what-are-micro-frontends/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/what-are-micro-frontends/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/oque-e-micro-frontends/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/what-are-micro-frontends/" /><lastmod>2022-07-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/oque-e-micro-frontends/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/what-are-micro-frontends/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/oque-e-micro-frontends/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/what-are-micro-frontends/" /><lastmod>2022-07-08T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/otimizando-indexacao-com-astro/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/" /><lastmod>2025-06-15T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/otimizando-indexacao-com-astro/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/otimizando-indexacao-com-astro/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/optimizing-indexing-with-astro/" /><lastmod>2025-06-15T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/reatividade-solidjs-v-react-vs-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/" /><lastmod>2025-06-06T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://gabrielcaiana.com/pt/blog/reatividade-solidjs-v-react-vs-vue/</loc><xhtml:link rel="alternate" hreflang="en" href="https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/" /><xhtml:link rel="alternate" hreflang="pt-BR" href="https://gabrielcaiana.com/pt/blog/reatividade-solidjs-v-react-vs-vue/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://gabrielcaiana.com/blog/reactivity-solidjs-vs-react-vs-vue/" /><lastmod>2025-06-06T00:00:00.000Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
</urlset>