56,966 blogs · [
{
"id": "01a08794-430a-734e-a5a3-293a3a9cbd00",
"title": "SSG vs SSR vs Hybrid: A Decision Framework for Nuxt Deployment",
"url": "https://kbmjj123.cc/ssg-vs-ssr-hybrid-decision-framework",
"published_at": "2026-07-30T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3ae2284a",
"title": "How I Run Claude Code on My Phone for $29/Month — And Why I Stopped Chasing AI Tools",
"url": "https://kbmjj123.cc/claude-code-on-phone-29-dollar-workflow",
"published_at": "2026-07-28T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3b14046d",
"title": "Google Search Console API with Node.js: Pull Real SEO Data Without googleapis",
"url": "https://kbmjj123.cc/google-search-console-api-nodejs",
"published_at": "2026-07-26T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3b7acec4",
"title": "Nuxt 4 on Cloudflare: Three Deployment Modes and When to Use Each",
"url": "https://kbmjj123.cc/nuxt4-cloudflare-three-deployment-modes",
"published_at": "2026-07-17T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3bb14a7a",
"title": "Does an Indie Developer Have to Be a Jack of All Trades?",
"url": "https://kbmjj123.cc/does-indie-dev-have-to-be-jack-of-all-trades",
"published_at": "2026-07-16T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3be01656",
"title": "Running a Zero-Cost SaaS with Nuxt and Cloudflare",
"url": "https://kbmjj123.cc/nuxt-cloudflare-zero-cost",
"published_at": "2026-07-13T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3c199145",
"title": "How I Built a Multi-Model AI Coding Workflow for $0",
"url": "https://kbmjj123.cc/claude-deepseek-workflow",
"published_at": "2026-07-09T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3cc773bf",
"title": "From $2.45 RPM to a Pivot: What I Learned About Tool Site Ads",
"url": "https://kbmjj123.cc/from-2-45-rpm-to-a-pivot",
"published_at": "2026-07-08T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3dc73cc1",
"title": "Building a Pixel Email Subscription System for kbmjj123.cc with Resend and D1",
"url": "https://kbmjj123.cc/building-pixel-email-subscription",
"published_at": "2026-07-04T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3dcd3ba9",
"title": "From Zero to $2/Day: 6 Months of Running a Tool Site as an Indie Developer",
"url": "https://kbmjj123.cc/from-zero-to-2-dollar-6-months-tool-site",
"published_at": "2026-07-03T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3e89737b",
"title": "Why Chinese Visitors Vanished from Umami — And the Custom Domain Fix",
"url": "https://kbmjj123.cc/self-hosting-umami-part-4",
"published_at": "2026-07-02T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a3f6db590",
"title": "Deploying Umami on Vercel + Supabase: The Connection String Traps",
"url": "https://kbmjj123.cc/self-hosting-umami-part-2",
"published_at": "2026-07-01T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a406cb5dd",
"title": "The Last Two Blockers: GeoIP Download and Manual Migration on Vercel",
"url": "https://kbmjj123.cc/self-hosting-umami-part-3",
"published_at": "2026-07-01T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a40c63c71",
"title": "When Your Free Analytics Hit the Ceiling: Why I Left Umami Cloud",
"url": "https://kbmjj123.cc/self-hosting-umami-part-1",
"published_at": "2026-06-30T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a40dcc6c3",
"title": "A Platform-Agnostic Ad Component for Nuxt 4 SSG: Swapping AdSense and wwads Without Touching Page Code",
"url": "https://kbmjj123.cc/platform-agnostic-ad-component-nuxt4-ssg",
"published_at": "2026-06-29T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a4178cd31",
"title": "68,000 Impressions, 8 Clicks: The Image Sitemap Blind Spot I Didn't Know I Had",
"url": "https://kbmjj123.cc/68k-impressions-8-clicks-image-sitemap-blind-spot",
"published_at": "2026-06-28T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a41b7b7c0",
"title": "Why My Responsive AdSense Ad Went Square on Mobile (and Tall on Desktop) — and How I Fixed It With a Reusable Vue Component",
"url": "https://kbmjj123.cc/fixing-adsense-responsive-mobile-square",
"published_at": "2026-06-24T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a4293840d",
"title": "Why I Bet My Indie Project on Cloudflare Instead of a Server",
"url": "https://kbmjj123.cc/going-serverless-part-1-why-cloudflare",
"published_at": "2026-06-23T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a437c4f01",
"title": "Why GitHub OAuth Login Failed Locally (And How I Faked My Way Around It)",
"url": "https://kbmjj123.cc/going-serverless-part-2-github-oauth-local-callback",
"published_at": "2026-06-23T00:00:00+00:00"
},
{
"id": "01a08794-430a-734e-a5a3-293a43e562bf",
"title": "Two Days, One Broken Monitor, and a Forced macOS Upgrade Just to Run Wrangler",
"url": "https://kbmjj123.cc/going-serverless-part-3-macos-upgrade-wrangler",
"published_at": "2026-06-23T00:00:00+00:00"
}
] posts Claim your blog