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
# 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 ✓
Hard-won, specific, and reproducible.
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 →
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 →
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 →
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 →
A 16-row bulk pin CSV created only 2 pins because Pinterest deduplicates rows by destination link, not by image.
1 min read →
Behind a corporate proxy, wrangler and the throwaway upload hosts all failed. GitHub plus jsDelivr was the dependable free image host.
2 min read →
The fixes, packaged. Drop-in, production-tested, ready to ship.
Pay on web or mobile, unlock both, never double-charge. One Supabase column is the source of truth.
Sell a real printed poster of what your users make. Drop-in Supabase functions: render, host, pay, fulfil.
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.