<?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>DEV Community: ai_pmer</title>
    <description>The latest articles on DEV Community by ai_pmer (@hunkwu).</description>
    <link>https://dev.to/hunkwu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3928908%2Fe5f8dc25-b985-464e-834c-4d0f5925ecea.jpeg</url>
      <title>DEV Community: ai_pmer</title>
      <link>https://dev.to/hunkwu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hunkwu"/>
    <language>en</language>
    <item>
      <title>Show DEV: GreetingCardGo – Building a Template-First AI Greeting Card Maker with Next.js</title>
      <dc:creator>ai_pmer</dc:creator>
      <pubDate>Tue, 10 Nov 2026 03:43:59 +0000</pubDate>
      <link>https://dev.to/hunkwu/show-dev-greetingcardgo-building-a-template-first-ai-greeting-card-maker-with-nextjs-4gk</link>
      <guid>https://dev.to/hunkwu/show-dev-greetingcardgo-building-a-template-first-ai-greeting-card-maker-with-nextjs-4gk</guid>
      <description>&lt;h2&gt;
  
  
  The Story Behind GreetingCardGo
&lt;/h2&gt;

&lt;p&gt;When you want to send someone a heartfelt birthday wish, a thank-you note, or a holiday card, the common options often fall into two extremes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generic plain text messages&lt;/strong&gt; on chat apps, which feel rushed and lack personal touch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex graphic design software&lt;/strong&gt; (like Photoshop or bloated multi-purpose design suites), where choosing fonts, layout spacing, and exports feels overwhelming for non-designers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To bridge this gap, we built &lt;a href="https://greetingcardgo.com" rel="noopener noreferrer"&gt;GreetingCardGo&lt;/a&gt; — a web-based, template-first digital greeting card generator designed to let anyone create polished, personal cards in under two minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ready-to-Edit Templates&lt;/strong&gt;: Curated collections covering birthdays, weddings, thank-you notes, invitations, and seasonal holidays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-Browser Customization&lt;/strong&gt;: Clean interactive editor where you can personalize typography, colors, and layout directly without complex layers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Assisted Writing &amp;amp; Translation&lt;/strong&gt;: Intelligent copy assistance to refine heartfelt messages across multiple languages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant High-Res Export &amp;amp; Sharing&lt;/strong&gt;: Share via a dedicated link or download clean card assets ready to print or message.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Technical Stack &amp;amp; Architecture
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework&lt;/strong&gt;: &lt;a href="https://nextjs.org" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; 14 with App Router and React Server Components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS for responsive and fluid typography across mobile and desktop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting &amp;amp; Edge Delivery&lt;/strong&gt;: Hosted on Vercel with global CDN caching for instant template preview loading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO &amp;amp; Performance&lt;/strong&gt;: Core Web Vitals optimized with structured semantic metadata and fast LCP rendering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the live web app: &lt;a href="https://greetingcardgo.com" rel="noopener noreferrer"&gt;https://greetingcardgo.com&lt;/a&gt;. We'd love your feedback, questions, or ideas for new templates!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Image Compression &amp; Privacy: Why You Shouldn't Upload Private Photos to Online Tools</title>
      <dc:creator>ai_pmer</dc:creator>
      <pubDate>Wed, 13 May 2026 09:25:07 +0000</pubDate>
      <link>https://dev.to/hunkwu/image-compression-privacy-why-you-shouldnt-upload-private-photos-to-online-tools-1aij</link>
      <guid>https://dev.to/hunkwu/image-compression-privacy-why-you-shouldnt-upload-private-photos-to-online-tools-1aij</guid>
      <description>&lt;p&gt;Every day, millions of people drag photos into online compression tools without thinking about where those images actually go. The answer, for most popular tools, is: &lt;strong&gt;to someone else's server&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For generic photos this may be acceptable. For private images, it's a risk worth understanding.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your image is uploaded via HTTPS to the tool's servers (or a third-party CDN)&lt;/li&gt;
&lt;li&gt;The image is processed by their algorithm on their hardware&lt;/li&gt;
&lt;li&gt;The compressed result is returned to your browser for download&lt;/li&gt;
&lt;li&gt;The original and/or processed image is stored temporarily (duration varies by policy)&lt;/li&gt;
&lt;li&gt;Depending on the tool, your image data may be logged, analyzed, or used for model training&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most reputable tools delete files within 1–24 hours. But "temporarily stored" still means your image existed on their infrastructure — subject to their security practices, their data residency, and their privacy policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Images Should You Never Upload?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛂 &lt;strong&gt;Passport &amp;amp; ID photos&lt;/strong&gt; — Biometric data. Use a local tool.&lt;/li&gt;
&lt;li&gt;🏥 &lt;strong&gt;Medical images&lt;/strong&gt; — May be subject to HIPAA or GDPR&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Unreleased product designs&lt;/strong&gt; — Proprietary IP&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;Signed contracts &amp;amp; legal documents&lt;/strong&gt; — Confidential PII&lt;/li&gt;
&lt;li&gt;💳 &lt;strong&gt;Financial statements&lt;/strong&gt; — Account numbers, balances&lt;/li&gt;
&lt;li&gt;👤 &lt;strong&gt;Photos of children&lt;/strong&gt; — Parental responsibility&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;NDA-covered client work&lt;/strong&gt; — You may be contractually prohibited&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool-by-Tool Privacy Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Processing&lt;/th&gt;
&lt;th&gt;Uploaded?&lt;/th&gt;
&lt;th&gt;Safe for Private Photos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TinyPNG&lt;/td&gt;
&lt;td&gt;Server-side&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⚠️ Use with caution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compressor.io&lt;/td&gt;
&lt;td&gt;Server-side&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⚠️ Use with caution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iLoveIMG&lt;/td&gt;
&lt;td&gt;Server-side&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⚠️ Use with caution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Squoosh&lt;/td&gt;
&lt;td&gt;Browser (WASM)&lt;/td&gt;
&lt;td&gt;❌ Never&lt;/td&gt;
&lt;td&gt;✅ Safe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ImgMin&lt;/td&gt;
&lt;td&gt;Browser (Canvas API)&lt;/td&gt;
&lt;td&gt;❌ Never&lt;/td&gt;
&lt;td&gt;✅ Safe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How to Verify a Tool Processes Locally (30 seconds)
&lt;/h2&gt;

&lt;p&gt;You don't have to take anyone's word for it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the image compression tool in your browser&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;DevTools&lt;/strong&gt; (&lt;code&gt;F12&lt;/code&gt; / &lt;code&gt;Cmd+Option+I&lt;/code&gt; on Mac)&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Network&lt;/strong&gt; tab and clear the log&lt;/li&gt;
&lt;li&gt;Drop an image to compress&lt;/li&gt;
&lt;li&gt;Watch the Network tab — if your image is sent anywhere, you'll see it here&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For browser-only tools like Squoosh or &lt;a href="https://imgmin.pro" rel="noopener noreferrer"&gt;ImgMin&lt;/a&gt;, you'll see &lt;strong&gt;zero upload requests&lt;/strong&gt;. Your image never leaves your browser.&lt;/p&gt;

</description>
      <category>imgmin</category>
      <category>tinypng</category>
      <category>tinyimg</category>
    </item>
  </channel>
</rss>
