<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://cryshansen.github.io/blog/2025/ngrx-localstorage-tutorial/</loc> <lastmod>2025-03-26T14:24:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/studio-booking-tutorial/</loc> <lastmod>2025-07-10T14:24:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/building-docker-github-actions-container/</loc> <lastmod>2025-10-23T01:59:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/fixing-port-use-in-docker/</loc> <lastmod>2025-10-23T01:59:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/react-login-feature/</loc> <lastmod>2025-12-18T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/react-login-feature-routing-setup/</loc> <lastmod>2025-12-20T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/react-login-01-layout/</loc> <lastmod>2025-12-22T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/react-login-02-UI-tailwind/</loc> <lastmod>2025-12-23T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2025/react-login-03-state-hooks/</loc> <lastmod>2025-12-27T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/getting-started-react-app/</loc> <lastmod>2026-01-02T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/jsx-vs-tsx-mixed-react-apps/</loc> <lastmod>2026-01-02T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-authentication-adding-password-strength-meter/</loc> <lastmod>2026-01-02T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/using-github-profesionally/</loc> <lastmod>2026-01-02T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-extracting-password-inputs-components/</loc> <lastmod>2026-01-03T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/setting-up-nvm-on-macos/</loc> <lastmod>2026-01-03T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-03-guarding-routes/</loc> <lastmod>2026-01-06T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-04-auth-api-code/</loc> <lastmod>2026-01-06T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-04-auth-api-decoupling/</loc> <lastmod>2026-01-06T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-04-auth-api-endpoints/</loc> <lastmod>2026-01-06T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-04-auth-api-implementation-express/</loc> <lastmod>2026-01-06T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-05-auth-context-session-persistence/</loc> <lastmod>2026-01-10T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-05-auth-context-cookie-persistence/</loc> <lastmod>2026-01-10T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-06-testing-login-feature/</loc> <lastmod>2026-01-20T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/why-github-branch-discipline-in-git-isnt-optional/</loc> <lastmod>2026-01-20T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/what-github-doesnt-teach/</loc> <lastmod>2026-01-26T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/post-6-testing-suite/</loc> <lastmod>2026-01-28T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-login-07-include-login-feature-in-another-app/</loc> <lastmod>2026-01-29T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/react-chatbot-widget-feature/</loc> <lastmod>2026-02-03T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/the-gpu-less-ai-server-running-heavy-py/</loc> <lastmod>2026-02-10T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/designing-multi-tenant-saas-where-industries-feel-brand/</loc> <lastmod>2026-03-15T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/docker-cheat-sheet-for-the-mindless/</loc> <lastmod>2026-03-19T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/ses-multi-tenant-email-service/</loc> <lastmod>2026-04-12T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/ses-scheduled-nurture-sequences/</loc> <lastmod>2026-04-12T13:45:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/building-sovereign-social-automation/</loc> <lastmod>2026-04-15T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/ses-bounce-complaint-handling/</loc> <lastmod>2026-04-15T13:30:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/layer3-jwt-authentication/</loc> <lastmod>2026-05-12T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/security-auditing-layers-multitenant-saas/</loc> <lastmod>2026-05-12T00:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/aws-ses-email-setup/</loc> <lastmod>2026-05-12T13:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/layer1-nginx-ssl-termination/</loc> <lastmod>2026-05-12T14:00:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/layer2-tenant-resolution/</loc> <lastmod>2026-05-12T14:10:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/layer4-api-key-authentication/</loc> <lastmod>2026-05-12T14:30:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/blog/2026/layer5-spring-security-roles-cors/</loc> <lastmod>2026-05-12T14:40:00+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/drupal-projects/artog-co/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/java-projects/bookit/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/java-projects/calendar/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/chartcom/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/drupal-projects/emtp/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/flashcards/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/python-projects/flask-generate-sales/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/java-projects/fortune-ai/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/java-projects/happy2be/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/python-projects/happyfaces/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/java-projects/lazy-image-loader/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/python-projects/license-spring-api/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/drupal-projects/pinmento/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/python-projects/scraper-master/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/studio-booker/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/wp-artographic/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/projects/zackly-rite-spa/</loc> <lastmod>2026-05-14T00:37:43+00:00</lastmod> </url> <url> <loc>https://cryshansen.github.io/</loc> </url> <url> <loc>https://cryshansen.github.io/books/</loc> </url> <url> <loc>https://cryshansen.github.io/cv/</loc> </url> <url> <loc>https://cryshansen.github.io/_pages/dropdown/</loc> </url> <url> <loc>https://cryshansen.github.io/projects/</loc> </url> <url> <loc>https://cryshansen.github.io/publications/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/react-login/</loc> </url> <url> <loc>https://cryshansen.github.io/repositories/</loc> </url> <url> <loc>https://cryshansen.github.io/teaching/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/2025/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/2026/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/angular/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/local-storage/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/login/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/authentication/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/auth/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/cart/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/local-storage/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/booking/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/architecture/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/devops/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/spring-boot/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/docker/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ports/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/react/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/signup/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/reset-password/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/auth-flow/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ui/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/tailwind-ui/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/javascript/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/frontend/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/vite/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/web-development/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/typescript/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/validation/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ui-components/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ux/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/git/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/github/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/workflow/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/best-practices/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/careers/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/actions/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/nvm/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/nodejs/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/macos/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/dev-environment/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/devops/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/react-router/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/layouts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/guards/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/cookies/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/testing/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/rtl/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/jest/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/git-rebase/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/git-stash/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/git-branch/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/test-suite/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/integration/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/chatbot/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/integrations/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/api/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/pyton/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/gpu-less/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ai-server/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/multi-tenant/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/platforms/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/branding/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/aws/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/java/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/restart/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/compose/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ses/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/email/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/marketing/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/scheduling/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/nurture/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/saas/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/automation/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/api/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/meta/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/sns/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/deliverability/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/jwt/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/security/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/oauth2/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/smtp/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/nginx/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/ssl/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/tls/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/lets-encrypt/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/hibernate/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/data-isolation/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/api-key/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/spring-security/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/authorization/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/cors/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/tag/roles/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/angular-posts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/auth/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/devops-posts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/github-posts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/react-posts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/react-login-series/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/frontend/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/javascript/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/node/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/tooling/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/routing/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/architecture/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/testing-posts/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/ai/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/gpu-less/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/saas-platforms/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/docker/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/engineering/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/backend/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/marketing-tech/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/category/infrastructure/</loc> </url> <url> <loc>https://cryshansen.github.io/books/2026/</loc> </url> <url> <loc>https://cryshansen.github.io/books/tag/top-100/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/classics/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/crime/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/historical-fiction/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/mystery/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/novels/</loc> </url> <url> <loc>https://cryshansen.github.io/books/category/thriller/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/2/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/3/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/4/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/5/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/6/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/7/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/8/</loc> </url> <url> <loc>https://cryshansen.github.io/blog/page/9/</loc> </url> <url> <loc>https://cryshansen.github.io/googlec372a211b1df0fe3.html</loc> <lastmod>2026-05-14T00:37:13+00:00</lastmod> </url> </urlset>