<?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: chuanbuilds</title>
    <description>The latest articles on DEV Community by chuanbuilds (@xiaojia7788).</description>
    <link>https://dev.to/xiaojia7788</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%2F3934283%2Ff09f8acd-a946-4882-b570-c88744993267.png</url>
      <title>DEV Community: chuanbuilds</title>
      <link>https://dev.to/xiaojia7788</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xiaojia7788"/>
    <language>en</language>
    <item>
      <title>I Built a Free Invoice Generator for Freelancers — Here's What Shipping Solo Taught Me</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Thu, 30 Jul 2026 07:46:45 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/i-built-a-free-invoice-generator-for-freelancers-heres-what-shipping-solo-taught-me-34g6</link>
      <guid>https://dev.to/xiaojia7788/i-built-a-free-invoice-generator-for-freelancers-heres-what-shipping-solo-taught-me-34g6</guid>
      <description>&lt;p&gt;Like a lot of freelancers, I got frustrated with the same two bad options for sending invoices: hand-formatting them in Word, or signing up for a full accounting suite just to export a PDF.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;InvoiceFormly&lt;/strong&gt; (&lt;a href="https://invoiceformly.com" rel="noopener noreferrer"&gt;https://invoiceformly.com&lt;/a&gt;) — a free, browser-based invoice generator. Type your line items, drop in your logo, and download a clean PDF. No sign-up required for basic use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; (App Router) deployed on &lt;strong&gt;Cloudflare Pages&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PayPal Subscriptions&lt;/strong&gt; for the optional Pro tier&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The interesting bits
&lt;/h2&gt;

&lt;p&gt;The trickiest parts were PDF rendering fidelity across browsers and handling tax/rounding correctly for multiple currencies. I kept the editor and the exported PDF layout in sync so what you see is exactly what gets sent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm posting
&lt;/h2&gt;

&lt;p&gt;I'm a solo indie developer and this is my first real SaaS. If you send invoices as a freelancer or run a small business, give it a try: &lt;a href="https://invoiceformly.com" rel="noopener noreferrer"&gt;https://invoiceformly.com&lt;/a&gt;. I'd genuinely love feedback — especially from anyone who's solved cross-currency tax edge cases cleanly.&lt;/p&gt;

&lt;p&gt;Happy to answer anything about the build in the comments.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>saas</category>
    </item>
    <item>
      <title>I killed my campervan battery on night one. So I built a power calculator.</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Fri, 17 Jul 2026 00:28:29 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/i-killed-my-campervan-battery-on-night-one-so-i-built-a-power-calculator-b38</link>
      <guid>https://dev.to/xiaojia7788/i-killed-my-campervan-battery-on-night-one-so-i-built-a-power-calculator-b38</guid>
      <description>&lt;p&gt;The first night in the van, I ran the fridge, charged a laptop, and left a light on. By 11pm the battery was dead and my phone was at 2%. I'd "estimated" my power needs the way you estimate how much pizza to order — vaguely, and wrong.&lt;/p&gt;

&lt;p&gt;Turns out off-grid power isn't that complicated, it's just unforgiving if you guess. You need to know how many watts each thing pulls, for how many hours a day, and then size a battery and solar to cover it with some margin. The math is simple; doing it in your head at a campsite is not.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://camppowercalc.com" rel="noopener noreferrer"&gt;CampPowerCalc&lt;/a&gt;. You tell it the appliances you actually run — fan, fridge, laptop, lights, water pump — and roughly how long each runs, and it works out the watt-hours, then sizes the battery and solar you'd want for vanlife, RV, or just a weekend off-grid. It uses real appliance draw data and straight physics, no "trust me bro" fudge factors.&lt;/p&gt;

&lt;p&gt;The thing I like is it shows the gap. My first plan was way under-sized; seeing the number made me buy one bigger battery instead of discovering the shortfall at 2am in the woods. Different setups need different answers, so treat the result as a solid starting point and sanity-check it against your own gear — but it beats guessing and eating cold food.&lt;/p&gt;

&lt;p&gt;If you're planning any off-grid power, it's here: &lt;a href="https://camppowercalc.com" rel="noopener noreferrer"&gt;https://camppowercalc.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>tools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a tiny import-duty calculator because the official ones are a maze</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Thu, 16 Jul 2026 01:54:07 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/i-built-a-tiny-import-duty-calculator-because-the-official-ones-are-a-maze-3cb2</link>
      <guid>https://dev.to/xiaojia7788/i-built-a-tiny-import-duty-calculator-because-the-official-ones-are-a-maze-3cb2</guid>
      <description>&lt;p&gt;A few months ago a friend asked me to help figure out the tariff on a synthesizer he wanted to buy from a shop in Japan and ship to the US. Simple question, right? How much duty will this actually owe?&lt;/p&gt;

&lt;p&gt;Six tabs and an hour later, I still didn't have a clean answer. The official sources exist — they're just buried in HS-code tables written for customs brokers, not humans. You're expected to know that a "synthesizer" maps to a specific harmonized code, then cross-reference the MFN rate, then remember that the rate depends on where the thing was &lt;em&gt;made&lt;/em&gt;, not where you bought it.&lt;/p&gt;

&lt;p&gt;So I built the thing I wished existed: &lt;a href="https://tariffpedia.com" rel="noopener noreferrer"&gt;TariffPedia&lt;/a&gt;. You type a product name or paste an HS code, pick the destination (US, EU, UK, or China for now), and it shows the representative MFN duty rate with a link straight to the official government source behind each number. No account, no paywall, no "sign up to see the result."&lt;/p&gt;

&lt;p&gt;The part I cared about most was the source links. Anyone can quote a percentage; the useful thing is being one click from the page that actually says it, so you can verify before you rely on it. Last week I used it to sanity-check a camera lens I was importing, and the ten seconds it took beat the alternative of guessing and hoping the courier didn't slap on a surprise fee.&lt;/p&gt;

&lt;p&gt;One honest caveat: these are &lt;em&gt;representative&lt;/em&gt; MFN rates. The real number shifts with the product's country of origin, trade agreements, and the occasional exemption, and I'm not a customs broker. For anything with real money behind it, check the official source (TariffPedia links to it) or ask a licensed broker. I just wanted the guessing to stop for the small, everyday "wait, will this get taxed?" questions.&lt;/p&gt;

&lt;p&gt;If you've ever stared at a customs form wondering what number goes where, it's here: &lt;a href="https://tariffpedia.com" rel="noopener noreferrer"&gt;https://tariffpedia.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fintech</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Digital Nomad Taxes: the basics before you panic</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Tue, 14 Jul 2026 01:05:56 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/digital-nomad-taxes-the-basics-before-you-panic-1i29</link>
      <guid>https://dev.to/xiaojia7788/digital-nomad-taxes-the-basics-before-you-panic-1i29</guid>
      <description>&lt;p&gt;Everyone's "just work from Bali" story skips the boring part: you probably still owe tax. Being a digital nomad is a lifestyle, not a tax category. Here's what actually matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where you're taxed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;US citizens&lt;/strong&gt; are taxed on worldwide income regardless of where they live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most others&lt;/strong&gt; are taxed where they're a tax resident — commonly the 183-day rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double-taxation treaties&lt;/strong&gt; exist between many countries so you're not charged twice, but you must actually claim them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two levers US expats use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Earned Income Exclusion (FEIE)&lt;/strong&gt; — excludes a chunk of earned income if you meet the residency test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Tax Credit&lt;/strong&gt; — offsets US tax by what you already paid abroad.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Don't DIY the hard stuff
&lt;/h2&gt;

&lt;p&gt;If you've got income in three countries or a business structure, talk to someone. The cost of a mistake beats the cost of a consult.&lt;/p&gt;

&lt;p&gt;I keep the plain-language version and simple calculators at &lt;a href="https://taxedabroad.com" rel="noopener noreferrer"&gt;Taxed Abroad&lt;/a&gt; — it's where I dump what I learn so I don't forget it. Use it to know which questions to ask, then confirm with a pro.&lt;/p&gt;

</description>
      <category>taxes</category>
      <category>digitalnomad</category>
      <category>expat</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>Two image tools I use that need zero install</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Mon, 13 Jul 2026 12:00:50 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/two-free-image-tools-i-use-that-need-zero-install-4mbk</link>
      <guid>https://dev.to/xiaojia7788/two-free-image-tools-i-use-that-need-zero-install-4mbk</guid>
      <description>&lt;p&gt;I edit a lot of images for the web and I got sick of heavy desktop apps and sketchy upload sites. Two browser tools ended up in my daily rotation:&lt;/p&gt;

&lt;h2&gt;
  
  
  CompactJPG — shrink images without losing the plot
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://compactjpg.com" rel="noopener noreferrer"&gt;CompactJPG&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free online image compressor for JPG/PNG/WebP. The part I care about: it processes files locally in your browser, so nothing gets uploaded to some server. You drag in a photo, pick a level, and download a much smaller file that still looks fine. I use it before publishing any screenshot or product shot — shaves page weight without visible quality loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  ClarifyPix — fix an image with AI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://clarifypix.com" rel="noopener noreferrer"&gt;ClarifyPix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a photo is blurry, low-res, or has a messy background, ClarifyPix runs AI on it to upscale, deblur, remove the background, or touch it up. You upload the photo for processing (deleted after an hour), and there's no free tier — a $1.99/week trial covers short projects. Handy for ecommerce listings, profile pics, or old photos you want to rescue.&lt;/p&gt;




&lt;p&gt;Both are part of a small set of tools I keep at &lt;a href="https://untrackedtools.com" rel="noopener noreferrer"&gt;Untracked Tools&lt;/a&gt;. CompactJPG is free with no account; ClarifyPix needs an account and a paid trial. If your workflow still involves opening Photoshop to crop a JPEG, try the compressor first — it'll save you five minutes a day.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>indiehackers</category>
      <category>tools</category>
    </item>
    <item>
      <title>I shipped 8 small web tools for overseas users — here's the messy truth</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Sun, 12 Jul 2026 02:18:37 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/i-shipped-8-small-web-tools-for-overseas-users-heres-the-messy-truth-1051</link>
      <guid>https://dev.to/xiaojia7788/i-shipped-8-small-web-tools-for-overseas-users-heres-the-messy-truth-1051</guid>
      <description>&lt;p&gt;A while back I stopped waiting for the one big SaaS idea and started building a bunch of small, boring tools that each solve exactly one problem. The theory: a portfolio of tiny sites, each monetized with ads or a subscription, compounding traffic over months instead of betting everything on a launch.&lt;/p&gt;

&lt;p&gt;It's been equal parts fun and humbling. Here's what's live so far and what I actually learned shipping them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Images &amp;amp; AI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://compactjpg.com" rel="noopener noreferrer"&gt;CompactJPG&lt;/a&gt; — a free online image compressor. Files are processed locally in the browser, nothing gets uploaded, and it keeps quality better than I expected.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://clarifypix.com" rel="noopener noreferrer"&gt;ClarifyPix&lt;/a&gt; — AI image fixes: upscale a blurry photo, remove a background, clean up an image. You upload a photo for processing (deleted after an hour); no free tier, but a $1.99/week trial.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Calculators (people love a good calculator)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://camppowercalc.com" rel="noopener noreferrer"&gt;Camp Power Calc&lt;/a&gt; — type in your devices (fridge, lights, phone, rice cooker) and it tells you the total draw, battery size, and solar panel you need so you don't lose power mid-trip.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://roompaintcalc.com" rel="noopener noreferrer"&gt;Room Paint Calculator&lt;/a&gt; — punch in room size, doors, windows and get liters of paint plus a rough cost.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://frycalc.com" rel="noopener noreferrer"&gt;Fry Calc&lt;/a&gt; — temps, time, and oil for frying / air fryer based on ingredient and portion. Made it after one too many ruined batches.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://coldplungecalc.com" rel="noopener noreferrer"&gt;Cold Plunge Calculator&lt;/a&gt; — dial in water temp, duration, and how much ice to add based on body weight and volume, so cold therapy stays safe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Collections &amp;amp; money&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://untrackedtools.com" rel="noopener noreferrer"&gt;Untracked Tools&lt;/a&gt; — the hub that lists every small tool I build in one place. No ads, instant load.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://taxedabroad.com" rel="noopener noreferrer"&gt;Taxed Abroad&lt;/a&gt; — tax guidance for expats and digital nomads: residency, treaties, filing obligations, in plain language.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Specific beats clever.&lt;/strong&gt; "Camp power calculator" gets searched. "Smart outdoor energy platform" does not. I wasted a week on a clever name for the paint tool before renaming it to what people actually type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distribution is the real product.&lt;/strong&gt; Building took days; getting the first 100 visitors took longer. Submitting to directories, writing a few posts, and answering questions in the right places moved the needle more than any feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculators quietly convert.&lt;/strong&gt; They're not flashy, but someone who just calculated their campsite battery need is a warm visitor. AdSense on these pages also performs better than on vague landing pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't fake the numbers.&lt;/strong&gt; Early on I was tempted to post MRR screenshots I didn't have. Didn't. The builders who share real, including ugly, numbers are the ones people trust and link to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;The plan is to keep shipping one focused tool at a time, link them together through &lt;a href="https://untrackedtools.com" rel="noopener noreferrer"&gt;Untracked Tools&lt;/a&gt;, and let SEO + a few good backlinks do the slow work. No growth hacks, just consistent small bets.&lt;/p&gt;

&lt;p&gt;If you're building small tools too, the hub above is the easiest way to see everything in one spot. Happy to compare notes with anyone on the same path.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Image Compression for People Who Just Want Smaller Photos</title>
      <dc:creator>chuanbuilds</dc:creator>
      <pubDate>Sat, 16 May 2026 05:51:52 +0000</pubDate>
      <link>https://dev.to/xiaojia7788/image-compression-for-people-who-just-want-smaller-photos-30cn</link>
      <guid>https://dev.to/xiaojia7788/image-compression-for-people-who-just-want-smaller-photos-30cn</guid>
      <description>&lt;p&gt;Most email providers cap attachments at 20–25 MB (Gmail and Yahoo at 25 MB, Outlook at 20 MB). Modern iPhone photos typically range from 3 MB to 12 MB depending on mode, so a handful of attachments will hit the limit. The same problem appears everywhere: website uploads that reject large files, social media platforms that take forever to load your photos, cloud storage filling up faster than expected.&lt;/p&gt;

&lt;p&gt;The solution is image compression — making files smaller without making them look worse. Here's what you actually need to know, explained without jargon.&lt;/p&gt;

&lt;p&gt;Why Are My Photos So Large?&lt;br&gt;
A digital photo is a grid of pixels, and each pixel stores color information. A single photo from a modern smartphone might be 4032 × 3024 pixels — that's over 12 million pixels. Each pixel needs at least 3 bytes (one for red, green, and blue), so the raw data is around 36 MB before any compression.&lt;/p&gt;

&lt;p&gt;JPEG compression reduces this dramatically by discarding details that the human eye can't easily see. That 36 MB of raw data becomes a 3–6 MB JPEG. But even at 3 MB, a dozen photos will blow past most email limits.&lt;/p&gt;

&lt;p&gt;What Compression Actually Does&lt;br&gt;
Think of compression like summarizing a long document. A good summary preserves the key points while cutting the word count. Image compression does the same thing with visual information — it keeps the details that matter and simplifies or discards the ones that don't.&lt;/p&gt;

&lt;p&gt;When you set a JPEG to "quality 80" (the default in CompactJPG), you're telling the compressor: "keep 80% of the visual information that matters most." The result is a file that looks almost identical to the original but is 40–70% smaller.&lt;/p&gt;

&lt;p&gt;The Quality Sweet Spot&lt;br&gt;
There's a quality sweet spot for most photos: somewhere between 70 and 85. Below 70, you start to notice artifacts — blocky patches, color banding, and blurry edges. Above 85, you're paying a steep file-size penalty for improvements that are nearly invisible.&lt;/p&gt;

&lt;p&gt;Here's a rough guide:&lt;/p&gt;

&lt;p&gt;Quality 85–95: For photos you plan to print or edit further. Minimal quality loss, but files are still relatively large.&lt;br&gt;
Quality 70–85: The sweet spot for web, email, and social media. Files are 40–70% smaller than the original, and quality is excellent.&lt;br&gt;
Quality 50–70: For thumbnails or where file size is the top priority. Noticeable quality loss on close inspection, but fine for small images.&lt;br&gt;
Below 50: Only for extreme compression needs. Expect visible artifacts.&lt;br&gt;
PNG vs JPEG: Which Should You Use?&lt;br&gt;
The short answer: use JPEG for photos, PNG for graphics with text, logos, or screenshots.&lt;/p&gt;

&lt;p&gt;JPEG was designed for photographs — images with smooth color gradients and lots of detail. It's excellent at compressing these while keeping quality high.&lt;/p&gt;

&lt;p&gt;PNG was designed for images that need pixel-perfect clarity: logos with sharp edges, screenshots with text, or any image that needs transparency. PNG compression is lossless, meaning it never degrades quality, but it can't compress photos as efficiently as JPEG.&lt;/p&gt;

&lt;p&gt;For web images, this matters a lot. A photo saved as PNG might be 5× larger than the same photo saved as a quality-80 JPEG, with no visible quality difference.&lt;/p&gt;

&lt;p&gt;What About WebP?&lt;br&gt;
WebP is a newer format developed by Google that aims to be better than both JPEG and PNG. At the same quality level, WebP files are typically 25–35% smaller than JPEG. It also supports transparency like PNG.&lt;/p&gt;

&lt;p&gt;Today, all modern browsers support WebP, so it's a great choice for the web. CompactJPG can compress WebP images just like JPEG, using the same quality slider.&lt;/p&gt;

&lt;p&gt;The Easiest Way to Compress Images&lt;br&gt;
CompactJPG was built for exactly this use case. Here's how simple it is:&lt;/p&gt;

&lt;p&gt;Drop your images on the page — or click to browse, or paste from clipboard.&lt;br&gt;
Click Compress. That's it. The default quality (80) works for most images.&lt;br&gt;
Compare the result using the side-by-side view if you want to check quality.&lt;br&gt;
Download individual files or all at once as a ZIP.&lt;br&gt;
And here's the important part: your images never leave your device. Everything happens in your browser using WebAssembly technology. No uploads, no servers, no privacy concerns. Just smaller images.&lt;/p&gt;

&lt;p&gt;You can try the tool at &lt;a href="https://compactjpg.com" rel="noopener noreferrer"&gt;https://compactjpg.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
