The best transactional email services in 2026
Password resets, receipts and sign-in codes have to arrive. Here are seven ways to send them from your app, starting with the one that keeps your data and your provider in your hands.
Notes from building things.

Password resets, receipts and sign-in codes have to arrive. Here are seven ways to send them from your app, starting with the one that keeps your data and your provider in your hands.

TypeScript checks nothing once your app is running. Here is how to validate request bodies, environment variables and API responses with one Zod schema that also gives you the type.

Raw SQL has no types, and heavy ORMs hide the SQL. Drizzle sits in between: you write TypeScript that reads like SQL, and every query is typed from your schema.

TLS stops protecting your data once it reaches the database. Here is how to encrypt sensitive fields yourself, with Node's native crypto module.