Blog
Product updates, guides, and ideas for teams building with clarity.
Featured
Idempotent Stripe Webhooks in Node.js TypeScript: Patterns That Survive Replay Idempotent Stripe Webhooks in Node.js TypeScript: Patterns That Survive Replay
Event idempotency ensures the same webhook event runs once. Business idempotency ensures the same outcome applies once, even when two different event types both try to finalize it.
Best Non-Next.js TypeScript SaaS Boilerplate 2026: A Constraints-First Evaluation Best Non-Next.js TypeScript SaaS Boilerplate 2026: A Constraints-First Evaluation
Most "best SaaS boilerplate" lists score demo features. This one scores what actually breaks eighteen months in: architectural boundaries, billing ownership, and vendor lock-in. A weighted, constraints-first comparison of Refract, graphile/starter, and the Next.js-committed alternatives.
Latest posts
Evaluate a SaaS Architecture Like a Staff Engineer Evaluate a SaaS Architecture Like a Staff Engineer
A staff engineer doesn't evaluate whether a SaaS codebase works today, they evaluate what it costs to change tomorrow: pricing, a provider swap, a team that triples, a stack the community still trusts. Five checks.
Why Your AI Calls Shouldn't Know Which Model They're Talking To Why Your AI Calls Shouldn't Know Which Model They're Talking To
Your domain code should ask for a completion, not an Anthropic client. Here's how Refract's tools.ai contract keeps model choice out of business logic.
Production Best Practices for AI Coding Specifications Production Best Practices for AI Coding Specifications
Agents fail when specs are vague, duplicated, or missing. This is how we structure instructions so tools can follow them, using Refract's shipped AGENTS.md tree, and how that compares when you're shopping boilerplates.
The Product/Price Migration We’d Repeat (and What It Buys You Over a Billing Config File) The Product/Price Migration We’d Repeat (and What It Buys You Over a Billing Config File)
We split products from prices so regional and interval variants become inserts, not product rewrites. This is the schema, how it compares to the two other TypeScript SaaS foundations people evaluate against us, and the trade-offs we actually chose.
Your AI Agent Isn't Lying: It's Just Passing the Test It Rewrote Your AI Agent Isn't Lying: It's Just Passing the Test It Rewrote
AI coding agents rarely hallucinate. What they actually do is quietly fill planning gaps with assumptions, then pass the tests they rewrote to match. Here's why that's a process problem, not a model problem.
The Pricing Capabilities You'll Need Before You Think You Need Them The Pricing Capabilities You'll Need Before You Think You Need Them
The most expensive line of code I have ever written did not look so bad at first, it felt very right at the moment. It was a hardcoded price check. Eighteen months later it cost us three weeks.