
Mercado Pago in Next.js: the complete flow with webhooks
Creating the preference, verifying the webhook signature, and the race condition nobody documents: what happens when the webhook beats the redirect.
Notes on web development, architecture, and the technical decisions behind the products we build.

Creating the preference, verifying the webhook signature, and the race condition nobody documents: what happens when the webhook beats the redirect.

How a Backend-for-Frontend keeps tokens out of the browser and lets the frontend evolve without touching the API. With a real example from an e-commerce platform.

The classic JWT problem is that you can't revoke a token until it expires. Token versioning solves it with one integer — no Redis, no session table.

EmailJS is convenient until you see your credentials sitting in the bundle. The migration to an API route, double opt-in, and what it does for deliverability.

Most rate limiting guides assume Redis from minute one. In-memory state is imperfect, but often enough for a contact form. Where the line actually is.

Three ways to isolate tenants in a SaaS, with the real trade-offs. Why I chose a discriminator column for a property platform, and when I wouldn't.
One email when we publish something new. No spam, no promotions, unsubscribe in one click.