<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Wonsuk Choi</title>
    <link>https://wonsukchoi.co/en/blog</link>
    <description>Thoughts on building products, AI, and growing without paid acquisition.</description>
    <language>en</language>
    <atom:link href="https://wonsukchoi.co/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 16 May 2026 23:32:09 GMT</lastBuildDate>
    
    <item>
      <title>My AI Coding Workflow in 2026: What I Actually Use and What I Skip</title>
      <link>https://wonsukchoi.co/en/blog/ai-coding-workflow-2026</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/ai-coding-workflow-2026</guid>
      <description>I run more than 10 production apps as one developer. Here&apos;s how AI fits into my actual daily workflow: the tools, the patterns, what moved the needle, and what I stopped using.</description>
      <pubDate>Wed, 13 May 2026 17:34:29 GMT</pubDate>
    </item>
    <item>
      <title>Type-Safe Next.js App Router: Server Actions, Params, and Error Handling That Actually Scale</title>
      <link>https://wonsukchoi.co/en/blog/type-safe-nextjs-app-router</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/type-safe-nextjs-app-router</guid>
      <description>App Router introduced async params, server actions, and new patterns for forms and mutations — and TypeScript support for all of it has sharp edges. Here are the patterns I use to keep things type-safe without fighting the framework.</description>
      <pubDate>Wed, 13 May 2026 08:41:08 GMT</pubDate>
    </item>
    <item>
      <title>Supabase Multi-Tenancy in Production: Schema, RLS, and the Patterns That Actually Work</title>
      <link>https://wonsukchoi.co/en/blog/supabase-multi-tenancy-production</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/supabase-multi-tenancy-production</guid>
      <description>Running multi-tenant apps on Supabase is mostly a schema and RLS problem — until it isn&apos;t. Here are the patterns I use across production apps: tenant isolation, JWT claims, request-time config, middleware, and the gotchas that cost the most time.</description>
      <pubDate>Wed, 13 May 2026 08:38:50 GMT</pubDate>
    </item>
    <item>
      <title>Building a Knowledge Base Chat with Supabase and Claude</title>
      <link>https://wonsukchoi.co/en/blog/knowledge-base-chat-supabase-claude</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/knowledge-base-chat-supabase-claude</guid>
      <description>A complete walkthrough of building a RAG-based knowledge base chat: pgvector schema, embedding models, the retrieval function, chunking strategy, and the Claude prompt pattern — including the gotchas that cause silent failures.</description>
      <pubDate>Thu, 30 Apr 2026 01:35:00 GMT</pubDate>
    </item>
    <item>
      <title>Supabase RLS in Production: The Patterns That Actually Work</title>
      <link>https://wonsukchoi.co/en/blog/supabase-rls-production-patterns</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/supabase-rls-production-patterns</guid>
      <description>Row Level Security is powerful but full of silent failures and performance traps. Here are the patterns I use across seven production apps — and the gotchas that cost me the most time.</description>
      <pubDate>Wed, 29 Apr 2026 21:31:00 GMT</pubDate>
    </item>
    <item>
      <title>AI SEO in 2026: What&apos;s Actually Working vs What&apos;s Hype</title>
      <link>https://wonsukchoi.co/en/blog/ai-seo-2026-whats-working</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/ai-seo-2026-whats-working</guid>
      <description>AI SEO is real and it matters — but most advice about it is wrong. Here&apos;s what&apos;s actually moving the needle across my sites in 2026: the signals that work, the tactics that don&apos;t, and what I actually do.</description>
      <pubDate>Wed, 29 Apr 2026 21:20:22 GMT</pubDate>
    </item>
    <item>
      <title>Self-Hosting on Coolify vs Vercel: What I Actually Run in Production</title>
      <link>https://wonsukchoi.co/en/blog/coolify-vs-vercel-self-hosting</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/coolify-vs-vercel-self-hosting</guid>
      <description>I run seven production sites and use both Coolify and Vercel — for different reasons. Here&apos;s the honest breakdown: what each platform actually does better, what I run where, and how to decide which fits your setup.</description>
      <pubDate>Wed, 29 Apr 2026 21:18:17 GMT</pubDate>
    </item>
    <item>
      <title>How to Get Freelance Clients as a Developer Without Running Ads</title>
      <link>https://wonsukchoi.co/en/blog/freelance-clients-without-ads</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/freelance-clients-without-ads</guid>
      <description>Most advice about getting freelance clients involves spending money on ads or cold-pitching strangers. Here&apos;s what actually worked for me: the channels, the positioning, and the specific moves that bring in inbound work.</description>
      <pubDate>Wed, 29 Apr 2026 21:14:49 GMT</pubDate>
    </item>
    <item>
      <title>Next.js App Router Caching: What Changed, What Breaks, and How I Handle It</title>
      <link>https://wonsukchoi.co/en/blog/nextjs-app-router-caching</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/nextjs-app-router-caching</guid>
      <description>Next.js caching in the App Router is powerful but confusing — especially after v15 flipped the defaults. Here&apos;s what the four caches actually do, what breaks silently, and the patterns I use in every production app.</description>
      <pubDate>Wed, 29 Apr 2026 21:11:43 GMT</pubDate>
    </item>
    <item>
      <title>Why Your Website Needs Multiple Languages — And How to Build It Right</title>
      <link>https://wonsukchoi.co/en/blog/multilingual-seo-i18n-guide</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/multilingual-seo-i18n-guide</guid>
      <description>Multi-language websites unlock SEO traffic most sites never see. Here&apos;s the full picture: why it matters, how to implement it technically, and the infrastructure decision that most developers get wrong.</description>
      <pubDate>Thu, 23 Apr 2026 19:28:54 GMT</pubDate>
    </item>
    <item>
      <title>llms.txt: What It Is, Why Your Static Version Is Already Wrong, and How to Fix It</title>
      <link>https://wonsukchoi.co/en/blog/llms-txt-ai-seo</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/llms-txt-ai-seo</guid>
      <description>I already had an llms.txt. It was stale the moment I added the second blog post. Here&apos;s what I replaced it with — and what actually matters for AI search visibility.</description>
      <pubDate>Thu, 23 Apr 2026 19:07:06 GMT</pubDate>
    </item>
    <item>
      <title>Building a Multi-Tenant SaaS on a Single Supabase Database</title>
      <link>https://wonsukchoi.co/en/blog/multi-tenant-saas-single-supabase-database</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/multi-tenant-saas-single-supabase-database</guid>
      <description>How I run seven branded sites — one Next.js codebase, one Supabase project. A practical walkthrough of hostname resolution, feature flags, data isolation with RLS, and tenant-aware routing.</description>
      <pubDate>Tue, 21 Apr 2026 17:26:40 GMT</pubDate>
    </item>
    <item>
      <title>How I Built a Personal Ops Dashboard with Next.js, Supabase, and AI</title>
      <link>https://wonsukchoi.co/en/blog/personal-ops-dashboard-nextjs-supabase</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/personal-ops-dashboard-nextjs-supabase</guid>
      <description>A look inside the private Next.js dashboard I built to manage 13 live sites — site status monitoring, personal AI, offline-capable notes, multi-tenant architecture, and more.</description>
      <pubDate>Tue, 21 Apr 2026 17:21:53 GMT</pubDate>
    </item>
    <item>
      <title>Why Your React App Needs to Migrate to Next.js (And How to Do It)</title>
      <link>https://wonsukchoi.co/en/blog/migrate-react-to-nextjs</link>
      <guid isPermaLink="true">https://wonsukchoi.co/en/blog/migrate-react-to-nextjs</guid>
      <description>A practical guide to migrating from React to Next.js — what you gain, how long it takes, and the gotchas nobody warns you about.</description>
      <pubDate>Mon, 20 Apr 2026 21:25:02 GMT</pubDate>
    </item>
  </channel>
</rss>