Notes from shipping code
Deep-dives on the problems I've debugged, the patterns I've extracted, and the decisions I'd make differently next time.

Three tiers of Claude Code in CI
Read-only review, constrained auto-fix, and interactive @claude. Each tier has its own trigger, scope, and loop guard.

Pooling Playwright browsers across FastAPI scans
A persistent Chromium instance with idle-timeout shutdown eliminates per-scan browser launch while isolating cookies via fresh contexts.

Eight Failed Deploys to Ship FastAPI + Playwright on Railway
Eight red deploys in a row shipping a Python audit service to Railway: uv grabbing Python 3.14, /root perms, Playwright browser paths, and a glob that broke.

The Parity Harness That Caught a Silently Broken Service
I wrote a parity harness to de-risk a Node to Python scan service port. It caught the existing Node service silently returning perf=0 on every URL.

asyncio.gather Is Not Enough for a Sync Client
A job poller stuck at 48 seconds. asyncio.gather did nothing. Batching plus asyncio.to_thread cut it to 8 seconds without a new library.

Hardening an Admin Login: IPs, Timing, and a JWT Cookie
Spoofed x-forwarded-for, timing-leaky password checks, and a password gate per dashboard. Four small fixes that turn a toy login into a real one.

Running a uv Python Workspace Inside an Nx Monorepo
Adding a FastAPI service to a pnpm-based Nx monorepo without teaching Nx to understand Python: uv workspace, Docker from root, dedicated CI job.

A (public) Route Group So Admin Pages Render Bare
Lifting Nav and Footer into a Next.js route group so every /tools/admin route inherits none of the public chrome, and the one broken 404 that followed.

Three Tools I Add to Every Monorepo Now
Knip finds dead code, Renovate updates dependencies with cooldowns, and size-limit tracks bundle cost. Each took under an hour to configure for Nx.

Turning a Prose Style Guide into Zod Build Checks
Character limits, canonical tags, and em dash rules encoded as a Zod discriminated union. The script caught a duplicate cover image on its first run.

Replacing CSS Class Assertions with ARIA in Storybook
CSS classes break when Tailwind configs change. ARIA attributes are the semantic contract. Six rules for interaction tests that survive refactors.

Client-Side Tag Filtering Without Losing SEO URLs
One component renders Link for crawlable tag pages or button for instant client filtering. The same TagChipStrip serves both without duplicating code.