Writing & Thoughts

Reza Barati's Blog

Thoughts on web development, the tools I use, and lessons learned from real projects.

15articles published
121min total reading
38topics covered
Next.jsReactWeb DevelopmentCSSTailwind CSSMaterial UIFrontendTypeScriptJavaScriptDeveloper ExperienceMongoDBSQL ServerDatabaseBackendNode.jsExpressREST APIDesign TokensArchitecturePerformanceGitVersion ControlBest PracticesFull-StackProject ManagementDevOpsProject StructureServer ComponentsAPI DesignRESTPrismaORMAccessibilityHTMLWCAGDeploymentNginxCI/CD
Next.js logo on a dark background
Next.jsReactWeb Development

Why I Chose Next.js for Every New Project

After building projects with plain React, Vite, and various SSR frameworks, Next.js has become my go-to. Here's the honest reasoning behind that choice.

October 15, 20245 min read
Tailwind CSS and Material UI logos side by side
CSSTailwind CSSMaterial UI

Tailwind CSS vs. MUI: My Honest Take After Using Both

I've shipped production apps with both Material UI and Tailwind CSS. They solve different problems, and choosing the wrong one costs real time.

September 2, 20247 min read
TypeScript blue background with the TS logo
TypeScriptJavaScriptDeveloper Experience

TypeScript in 2024: Worth the Overhead?

TypeScript has some real costs — longer setup, more verbose code, occasional frustration. Here's why I still use it on every project.

July 20, 20246 min read
Database architecture diagram
MongoDBSQL ServerDatabase

MongoDB vs SQL Server: Choosing the Right Database

I've built apps on both. The choice matters more than most tutorials admit, and it's rarely as simple as 'NoSQL is modern, SQL is old'.

May 10, 20248 min read
Terminal showing a Node.js server running
Node.jsExpressMongoDB

Building a REST API with Node.js, Express, and MongoDB

A practical walkthrough of how I set up production-ready REST APIs — from project structure and middleware to error handling and authentication.

December 10, 202410 min read
CSS code on a dark screen
CSSTailwind CSSDesign Tokens

CSS Architecture That Doesn't Fall Apart at Scale

Utility classes, component styles, design tokens — making CSS maintainable in large projects requires a deliberate system, not just rules.

January 22, 20258 min read
Chrome DevTools performance panel
ReactPerformanceWeb Development

React Performance: What Actually Moves the Needle

Most React performance advice focuses on `useMemo` and `useCallback`. Those rarely matter. Here's what actually makes apps faster.

March 14, 20259 min read
Git branch graph in a terminal
GitVersion ControlDeveloper Experience

Git Workflows for Solo Developers and Small Teams

Git is powerful and easy to misuse. These are the habits and workflows that have kept my projects clean, recoverable, and easy to reason about.

May 8, 20257 min read
Laptop with a project board on screen
Full-StackProject ManagementBest Practices

From Idea to Deployed: My Full-Stack Project Checklist

Starting a new project means making a hundred small decisions. This is the checklist I work through so I don't forget something that costs me later.

July 30, 202511 min read
Code editor showing a well-organized file tree
Next.jsProject StructureBest Practices

How I Structure Next.js Projects in 2026

After several production Next.js apps, I've settled on a folder structure that scales well. Here's exactly how I do it and why.

March 5, 20266 min read
React logo with a server icon
ReactNext.jsServer Components

Understanding React Server Components: A Practical Guide

React Server Components changed how I think about data fetching and rendering. Here's what they actually are, when to use them, and the mistakes to avoid.

September 12, 20259 min read
API documentation on a screen
API DesignRESTBackend

Designing APIs That Don't Make Developers Angry

A well-designed API is a joy to consume. A poorly designed one generates support tickets forever. These are the principles I follow to build APIs people actually like.

October 28, 20258 min read
Prisma schema file in a code editor
PrismaORMDatabase

Prisma ORM: Why I Switched from Mongoose

After years of Mongoose, I switched to Prisma for relational databases. The type safety alone was worth it — but there's more to the story.

December 5, 20257 min read
Screen reader software on a computer
AccessibilityHTMLFrontend

Web Accessibility: The Basics Every Frontend Developer Should Know

Accessibility isn't a checklist you add at the end — it's a set of habits that become second nature. Here's the foundation I build from on every project.

January 18, 20268 min read
Server rack in a data center
Next.jsDevOpsDeployment

Deploying Next.js to a VPS: The Complete Setup

Vercel is great until it isn't — pricing, vendor lock-in, or compliance requirements. Here's how I self-host Next.js on a VPS with Nginx, PM2, and GitHub Actions.

April 10, 202612 min read