<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>raindev.fyi</title>
    <link>https://raindev.fyi/</link>
    <description>Interactive guides for Git, deployment, Docker, CI/CD, security, testing, dev environments, and the real-world workflows behind software.</description>
    <language>en</language>
    <atom:link href="https://raindev.fyi/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Backend Hosting: Railway, Render, Fly.io, and VPS Basics</title>
      <link>https://raindev.fyi/guides/backend-hosting/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/backend-hosting/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Why a long-running server is a different beast from a static site, and when to reach for a managed platform versus a VPS.</description>
      <category>Deploy</category>
      <category>hosting</category>
      <category>backend</category>
      <category>railway</category>
      <category>render</category>
      <category>fly</category>
      <category>vps</category>
    </item>
    <item>
      <title>Connecting Frontend to Backend in Production</title>
      <link>https://raindev.fyi/guides/connecting-frontend-to-backend/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/connecting-frontend-to-backend/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>API URLs, CORS, HTTPS, env vars, and cookies, and why the localhost URL that worked all week dies the moment you deploy.</description>
      <category>Deploy</category>
      <category>deployment</category>
      <category>cors</category>
      <category>api</category>
      <category>https</category>
      <category>environment-variables</category>
      <category>auth</category>
    </item>
    <item>
      <title>Custom Domains and DNS Without Losing Your Mind</title>
      <link>https://raindev.fyi/guides/custom-domains-and-dns/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/custom-domains-and-dns/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Registrars, nameservers, A and CNAME records, apex vs www, TTL, and propagation, explained without the jargon fog.</description>
      <category>Deploy</category>
      <category>dns</category>
      <category>domains</category>
      <category>registrar</category>
      <category>cname</category>
      <category>nameservers</category>
      <category>deployment</category>
    </item>
    <item>
      <title>Debugging Setup: Logs, Breakpoints, and Reading the Crime Scene</title>
      <link>https://raindev.fyi/guides/debugging-setup/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/debugging-setup/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Debugging as a process, not a panic ritual: logs, devtools, the Network tab, stack traces, breakpoints, VS Code launch configs, and a checklist.</description>
      <category>Dev Setup</category>
      <category>debugging</category>
      <category>devtools</category>
      <category>logs</category>
      <category>vs-code</category>
    </item>
    <item>
      <title>Docker Compose: Running Your App, Database, and Redis Without 12 Terminal Tabs</title>
      <link>https://raindev.fyi/guides/docker-compose/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/docker-compose/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>One file to start a Node API, PostgreSQL, and Redis together, with the networks, volumes, and env vars wired up.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>docker-compose</category>
      <category>postgres</category>
      <category>redis</category>
    </item>
    <item>
      <title>Docker Debugging: When the Container Is Running But Your App Is Dead Inside</title>
      <link>https://raindev.fyi/guides/docker-debugging/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/docker-debugging/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>A practical survival guide for Docker problems: ps, logs, exec, inspect, rebuilding without cache, and reasoning through it built but does not work.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>debugging</category>
      <category>logs</category>
      <category>troubleshooting</category>
    </item>
    <item>
      <title>Docker Networking: Why localhost Betrays You</title>
      <link>https://raindev.fyi/guides/docker-networking/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/docker-networking/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Why localhost means something different inside a container, how Compose service names work, and the API connection bugs that follow.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>networking</category>
      <category>compose</category>
      <category>localhost</category>
    </item>
    <item>
      <title>Docker Volumes: Why Your Database Keeps Forgetting Everything</title>
      <link>https://raindev.fyi/guides/docker-volumes/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/docker-volumes/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Why containers are disposable but your data should not be, named volumes versus bind mounts, and how to reset a database on purpose instead of by accident.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>volumes</category>
      <category>postgres</category>
      <category>data</category>
    </item>
    <item>
      <title>Dockerizing a Full-Stack App: Frontend, Backend, Database, and Pain</title>
      <link>https://raindev.fyi/guides/dockerizing-a-full-stack-app/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/dockerizing-a-full-stack-app/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>How Docker fits a real app with a frontend, a Node backend, Postgres, and Redis, and why the frontend is often Dockerized for dev but shipped as static files.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>full-stack</category>
      <category>compose</category>
      <category>postgres</category>
      <category>redis</category>
    </item>
    <item>
      <title>Dotfiles: Your Dev Setup&apos;s Save File</title>
      <link>https://raindev.fyi/guides/dotfiles/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/dotfiles/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The dot-prefixed config files that keep a project consistent across machines: which to commit, which to keep local, and how they stop projects from rotting.</description>
      <category>Dev Setup</category>
      <category>dotfiles</category>
      <category>config</category>
      <category>gitignore</category>
      <category>editorconfig</category>
    </item>
    <item>
      <title>ESLint and Prettier: Making Your Code Less Annoying to Read</title>
      <link>https://raindev.fyi/guides/eslint-and-prettier/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/eslint-and-prettier/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The difference between a linter and a formatter, why ESLint and Prettier sometimes fight, format on save, project config, and running them in CI.</description>
      <category>Dev Setup</category>
      <category>eslint</category>
      <category>prettier</category>
      <category>linting</category>
      <category>formatting</category>
    </item>
    <item>
      <title>Frontend Hosting: Cloudflare Pages, Vercel, Netlify, and GitHub Pages</title>
      <link>https://raindev.fyi/guides/frontend-hosting/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/frontend-hosting/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>What a frontend host actually does, how the beginner-friendly options compare, and how to pick one without starting a brand war.</description>
      <category>Deploy</category>
      <category>hosting</category>
      <category>cloudflare-pages</category>
      <category>vercel</category>
      <category>netlify</category>
      <category>github-pages</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Honey, I Cloned the Repo</title>
      <link>https://raindev.fyi/guides/honey-i-cloned-the-repo/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/honey-i-cloned-the-repo/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>How to actually get code off GitHub: git clone versus ZIP downloads, remote-tracking branches, and the difference between git pull and git fetch.</description>
      <category>Git</category>
      <category>git</category>
      <category>github</category>
      <category>clone</category>
      <category>remote</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Images, Containers, and Dockerfiles: The Three Things Everyone Mixes Up</title>
      <link>https://raindev.fyi/guides/images-containers-dockerfiles/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/images-containers-dockerfiles/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The recipe, the snapshot, and the running instance: what an image, a container, and a Dockerfile actually are, and how docker build and docker run connect them.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>images</category>
      <category>containers</category>
      <category>dockerfile</category>
    </item>
    <item>
      <title>Local Databases: Running Postgres, Redis, and Friends Without Crying</title>
      <link>https://raindev.fyi/guides/local-databases/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/local-databases/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Why real apps need a local database, how to run Postgres and Redis with Docker Compose, connection strings, seeds, migrations, resets, and the bugs in between.</description>
      <category>Dev Setup</category>
      <category>postgres</category>
      <category>redis</category>
      <category>database</category>
      <category>docker-compose</category>
    </item>
    <item>
      <title>Node Versions: Why Your App Works on One Machine and Explodes on Another</title>
      <link>https://raindev.fyi/guides/node-versions/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/node-versions/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Why the Node.js version matters, how to check and pin it with .nvmrc, engines, nvm, fnm, or Volta, and the bugs a mismatch causes.</description>
      <category>Dev Setup</category>
      <category>node</category>
      <category>nvm</category>
      <category>versions</category>
      <category>engines</category>
    </item>
    <item>
      <title>Package Managers: npm, pnpm, Yarn, and Why Lockfiles Matter</title>
      <link>https://raindev.fyi/guides/package-managers/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/package-managers/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>What npm, pnpm, and Yarn actually do, the role of package.json and lockfiles, npm install versus npm ci, and why deleting a lockfile is goblin behavior.</description>
      <category>Dev Setup</category>
      <category>npm</category>
      <category>pnpm</category>
      <category>yarn</category>
      <category>lockfiles</category>
    </item>
    <item>
      <title>Ports, Volumes, and Environment Variables: The Docker Why Is Nothing Working Trio</title>
      <link>https://raindev.fyi/guides/ports-volumes-environment-variables/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/ports-volumes-environment-variables/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The three Docker settings that break most beginner setups, and exactly what 3000:3000 really means.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>ports</category>
      <category>volumes</category>
      <category>environment-variables</category>
    </item>
    <item>
      <title>Preview Deploys vs Production Deploys</title>
      <link>https://raindev.fyi/guides/preview-vs-production-deploys/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/preview-vs-production-deploys/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Branch deploys, pull-request previews, rollbacks, and the safe feature-branch-to-production workflow that keeps you from breaking the live site.</description>
      <category>Deploy</category>
      <category>deployment</category>
      <category>preview-deploys</category>
      <category>production</category>
      <category>workflow</category>
      <category>github</category>
    </item>
    <item>
      <title>Production Docker: Dev Containers Are Not Automatically Production Containers</title>
      <link>https://raindev.fyi/guides/production-docker/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/production-docker/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Multi-stage builds, smaller images, non-root users, health checks, restart policies, and secrets, and why npm run dev is not a production command.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>production</category>
      <category>multi-stage</category>
      <category>security</category>
    </item>
    <item>
      <title>Project Scripts: Turning 12 Commands Into npm run dev</title>
      <link>https://raindev.fyi/guides/project-scripts/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/project-scripts/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The scripts block in package.json, the standard scripts every project should have, and running frontend and backend together.</description>
      <category>Dev Setup</category>
      <category>npm-scripts</category>
      <category>package-json</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Static Sites vs Servers: What Are You Actually Deploying?</title>
      <link>https://raindev.fyi/guides/static-sites-vs-servers/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/static-sites-vs-servers/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Static builds, SPAs, SSR apps, backend APIs, full-stack apps, and databases, and why each one needs a different kind of home.</description>
      <category>Deploy</category>
      <category>deployment</category>
      <category>hosting</category>
      <category>static</category>
      <category>server</category>
      <category>ssr</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Terminal Without Fear: Commands You Actually Need</title>
      <link>https://raindev.fyi/guides/terminal-without-fear/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/terminal-without-fear/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The handful of terminal commands you actually use day to day, plus paths and flags, without the become-a-Linux-wizard detour.</description>
      <category>Dev Setup</category>
      <category>terminal</category>
      <category>cli</category>
      <category>shell</category>
      <category>command-line</category>
    </item>
    <item>
      <title>VS Code Setup: Extensions, Settings, and Not Fighting Your Editor</title>
      <link>https://raindev.fyi/guides/vs-code-setup/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/vs-code-setup/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Setting up VS Code for real projects: the extensions worth installing, format on save, and why user settings and workspace settings are different.</description>
      <category>Dev Setup</category>
      <category>vs-code</category>
      <category>editor</category>
      <category>extensions</category>
      <category>settings</category>
    </item>
    <item>
      <title>Your First Dockerfile: Packaging a Node App Without Summoning a Demon</title>
      <link>https://raindev.fyi/guides/your-first-dockerfile/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/your-first-dockerfile/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>A real working Dockerfile for a Node and Express app, every instruction explained, plus .dockerignore and the node_modules trap.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>dockerfile</category>
      <category>node</category>
      <category>express</category>
    </item>
    <item>
      <title>What CI/CD Actually Does</title>
      <link>https://raindev.fyi/guides/what-ci-cd-actually-does/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/what-ci-cd-actually-does/</guid>
      <pubDate>Fri, 01 Mar 2024 00:00:00 GMT</pubDate>
      <description>Learn what CI/CD means, what should happen before code gets merged or deployed, and how to set up a basic pipeline with GitHub Actions.</description>
      <category>CI/CD</category>
      <category>ci-cd</category>
      <category>github-actions</category>
      <category>automation</category>
      <category>testing</category>
      <category>deployment</category>
    </item>
    <item>
      <title>Docker Without the Buzzwords</title>
      <link>https://raindev.fyi/guides/docker-without-buzzwords/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/docker-without-buzzwords/</guid>
      <pubDate>Thu, 15 Feb 2024 00:00:00 GMT</pubDate>
      <description>Understand what Docker actually is and does (images, containers, Dockerfiles, ports, volumes, and Compose) without the enterprise hype.</description>
      <category>Docker</category>
      <category>docker</category>
      <category>containers</category>
      <category>dockerfile</category>
      <category>docker-compose</category>
      <category>devops</category>
    </item>
    <item>
      <title>Environment Variables Explained</title>
      <link>https://raindev.fyi/guides/environment-variables/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/environment-variables/</guid>
      <pubDate>Thu, 01 Feb 2024 00:00:00 GMT</pubDate>
      <description>Learn what environment variables are, where they live, how to use them safely, and how not to accidentally leak your secrets.</description>
      <category>Dev Setup</category>
      <category>environment-variables</category>
      <category>security</category>
      <category>dotenv</category>
      <category>secrets</category>
      <category>config</category>
    </item>
    <item>
      <title>How Localhost Becomes a Real Website</title>
      <link>https://raindev.fyi/guides/localhost-to-production/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/localhost-to-production/</guid>
      <pubDate>Sat, 20 Jan 2024 00:00:00 GMT</pubDate>
      <description>Understand the full journey from your local dev server to a live domain: DNS, hosting, builds, and everything in between.</description>
      <category>Deploy</category>
      <category>deployment</category>
      <category>hosting</category>
      <category>dns</category>
      <category>vercel</category>
      <category>netlify</category>
      <category>production</category>
    </item>
    <item>
      <title>Git Beyond Add, Commit, Push</title>
      <link>https://raindev.fyi/guides/git-beyond-add-commit-push/</link>
      <guid isPermaLink="true">https://raindev.fyi/guides/git-beyond-add-commit-push/</guid>
      <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
      <description>Learn the actual Git workflow behind branches, commits, pull requests, and merge conflicts, the way professional teams use it.</description>
      <category>Git</category>
      <category>git</category>
      <category>branches</category>
      <category>pull-requests</category>
      <category>merge</category>
      <category>workflow</category>
    </item>
  </channel>
</rss>
