Blog

Engineering writing

Build-logs and deep dives on the things I actually ship — multi-tenant SaaS, Next.js, payments, and AI integration.

Aug 28, 2026Software Engineering· 7 min

What actually makes a senior software engineer

Seniority isn't years or syntax — it's judgment about the decisions that are expensive to change, owning outcomes instead of tickets, and making systems that survive in someone else's hands. What I've learned leading delivery across a nine-product portfolio.

Aug 25, 2026Databases· 9 min

PostgreSQL performance tuning for SaaS: the indexes that fix your slow endpoints

That slow API endpoint is almost never the framework — it's a missing index or an N+1 query. A practical guide to reading EXPLAIN, choosing the right indexes, and fixing the query patterns that quietly kill SaaS dashboards.

Aug 21, 2026React Native· 9 min

The CTO's dilemma: sharing code between a Next.js web app and a React Native mobile app

How to launch web and mobile on one budget by sharing business logic, types and API contracts across a Next.js and React Native monorepo — plus the parts you should not share, like auth-token storage.

Aug 18, 2026Analytics· 8 min

Server-side conversion tracking: recovering the revenue GA4 can't see

Most paying customers were missing from conversion reports. A build-log on why client-side GTM drops events, and how server-side Measurement Protocol with deduplication and 3DS-aware tracking made conversion the source of truth again.

Aug 14, 2026AI· 9 min

Securing LLM apps: defending against prompt injection in production

Prompt injection is the new injection attack, and your AI feature is exposed the moment it reads untrusted text or calls tools. A practical defense model — privilege separation, output handling, and tool guardrails — for real LLM apps.

Aug 11, 2026Startups· 8 min

The MVP blueprint: how to scope and ship a production-grade SaaS in four weeks

A senior engineer's method for shipping a real SaaS MVP fast without building throwaway code — scoping the smallest valuable slice, making the load-bearing decisions early, and shipping weekly.

Aug 7, 2026Node.js· 8 min

Node.js vs FastAPI: choosing the right backend for your next product

A senior engineer's honest comparison of Node.js (Express/NestJS) and FastAPI for a new product — where each wins, where the ecosystem decides it, and why 'use both' is often the right answer.

Aug 4, 2026Payments· 8 min

Multi-currency billing done right: ECB FX sync and cent-accurate invoicing across 18 locales

A build-log of European commerce across six countries: syncing ECB exchange rates on a cron into persisted prices, cent-accurate multi-currency invoicing across 18 locales, and keeping billing auditable when rates move mid-session.

Jul 31, 2026Next.js· 9 min

Fixing Core Web Vitals in Next.js: a performance playbook that moves conversions

LCP, CLS and INP aren't Lighthouse vanity — they're revenue. The concrete Next.js techniques I use to make pages load instantly: server-first rendering, image and font strategy, bundle discipline, and killing layout shift.

Jul 28, 2026Architecture· 10 min

When (and how) to transition from a React monolith to microfrontends

Microfrontends are a scaling tool, not a default. A senior lead's guide to knowing when a React monolith actually warrants splitting, and how to do it safely with Module Federation, shared types and independent deploys.

Jul 24, 2026AI· 10 min

Building a context-aware AI chatbot with a vector database (RAG done right)

A generic chatbot hallucinates; a retrieval-augmented one answers from your actual data. How to build RAG properly — chunking, embeddings, a vector database, and the retrieval quality work that decides whether it's useful.

Jul 21, 2026Node.js· 9 min

Building a render-to-print pipeline with BullMQ, Puppeteer and content-hash caching

How I built hands-off personalized-book fulfillment: a queue-driven Puppeteer render on Redis/BullMQ, content-hash caching so identical orders never re-render, and HMAC-verified print webhooks to a fulfillment partner.

Jul 17, 2026Next.js· 9 min

The Next.js technical SEO checklist for SaaS that actually ranks

SEO on Next.js is engineering, not a plugin. The concrete checklist I use to rank SaaS products: rendering strategy, Core Web Vitals, metadata and canonical/hreflang, structured data, and an internal-linking graph that avoids orphans.

Jul 14, 2026AI· 10 min

Architecting a production-grade AI SaaS with Next.js and FastAPI

Most AI tutorials stop at the API call. This is the production architecture: a Next.js frontend, a FastAPI service for heavy model work, a queue so the UI never blocks, and streaming responses done in TypeScript.

Jun 27, 2026AI· 8 min

How to add AI to your SaaS without runaway costs

A practical playbook for shipping LLM features that users trust and finance approves — narrow use case, retrieval grounding, right-sized models, caching, token budgets and evals.

Jun 23, 2026SaaS· 9 min

Build-log: a multi-tenant, WPS-compliant payroll system

How I built Paylio — multi-tenant payroll with strict tenant isolation, integer-safe money, and locale-accurate invoicing across markets. The decisions that keep payroll correct.

Jun 16, 2026Next.js· 8 min

What actually matters running the Next.js App Router in production

Lessons from shipping multiple products on the Next.js App Router — rendering per route, client components at the leaves, caching on purpose, and enforcing tenant scope on the server.

Jun 9, 2026Payments· 7 min

Payment webhooks the hard parts: idempotency, retries and reliability

Why payment webhooks break in production and the patterns that make them safe — signature verification, deduplication, idempotent handlers and queues. From real PSP integration work.

May 26, 2026SaaS· 9 min

Multi-tenant SaaS: RLS vs schema-per-tenant vs database-per-tenant

The three ways to isolate tenant data in a SaaS, the real trade-offs, and how I choose — from someone who ships multi-tenant systems in production.

May 12, 2026Next.js· 8 min

How I built a real-time, cookieless analytics console in Next.js

A build-log of the first-party analytics behind this site: cookieless tracking, a Postgres pipeline on a least-privilege role, and a real-time admin dashboard — no Google Analytics.

RSS feed →