Why I Keep Building on Laravel, React, Tailwind and MySQL
A look at the stack I reach for on most projects, why boring and well-supported beats fashionable, and when I'd pick something different.
Insights
Practical thinking on business systems, automation and software built around the way organisations actually work.
A look at the stack I reach for on most projects, why boring and well-supported beats fashionable, and when I'd pick something different.
Adding a deleted_at column is easy. Making soft deletes actually work with uniqueness rules, relationships, restores, reporting and GDPR is a different job entirely.
An updated_at column tells you something changed. It doesn't tell you who changed it, what it was before, or whether a person or a script did it. Here's what a proper audit trail looks like.
A plain-English look at idempotency: the one question that tells you whether your software will double-charge, double-book or double-email a customer when something runs twice.
Queuing background jobs isn't just for big apps handling huge traffic. It's how I stop a single slow email or API call from taking down a form submission for everyone.
A webhook firing successfully isn't the same as your system handling it correctly once. Here's why retries and duplicate delivery cause double charges, and how to build handlers that don't care how many times an event arrives.
A single 'balance' column looks simple until two requests hit it at once, or a customer disputes a charge and asks where the number came from. Here's why credits, refunds and prepaid balances belong in a ledger.
Replit, Lovable and Bolt build you an app. Claude Code and Codex help you build one yourself. Here's the real difference, who each suits, and the costs involved.
A lot of business equipment already produces useful data. It's just speaking a protocol nobody ever built a translator for. Here's what that involves and what to check first.
Got a problem worth solving properly?
Tell me what's slowing your business down. The first conversation is free and straightforward, and it's with me, not a salesperson.
Or email me at josh@thackr.co.uk