← notes

A Rails starter whose Stripe billing runs with zero external accounts

Jul 22, 2026

Every prototype needs the same six things before it can do the one thing it exists for. Ship those done, so the work is the actual product.

Rails 8 with Hotwire, Propshaft, importmaps and Solid Queue/Cache/Cable, no Redis. Passwordless login with Google, Apple or email. Stripe subscriptions. Resend in production, letter_opener in dev. A thin Account boundary from day one so teams later are not a retrofit. Pundit, Rack::Attack, enforced CSP, GDPR export and delete. Hotwire Native iOS and Android shells wrapping the same views.

The billing seam is the strongest piece. Stripe sits behind an adapter with a fake on the other side, so a fresh clone runs the whole subscription flow with zero external accounts, no keys, no dashboard, no webhook forwarding. The crypto module applies the same idea one level up: wallet sign-in, chain reads, swaps and token offerings ship staged rather than wired, script/onchain install puts them in place, they run on offline fakes until a key appears, and one skill deletes them cleanly.

A deletable, fully-tested Project slice shows the one obvious way to add a feature, so the agent building on it does not invent a second.