indie dev · solved in production

Get unstuck.

Real bugs from real indie projects, and the fixes that actually worked. Plus the templates that package them, so you skip the rabbit hole entirely.

no fluff · no guru course · just what worked

pinterest-bulk.csv
# only 2 of 16 pins scheduled?
Pinterest silently drops rows
that share a destination link.

fix: make every link unique
link + "?utm_content=pin01"
→ 16 / 16 scheduled ✓

Latest fixes

Hard-won, specific, and reproducible.

StripeGelato

Stripe + Gelato print-on-demand, end to end

Let users buy a real printed poster of what they made: render at print resolution, host it, charge with Stripe, and create the Gelato order from the webhook, not the browser.

3 min read →

StripeRevenueCat

One subscription across web and mobile (Stripe + RevenueCat + Supabase)

Pay on web or mobile, unlock both, never double-charge, by making one Supabase column the source of truth instead of reconciling two billing systems.

3 min read →

CloudflareCI

Your Cloudflare build passes locally but silently fails in CI

A Vite alias that reached outside the repo root built fine locally but failed on Cloudflare Pages for weeks, while the old bundle kept serving.

2 min read →

ViteTypeScript

A stale vite.config.js silently overrode my vite.config.ts

Edits to vite.config.ts had no effect because a compiled vite.config.js sat next to it, and Vite loads the .js in preference to the .ts.

1 min read →

PinterestCSV

Pinterest's bulk upload silently drops duplicate-link rows

A 16-row bulk pin CSV created only 2 pins because Pinterest deduplicates rows by destination link, not by image.

1 min read →

HostingWindows

Hosting public images from a locked-down Windows box

Behind a corporate proxy, wrangler and the throwaway upload hosts all failed. GitHub plus jsDelivr was the dependable free image host.

2 min read →

Templates

The fixes, packaged. Drop-in, production-tested, ready to ship.

One Subscription: Web + Mobile (Stripe + RevenueCat + Supabase)

One Subscription: Web + Mobile (Stripe + RevenueCat + Supabase)

Pay on web or mobile, unlock both, never double-charge. One Supabase column is the source of truth.

€19 View →
Print-on-Demand Kit (Stripe + Gelato)

Print-on-Demand Kit (Stripe + Gelato)

Sell a real printed poster of what your users make. Drop-in Supabase functions: render, host, pay, fulfil.

€19 View →

No fluff. Just what worked.

Every post here is a problem I actually hit shipping indie projects, traced to root cause and fixed. If it saved me hours, it'll save you hours.

Browse the archive