Engineering, Architecture, & Lessons Learned.
Vector search, full-text search, and job queues are moving into Postgres extensions instead of separate services. Here's why the operational case beats the performance case — and where it still breaks down.
LLM APIs are slow, rate-limited, and expensive — three things that destroy inline request handling. Here's the queue-based architecture I use for AI features in production Node.js backends, with BullMQ code you can copy.
Server-side IAP verification for a client's app surfaced problems the docs don't mention — Apple and Google using three different price scaling factors, a clock-drift bug that looked like a credentials failure, and a webhook reconciliation gap that's still open rather than solved.
Most backend engineers treat a webhook as a single, trustworthy event. It isn't. Gateways retry on timeout, on 5xx, on their own internal hiccups — and they will send the same event twice, sometimes minutes apart, sometimes days apart. This post walks through why relying on the gateway's event ID alone is not enough, and why idempotency has to be owned and enforced by your own backend, not borrowed from someone else's infrastructure.
Most LMS tutorials stop at a course table and call it done. This guide goes further — covering the data model, JWT security, enrollment logic, and progress tracking that a real LMS actually needs.
JWT and sessions both handle authentication — but they make completely different trade-offs. Here's when to use each, what can go wrong, and how I implement auth in production NestJS projects.
I've been building with React for two years. I assumed React Native would feel like React with a different stylesheet. It doesn't. Here's what actually surprised me.
Most developers deploy side projects manually — SSH in, pull code, restart, hope nothing breaks. Here's how to automate the entire process with GitHub Actions and deploy to EC2 on every push to main.
A practical guide to implementing Redis caching in NestJS with real examples — cache-aside pattern, TTL strategy, cache invalidation, and production lessons.
A practical guide to building multi-tenant backends with NestJS, PostgreSQL, and Prisma. Real patterns, schema design, and lessons from production.
Why I use NestJS, Prisma, and PostgreSQL on every freelance project. Real setup, folder structure, schema design, and lessons learned from production builds.
BullMQ and Kafka solve different problems. Here's a practical breakdown of when to use each — with real examples, use cases, and a final recommendation.
1.2 seconds per request. Thousands of daily users. No bug reports — but users were feeling it. Here's the exact five-step process I used to cut response times by 87% without a rewrite.
Not a toy project — a real production app with 1,000+ users. This is a step-by-step breakdown of how I planned and executed a full Fastify to NestJS migration without breaking anything.
Learn how to design a dynamic notification engine where templates, API keys, and providers can change without code updates, while using queues to handle high-volume notifications safely.
A look back at my journey from writing my first lines of code to building scalable, production-ready backend systems with NestJS, Redis, and BullMQ.
Specifically, why your computer feels like a well-organized office one day and a junk drawer the next. We're going to peel back the curtain on how an OS actually manages your life.