<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>JoyousGarage</title>
    <link>https://joyousgarage.com</link>
    <description>Notes from a garage where code becomes craft. 손으로 짓고, 글로 남깁니다.</description>
    <language>ko</language>
    <lastBuildDate>Wed, 10 Jun 2026 00:32:27 GMT</lastBuildDate>
    <atom:link href="https://joyousgarage.com/rss.xml" rel="self" type="application/rss+xml" />
    <managingEditor>padawan.joy@gmail.com (Padawan Joy)</managingEditor>
    <webMaster>padawan.joy@gmail.com (Padawan Joy)</webMaster>
    
    <item>
      <title>가입을 확정하는 /api/confirm 라우트 만들기</title>
      <link>https://joyousgarage.com/writing/confirm-api-and-token-consume</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/confirm-api-and-token-consume</guid>
      <description>버튼 클릭을 받아 status를 confirmed로 바꾸고, 토큰을 일회용으로 비우는 확정 처리 라우트</description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>nextjs</category><category>double-opt-in</category><category>security</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>가입 확정 페이지 만들기</title>
      <link>https://joyousgarage.com/writing/confirm-page-and-token-check</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/confirm-page-and-token-check</guid>
      <description>토큰만 검증하고 사용자 의도를 따로 받는 가입 확정 페이지 구현</description>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>nextjs</category><category>double-opt-in</category><category>security</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>구독 가입 API 라우트 만들기</title>
      <link>https://joyousgarage.com/writing/subscribe-form-and-api</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/subscribe-form-and-api</guid>
      <description>구독 폼을 통해 이메일을 받고, 토큰 발급과 확인 메일 발송까지</description>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>nextjs</category><category>drizzle</category><category>resend</category><category>double-opt-in</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>Drizzle ORM 셋업하고 첫 테이블 만들기</title>
      <link>https://joyousgarage.com/writing/drizzle-first-migration</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/drizzle-first-migration</guid>
      <description>Drizzle을 설치하고 subscribers 스키마를 정의해 Neon에 첫 테이블을 마이그레이션하는 과정</description>
      <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>drizzle</category><category>neon</category><category>postgres</category><category>orm</category><category>migration</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>Vercel에 Neon Postgres 붙이기</title>
      <link>https://joyousgarage.com/writing/vercel-neon-postgres-setup</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/vercel-neon-postgres-setup</guid>
      <description>DB와 ORM을 고르고, Vercel에 Neon을 붙이는 과정.</description>
      <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>neon</category><category>drizzle</category><category>postgres</category><category>vercel</category><category>orm</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>Resend 도메인 인증 (SPF·DKIM·DMARC) 셋업하기</title>
      <link>https://joyousgarage.com/writing/email-auth-setup</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/email-auth-setup</guid>
      <description>Resend로 도메인을 인증하고 첫 메일을 발송하기까지, 단계별로 따라가는 기록.</description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <category>Tutorial</category>
      <category>newsletter</category><category>resend</category><category>dns</category><category>spf</category><category>dkim</category><category>dmarc</category><category>deliverability</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>뉴스레터 서비스, 직접 만들어 보려고 합니다</title>
      <link>https://joyousgarage.com/writing/building-my-own-newsletter</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/building-my-own-newsletter</guid>
      <description>Stibee도 Beehiiv도 있는데, 굳이 직접 만들기로 한 이유. 자체 구축 뉴스레터 시리즈 첫 글입니다.</description>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
      <category>Essay</category>
      <category>newsletter</category><category>indie</category><category>resend</category><category>deliverability</category><category>self-hosted</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
    <item>
      <title>AI가 강해질수록, 개발자의 깊이가 결과를 가른다</title>
      <link>https://joyousgarage.com/writing/depth-decides-result</link>
      <guid isPermaLink="true">https://joyousgarage.com/writing/depth-decides-result</guid>
      <description>AI 시대, 같은 도구로 만든 서비스의 결과가 갈리는 이유에 대한 생각</description>
      <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
      <category>Essay</category>
      <category>llm</category><category>ai</category><category>developer</category><category>learning</category><category>ai-engineering</category><category>ai-agent</category>
      <author>padawan.joy@gmail.com (Padawan Joy)</author>
    </item>
  </channel>
</rss>