Read my latest blog posts about web development, tutorials, and more.
Building a Production Grade File Upload System with Multer: Lessons from Hardening a Node.js Backend
Naive file upload endpoints accept any file type, preserve unsafe filenames, and expose the server to remote code execution, stored XSS, MIME spoofing, denial of service, and path traversal....
class-validator Decorator Reference: Every Validation Decorator Explained
Complete class-validator cheat sheet for NestJS and TypeScript devs — every decorator grouped by purpose, plus the execution order and hierarchy when stacking multiple decorators on one fiel...
How to Apply SSL to Nginx with Let's Encrypt on Ubuntu (Free & Auto-Renewing)
Learn how to secure your Nginx server with a free SSL certificate from Let's Encrypt on Ubuntu. Step-by-step guide covering Certbot setup, HTTPS configuration, firewall rules, and auto-renew...
How to Deploy a Production App with Docker Swarm, Nginx, and GitHub Actions CI/CD
Master the art of Zero Downtime Deployment with this deep dive into modern CI/CD architecture. Learn how to orchestrate a resilient infrastructure using Docker Swarm, secure your traffic wit...
How to Set Up Husky and lint-staged in a Node.js TypeScript Backend
Stop pushing broken code! Learn how to set up Husky and lint-staged in your Node.js TypeScript backend to automate ESLint and Prettier on every git commit. Keep your repo clean and your CI g...
How to Set Up a Full-Stack Monorepo with Turborepo, Next.js, and Express
Learn how to create a monorepo from scratch using pnpm, Turborepo, Next.js, and Express. This guide covers shared TypeScript and ESLint configurations and task orchestration.
How to Build a Hybrid RBAC + PBAC Access Control System in TypeScript
Learn how to build a production-ready access control system combining Role-Based Access Control (RBAC) and Policy-Based Access Control (PBAC). This TypeScript tutorial covers role hierarchy,...
The Only Docker Command You Need to Understand to Run a Project
Learn the only Docker command you need to run a project. Step-by-step guide with in-depth explanation of ports, volumes, dependencies, and container setup for beginners.
When Prisma Error Codes Start Talking in Numbers (and You Just Want to Sleep)
Learn how to handle Prisma errors in Node.js with a global error handler. Understand Prisma error types and codes like P2002 and P2003, and build cleaner, developer-friendly API responses.