<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://codefromscratch.org/</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog</loc>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://codefromscratch.org/newsletter</loc>
<changefreq>yearly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/course-waitlist</loc>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://codefromscratch.org/contact</loc>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://codefromscratch.org/privacy</loc>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://codefromscratch.org/terms</loc>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://codefromscratch.org/impressum</loc>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/what-is-vibe-coding</loc>
<lastmod>2026-11-02T17:00:45.230Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/what-is-web-development-beginners-guide</loc>
<lastmod>2026-11-10T07:24:45.086Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/modern-full-stack-2026</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/prisma-vs-drizzle-decision</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/stripe-nextjs-setup</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/structured-logging-nextjs</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/ship-nextjs-production</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/managed-postgres-comparison</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/deploying-full-stack-apps-to-vercel-the-definitive-guide</loc>
<lastmod>2026-02-14T13:47:22.886Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/supabase-authentication-complete-guide-with-next-js</loc>
<lastmod>2026-02-09T13:47:25.869Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/testing-react-applications-a-complete-strategy</loc>
<lastmod>2026-01-20T13:47:37.711Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/nextauth-vs-lucia-vs-better-auth</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/zod-at-trust-boundaries</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/rollback-without-feature-flags</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/domain-ssl-email-dns-setup</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/login-form-validation-client-and-server</loc>
<lastmod>2026-10-23T12:04:41.239Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/render-lists-without-repeating-code</loc>
<lastmod>2026-11-02T18:02:50.655Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/html-css-beginners-build-first-web-page</loc>
<lastmod>2026-11-10T07:24:50.552Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/css-flexbox-vs-grid-real-layouts</loc>
<lastmod>2026-10-30T14:07:58.001Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/authentication-in-next-js-with-nextauth-js-v5</loc>
<lastmod>2026-02-18T00:02:09.507Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/css-grid-layout-the-complete-visual-guide</loc>
<lastmod>2026-03-01T13:47:13.854Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/prisma-orm-from-zero-to-production</loc>
<lastmod>2026-02-24T13:47:16.615Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/tailwind-css-v4-what-s-new-and-how-to-migrate</loc>
<lastmod>2026-01-30T13:47:31.577Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/react-state-management-in-2025-zustand-vs-redux-vs-context</loc>
<lastmod>2026-03-06T13:47:10.477Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/stripe-webhook-verification</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/observability-solo-saas</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/why-nextjs-app-router</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/react-server-components-explained</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/production-grade-code-checklist</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/api-rate-limiting-nextjs</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/error-boundaries-done-right</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/vercel-vs-self-host</loc>
<lastmod>2026-10-20T09:45:18.789Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/why-courses-leave-you-feeling-like-you-know-nothing</loc>
<lastmod>2026-10-20T18:50:58.857Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/learn-web-development-from-scratch-with-ai</loc>
<lastmod>2026-11-10T07:24:56.817Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/pricing-table-from-scratch-css</loc>
<lastmod>2026-11-10T10:22:37.069Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/area/frontend</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/area/backend-and-data</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/area/production</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/web-fundamentals</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/cloud-and-hosting</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/javascript-frameworks</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/apis-and-integrations</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/databases</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/devops-and-infrastructure</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/security</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/architecture-and-patterns</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/developer-experience-and-career</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/ai-and-machine-learning</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/backend-as-a-service</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/css-ecosystem</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/testing</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://codefromscratch.org/blog/category/web-development</loc>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
</urlset>
