<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tuvio Blog</title>
    <link>https://tuvio.dev/blog</link>
    <description>Practical security guides for apps built with AI: what tends to go wrong, how to check your own, and what to change.</description>
    <language>en</language>
    <lastBuildDate>Mon, 19 Oct 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://tuvio.dev/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Accidentally Pushed .env File to GitHub? Fix It in This Order</title>
      <link>https://tuvio.dev/blog/accidentally-pushed-env-file-to-github</link>
      <description>Accidentally pushed .env file to GitHub? Deleting it doesn't take the keys back. Rotate first, check logs, stop tracking it, then decide on history.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/accidentally-pushed-env-file-to-github</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Leaked keys and secrets</category>
    </item>
    <item>
      <title>How to Hide an API Key in the Frontend: The Honest Answer</title>
      <link>https://tuvio.dev/blog/hide-api-key-in-frontend</link>
      <description>How to hide an API key in frontend code? You can't. Anything the browser loads is readable. Which keys can be public, and the small proxy that fixes the rest.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/hide-api-key-in-frontend</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Leaked keys and secrets</category>
    </item>
    <item>
      <title>How to Fix npm Vulnerabilities Without Breaking Your App</title>
      <link>https://tuvio.dev/blog/how-to-fix-npm-vulnerabilities</link>
      <description>How to fix npm vulnerabilities in the right order: see which ones ship, fix what attackers already exploit first, and skip the npm audit fix --force panic.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/how-to-fix-npm-vulnerabilities</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Vulnerable packages</category>
    </item>
    <item>
      <title>Is Lovable Safe? The Platform, Your App, and What to Check</title>
      <link>https://tuvio.dev/blog/is-lovable-safe</link>
      <description>Is Lovable safe? The platform mostly is. The app you built is your job. What CVE-2025-48757 exposed, what Lovable scans, and a pre-launch check.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/is-lovable-safe</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>AI-built apps</category>
    </item>
    <item>
      <title>Stripe Webhook Signature Verification: Do It, and Fail Closed</title>
      <link>https://tuvio.dev/blog/stripe-webhook-signature-verification</link>
      <description>Stripe webhook signature verification stops fake payment events. Correct Next.js and Express code, the fail-open mistakes, and fixing 'verification failed'.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/stripe-webhook-signature-verification</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Payments and webhooks</category>
    </item>
    <item>
      <title>Is the Supabase Anon Key Safe? Yes, If Every Table Has RLS</title>
      <link>https://tuvio.dev/blog/supabase-anon-key-safe</link>
      <description>Is the Supabase anon key safe in your frontend? Yes, it is meant to be public. What it can reach is up to RLS and grants. Check your project in 5 minutes.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/supabase-anon-key-safe</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Supabase</category>
    </item>
    <item>
      <title>Supabase RLS Disabled in Public: What It Means and How to Fix It</title>
      <link>https://tuvio.dev/blog/supabase-rls-disabled-in-public</link>
      <description>Supabase RLS disabled in public means anyone with your public key can read that table. How to check, enable RLS and add policies without breaking the app.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/supabase-rls-disabled-in-public</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Supabase</category>
    </item>
    <item>
      <title>Supabase RLS Policy Examples, Plus 5 Mistakes That Leak Data</title>
      <link>https://tuvio.dev/blog/supabase-rls-policy-examples</link>
      <description>Copy-paste Supabase RLS policy examples for owner-only rows, public reads and teams, plus five policy mistakes that quietly let any user read every row.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/supabase-rls-policy-examples</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Supabase</category>
    </item>
    <item>
      <title>Supabase Service Role Key: Where It Belongs and What If It Leaks</title>
      <link>https://tuvio.dev/blog/supabase-service-role-key</link>
      <description>The Supabase service role key bypasses every RLS policy. Where it is safe to use, how to check your build for it, and what to do if it leaked.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/supabase-service-role-key</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Supabase</category>
    </item>
    <item>
      <title>Vibe Coding Security Checklist: 12 Checks Before You Launch</title>
      <link>https://tuvio.dev/blog/vibe-coding-security-checklist</link>
      <description>A vibe coding security checklist ordered by damage: database rules, leaked keys, webhooks, exploited packages, AI output. A 2-minute check and a fix for each.</description>
      <guid isPermaLink="true">https://tuvio.dev/blog/vibe-coding-security-checklist</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <category>Before you launch</category>
    </item>
  </channel>
</rss>
