My Blogs

Read my latest blog posts about web development, tutorials, and more.

multer file up;pad
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 image
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...
SSL Apply NGINX
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...
Docker Github Nginx Deploy Image
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...
Husky and lint-staged setup with backned TS Node.js
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...
An infographic diagram illustrating the structure of a development monorepo. It shows a central "Monorepo Root" connected to separate sections for "apps/" (Frontend Next.js and Backend Express + Prisma) and "packages/" (shared eslint-config and typescript-config), all orchestrated by Turborepo.
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.
A high-tech digital illustration of a secure server room featuring a glowing 3D shield gateway, neon cyan hierarchical tree diagrams on the floor representing RBAC, and floating digital locks with data streams representing PBAC.
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,...
Docker Process
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.
Prisma error
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.
Redix Logo
A Beginner's Handbook for ioredis: Getting Started with Redis in Node.js
A comprehensive guide to IoRedis.