<?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: 周唯</title>
    <description>The latest articles on DEV Community by 周唯 (@_77fb1f270b1ecc137af0a1).</description>
    <link>https://dev.to/_77fb1f270b1ecc137af0a1</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3942349%2Fbdaa412a-c0d9-4511-bd9d-314886b814e1.png</url>
      <title>DEV Community: 周唯</title>
      <link>https://dev.to/_77fb1f270b1ecc137af0a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_77fb1f270b1ecc137af0a1"/>
    <language>en</language>
    <item>
      <title>I Built 3 Developer APIs with $0 Hosting — Here's How</title>
      <dc:creator>周唯</dc:creator>
      <pubDate>Wed, 20 May 2026 13:07:13 +0000</pubDate>
      <link>https://dev.to/_77fb1f270b1ecc137af0a1/i-built-3-developer-apis-with-0-hosting-heres-how-7m5</link>
      <guid>https://dev.to/_77fb1f270b1ecc137af0a1/i-built-3-developer-apis-with-0-hosting-heres-how-7m5</guid>
      <description>&lt;p&gt;I Built 3 Developer APIs with $0 Hosting — Here's How&lt;br&gt;
I wanted to see if I could build and monetize useful developer APIs with literally zero hosting costs. Here's what I built and how it works.&lt;/p&gt;

&lt;p&gt;The APIs&lt;br&gt;
SEO Analyzer — Analyze any webpage's SEO in real-time. Title, meta, headings, images, OG tags, word count, scored 0-100.&lt;br&gt;
QR Code Generator — Customizable QR codes with colors, sizes, margins. Returns PNG.&lt;br&gt;
Email Validator — Syntax check, MX records, disposable domain detection (150+), role account detection.&lt;br&gt;
All three live at a single endpoint: &lt;a href="https://api-market.wei04459.workers.dev" rel="noopener noreferrer"&gt;https://api-market.wei04459.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Stack ($0/month)&lt;br&gt;
Cloudflare Workers — Serverless compute, 100k requests/day free&lt;br&gt;
Cloudflare KV — Key-value storage for API keys and usage tracking&lt;br&gt;
No database, no VPS, no Docker — Just JavaScript edge functions&lt;br&gt;
The entire thing is a single Worker file. No frameworks, no build steps.&lt;/p&gt;

&lt;p&gt;How I Built It&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Unified Gateway Pattern
Instead of three separate deployments, I built one Worker that routes by path:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;/           → Landing page&lt;br&gt;
/api/seo    → SEO analyzer&lt;br&gt;
/api/qr     → QR generator&lt;br&gt;&lt;br&gt;
/api/email  → Email validator&lt;br&gt;
/keys       → Key management&lt;br&gt;
​&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Free Tier with Rate Limiting
Free users get 100 requests/month. Usage is tracked in KV with monthly keys:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;const monthKey = &lt;code&gt;2026-05&lt;/code&gt;;&lt;br&gt;
const usageKey = &lt;code&gt;usage:${apiKey}:${monthKey}&lt;/code&gt;;&lt;br&gt;
let usage = await env.API_KEYS.get(usageKey, { type: 'json' });&lt;br&gt;
if (usage.count &amp;gt;= 100) {&lt;br&gt;
  return error('Limit reached. Upgrade to Pro.');&lt;br&gt;
}&lt;br&gt;
​&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SEO Analyzer — The Hardest One
Parsing arbitrary HTML for SEO elements at the edge is tricky. Key decisions:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use regex, not DOM parser (Workers don't have DOMParser)&lt;br&gt;
Strip scripts/styles before word counting&lt;br&gt;
Handle both  and  formats&lt;br&gt;
Score 0-100 with clear breakdown (title 15pts, meta 15pts, viewport 10pts, etc.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Email Validator — Actually Useful
Most email validators just check regex. This one goes further:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;MX record lookup via Cloudflare DNS-over-HTTPS&lt;br&gt;
150+ disposable domain blacklist&lt;br&gt;
Common typo detection (gmial.com → gmail.com)&lt;br&gt;
Role account detection (admin@, info@, etc.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;QR Generator — Simple but Critical
Uses Google Charts API as a backend. The Worker just proxies and caches:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;const qrUrl = &lt;code&gt;https://chart.googleapis.com/chart?cht=qr&amp;amp;chl=${data}&amp;amp;chs=${size}&lt;/code&gt;;&lt;br&gt;
const resp = await fetch(qrUrl);&lt;br&gt;
return new Response(resp.body, { &lt;br&gt;
  headers: { 'Content-Type': 'image/png', 'Cache-Control': 'public, max-age=86400' }&lt;br&gt;
});&lt;br&gt;
​&lt;br&gt;
The Business Model&lt;br&gt;
Free: 100 requests/month — enough to evaluate&lt;br&gt;
Pro: $5/month — unlimited requests, commercial use&lt;br&gt;
Simple math: 20 Pro subscribers = $100/month.&lt;/p&gt;

&lt;p&gt;Lessons Learned&lt;br&gt;
Cloudflare Workers are faster than you think — Cold start is literally 1ms.&lt;br&gt;
KV is fine for API keys — Not Redis speed, but good enough and free.&lt;br&gt;
Google Charts API still works — For QR codes, it's simpler than bundling a QR library.&lt;br&gt;
Regex HTML parsing is fragile but sufficient — For an SEO checker that gives directional scores, not pixel-perfect audits.&lt;br&gt;
Free tier = marketing — Every free user is a potential Pro upgrade.&lt;br&gt;
Try It&lt;br&gt;
curl -X POST &lt;a href="https://api-market.wei04459.workers.dev/keys" rel="noopener noreferrer"&gt;https://api-market.wei04459.workers.dev/keys&lt;/a&gt;&lt;br&gt;
​&lt;br&gt;
Get your free key and start building.&lt;/p&gt;

&lt;p&gt;Source code on GitHub | API Docs&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>cloudflarechallenge</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
