DevLog
Building in Public with Claude Code
Daily dispatches from the build floor. Real projects, real problems, real solutions — all built with AI-assisted development.
Adding Kokoro TTS to a Python voice assistant
How I added Kokoro text-to-speech to a Python voice assistant after rejecting Piper for license reasons.
Dropping anon CRUD policies on service-role-only tables
How I dropped 22 anon CRUD policies from service-role-only tables and added a second org export entry point with a shared hook.
Push-to-talk voice commands with faster-whisper and fuzzy rescue
How I added push-to-talk voice input to Foreman with silence filtering, software resampling, and fuzzy rescue for misheard product names.
Gitignoring Generated PDFs and Test Artifacts Without Hiding Future Deliverables
How I gitignored specific generated PDFs and test files by name instead of using wildcards to avoid hiding future deliverables.
Two-stage delete with revenue archive in AdminStack
How I added hard delete for portals and clients in AdminStack while preserving all paid invoice records through archive-first ordering.
Fixing Stripe 'No such price' with mismatched account keys
How a mismatched Stripe account key caused checkout errors and the fixes for search punctuation, video paths, and EFTA lookup.
Surfacing project lifecycle status on client portals
How I added project lifecycle status to client portals without gating access or changing the shared data model.
Routing Anonymous Checkout Clicks to Signup Instead of Login
How I routed anonymous pricing page upgrade clicks to signup instead of login and added open redirect guards to the auth flow.
Adding auth headers to a webhook script without breaking silent fallback
How I added an authentication header to a webhook script while preserving silent fallback and making HTTP failures visible on stderr.
Adding auth headers to a webhook without breaking silent failures
How I added auth headers to a fire-and-forget webhook and made silent failures visible without ever blocking the save.