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
HOW A FIX HAPPENS
broken
deploy fails. works locally. of course it does.
traced
binary-search the diff, read the actual error, find the real cause.
fixed
root cause fixed, written up, packaged when reusable.
Latest fixes
Hard-won, specific, and reproducible.
My href regex found 0 links on a page with 101 of them
A link-extraction regex returned nothing on a page full of links. The page was fine. It ships minified HTML, where quotes around an attribute value are optional, so href=/media/x.pdf matches nothing that expects href="...".
5 min read →
ENOENT: scandir in CI, green on my machine, and the path was correct
A vitest suite passed locally on every run and failed the first CI job with ENOENT: scandir. The path was not wrong. The test read its fixture corpus by absolute path from a sibling repository, so a CI checkout of one repo could never contain it. The bug is a test depending on state outside the artifact under test.
3 min read →
A log write killed the job it was logging, and the exit code still said 0
$ErrorActionPreference = 'Stop' is the setting every PowerShell guide recommends. It also promotes a failed Add-Content into a terminating error, so a file lock on the log file aborts the run from a line that does not matter, in the middle of work that does.
3 min read →
My editor said 10,000+ changed files and git status said 31
Both numbers were true, about different repositories. A shallow clone killed by a 60-second timeout left a repo with a valid HEAD, 6,981 files on disk, no .git/index at all, and an orphaned index.lock. With an empty index, every tracked path reads as a staged deletion.
4 min read →
Search Console: "Page with redirect" on 106 pages that all return 200
An index-failure email listed 102 URLs as Page with redirect, and every one of them loaded fine in a browser. Astro's directory build format emits /about/ in the sitemap and rel=canonical, every internal href in the source said /about, and the host 308s between them. Googlebot only ever reached the site through a redirect.
6 min read →
Templates
The fixes, packaged. Drop-in, production-tested, ready to ship.
The Supabase Bundle (3 kits)
All three Supabase kits together: shared subscription, account deletion + export, and production hardening. A third off.
Faceless YouTube Automation Kit
Turn a script into a captioned long-form video plus 3 vertical Shorts and a thumbnail, check it against what gets a video rejected, and package it ready to upload. Free local stack: edge-tts, ffmpeg, Pexels. No subscriptions.
GDPR Account Deletion + Data Export Kit (Supabase)
The in-app account deletion Apple and Google require, plus a GDPR data export. Two drop-in Supabase Edge Functions.
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.