آمادهٔ همکاری — ریموت یا حضوری

سلام، من محمدرضا رضائیان
هستم.

Front-End EngineerReact & Next.js

با React و Next.js محصول واقعی می‌سازم؛ از اون‌هایی که کاربر واقعی داره، سریع بالا می‌آد و نگهداریش کابوس نیست. کد تمیز، Performance و چالش‌های خاص وب فارسی دقیقاً همون‌جاییه که دوست دارم باشم.

کرج · ریموت یا حضوری
محمدرضا رضائیان

100

امتیاز SEO · Lighthouse

۳+

سال تجربهٔ واقعی

۳+

سال تجربه

۳

محصول روی هوا

۱۰۰

امتیاز SEO

۴

کتاب فنی فارسی

ABOUT

مهندسی، همون‌طور که باید.

حدود سه ساله فرانت‌اند می‌نویسم و بیشترِ این مدت رو با React، Next.js و TypeScript گذروندم. چیزی که از همه بیشتر دوستش دارم، اون لحظه‌ایه که یه ایده تبدیل می‌شه به محصولی که آدم‌های واقعی هر روز باهاش کار می‌کنن — مثل پلتفرم نوبت‌دهی پزشکی که از احراز هویت تا کش و تست رو خودم بالا آوردم، یا سامانهٔ املاکی با نقشهٔ تعاملی که هرچی بزرگ‌تر شد، خم به ابرو نیاورد.

روی جزئیات حساسم: تقویم شمسی‌ای که یه روز جابه‌جا نشه، رابط RTL‌ای که همه‌جاش درست بشینه، و صفحه‌ای که قبل از پلک‌زدن کاربر لود شده باشه. SEO، Performance و دسترس‌پذیری برام آپشن نیستن؛ بخشی از تعریف «تموم‌شده» هستن.

کارِ خوب اتفاقی نیست؛ حاصلِ وسواس روی جزئیاتیه که هیچ‌کس نمی‌بینه — تا وقتی که نباشن.

حوزه‌های تمرکز

React Server ComponentsPerformanceمعماری مقیاس‌پذیرSEODX

فارسی — زبان مادری

English — متوسط (B1)

LIGHTHOUSE

امتیاز دکتر رزرو در Google Lighthouse

0
Performance
0
Accessibility
0
Best Practices
0
SEO

Type-safe از سر تا ته

TypeScript strict و Zod روی مرز داده؛ باگ‌ها قبل از اجرا گیر می‌افتن

کد تمیز و کم‌حرف

خوانا و قابل نگهداری؛ بدون پیچیدگی‌ای که هیچ‌کس نخواسته

اسکوپ حداقلی

فقط چیزی که محصول واقعاً لازم داره — نه یه قدم بیشتر

کیفیت قابل اندازه‌گیری

Lighthouse، تست خودکار و a11y؛ حس خوب کافی نیست، عدد می‌خوایم

SELECTED WORK

پروژه‌های منتخب

چند تا کار که از ایده تا دیپلوی خودم جلو بردم — نه دمو، نه قالب آماده.

دکتر رزرو
Full-Stack · Production

پلتفرم نوبت‌دهی آنلاین پزشک

دکتر رزرو

یه پلتفرم کامل نوبت‌دهی که کاربر توش پزشک پیدا می‌کنه، با تقویم شمسی نوبت می‌گیره، نظر می‌ده و مقاله می‌خونه — و ادمین همه‌چیز رو از یه پنل مدیریت می‌کنه. پشت صحنه: ۹ مدل Mongoose، ۲۰ اسکیمای Zod، احراز هویت JWT روی httpOnly cookie و کش چندلایه با Upstash Redis. مسیرهای حساس هم با Playwright تست شدن.

۱۶۷

کامپوننت

۲۶

API Route

۱۷

فایل تست

۱۰۰

SEO

Next.js 16React 19TypeScriptTailwind v4MongoDBRedisZodPlaywright
سقفینو
Front-End · Scalable SPA

پلتفرم جامع خرید، فروش و اجارهٔ ملک

سقفینو

یه SPA املاک که از روز اول برای بزرگ‌شدن طراحی شد: جست‌وجوی پیشرفته با فیلتر منطقه، نوع، قیمت و متراژ؛ ثبت آگهی چندمرحله‌ای؛ و نقشهٔ تعاملی Leaflet که می‌شه محله‌به‌محله توش گشت. منطق تکراری رو توی ۱۷ هوک سفارشی جمع کردم و با memoization توی بیشتر از ۱۰۰ نقطه، رندرها رو سبک نگه داشتم.

۱۰۷

کامپوننت

۱۷

هوک سفارشی

۱۲

صفحه

React 18ViteReact Router 7MUITailwindReact Hook FormReact-Leaflet
ملی‌کیدز
Full-Stack · Client Workپروژهٔ کارفرما

فروشگاه آنلاین آتلیهٔ پوشاک کودک

ملی‌کیدز

برای یه آتلیهٔ پوشاک کودک، فروشگاهی ساختم که هم ویترین شیکی داره، هم حساب کاربری مشتری و هم کنسول مدیریت. App Router و Server Components پیش‌فرضه، کاتالوگ با ISR سرو می‌شه و Better Auth حساب‌ها رو امن نگه می‌داره. سبد، موجودی، کوپن و سفارش روی MongoDB می‌شینن و با Zod چک می‌شن؛ موجودی موقع تسویه قفل می‌شه تا دو نفر آخرین سایز رو هم‌زمان نخرن. استیت کلاینت با Zustand و مقدار اولیه‌ٔ SSR-aware بالا می‌آد، OTP و Redis جلوی سوءاستفاده رو می‌گیرن. جزئیات خوش‌دستش: کوپن با انقضای شمسی و پروِ مجازی لباس.

۳

سطح دسترسی

RSC

معماری

ISR

کاتالوگ

Next.js 16React 19TypeScriptTailwind v4MongoDBRedisBetter AuthZustandZodMotion
سورس‌کد این پروژه طبق قرارداد با کارفرما خصوصیه.
ShoppingCart
Front-End · Open Source

سبد خرید مدرن با TypeScript

ShoppingCart

یه سبد خرید سبک و تمیز که برای تمرین TypeScript strict شروع شد و به یه معماری ماژولار مرتب رسید: اضافه و حذف محصول، تغییر تعداد و محاسبهٔ لحظه‌ای جمع کل — با Webpack و Bootstrap 5.

TypeScriptWebpackBootstrap 5ESLint + Prettier

HOW I WORK

این‌طوری کار می‌کنم.

ابزارها مهم‌اند؛ چیزی که تکرار می‌شه، عادت‌های کاریه — نه شعار.

  1. 01

    اول علت، بعد وصله

    وقتی یه چیزی تو UI می‌پره، معمولاً قبل از عوض‌کردن ظاهر یا گذاشتن workaround سعی می‌کنم بفهمم مشکل از رندرِ، از state، از تایمینگ اسکرول یا از معماری. اسکرول منوی موبایل همین سایت خراب شده بود؛ به‌جای یه offset الکی، content-visibility رو برداشتم و بعد از باز شدن قفل اسکرول، با جای واقعی بخش پریدم.

  2. 02

    منبع حقیقت را پیدا می‌کنم

    تاریخ نوبت نباید به timezone سرور بند باشد؛ آخرین سایز موجودی هم نباید روی خوش‌بینی کلاینت باشد. معمولاً می‌گردم ببینم حقیقت کجاست — ساعت تهران، ردیف موجودی، یا یک فایل محتوا — و همان را منبع می‌گذارم.

  3. 03

    اندازه می‌گیرم، بعد نگه می‌دارم یا حذف می‌کنم

    حس خوب کافی نیست. Motion و Radix را آوردم؛ بعد از اندازه‌گیری از باندل برداشتم و انیمیشن را CSS کردم. امتیاز Lighthouse دکتر رزرو را نگه می‌دارم چون بدون عدد، «سریعه» فقط یه ادعاست.

  4. 04

    محدودیت را می‌خوانم، breakpoint جدید نمی‌سازم

    اگر صفحه در ۳۲۰ پیکسل می‌شکند، اول می‌پرسم مشکل از عرض ذاتی است، از wrap، از padding یا از دکمه‌ای که nowrap شده. دکمه‌های CTA و کاشی‌های فوتر همین‌جا پیکسل‌به‌پیکسل وسط شدن — نه با یه media query اضافه.

STRENGTHS

چیزی که تو کار دیده می‌شه.

تشخیص لایهٔ مشکل

جزئیات برایم یه پاسِ بصری نیست. وقتی RTL یا ۳۲۰ پیکسل به هم می‌ریزه، اول لایه را جدا می‌کنم: سایز، wrap، constraint یا اسکرول. بعد دست می‌برم.

مالکیت کل مسیر

فایلِ دارای error معمولاً کل داستان نیست. منوی موبایل باگِ کلیک نبود؛ قفل اسکرول هنوز برداشته نشده بود. جریان را تا مرز واقعی‌اش دنبال می‌کنم.

کیفیتی که بشود اندازه گرفت

SEO صد، Playwright روی مسیرهای حساس، Zod روی مرز داده. اگر نشود اندازه گرفت، برایم هنوز تمام نشده.

وب فارسی را جدی می‌گیرم

تقویم جلالی که یک روز جابه‌جا نشه، کوپن با انقضای شمسی، RTL که همه‌جاش درست بشینه. این‌ها لبه‌کاری نیستن؛ خودِ محصول‌اند.

WHERE I'M IMPROVING

جایی که هنوز روی خودم کار می‌کنم.

مرز خراب و فقط دقیق‌تر

گاهی روی جزئیاتی می‌مونم که می‌دونم می‌شه دقیق‌ترشان کرد — وسط‌چین یک کاشی، یک انیمیشن، یک جمله. دارم تمرین می‌کنم زودتر بپرسم: این واقعاً مشکل داره، یا فقط وسوسهٔ پولیش بیشتره؟

وابستگی را قبل از ورود می‌سنجم

Motion و Radix را اول اضافه کردم، بعد از روی باندل برداشتم. درسش این بود که سوال «این لازم است؟» باید قبل از install بیاید، نه بعد از دیدن وزنش.

WORKING PERSONALITY

یک توصیف شخصی، نه یک تشخیص.

از نظر شخصی خودم را بیشتر نزدیک به INTJ می‌بینم؛ نه به‌عنوان یک برچسب قطعی، بلکه چون بعضی از الگوهای فکری و کاری این تیپ به سبک کار کردنم نزدیک‌اند.

  • قبل از تغییر، ترجیح می‌دم سیستم را بخوانم.
  • کار عمیق را دوست دارم — چهار handbook فارسی از همین‌جا آمده.
  • معمولاً اول خودم تا ریشه می‌روم.
  • به پیامد معماری فکر می‌کنم: قفل موجودی، استیت SSR-aware، timezone.
  • کیفیت بلندمدت را به میان‌بر ترجیح می‌دم.

IN PRACTICE

مهارت‌های نرم، همان‌طور که دیده می‌شوند.

صورت‌بندی مسئله

ترجیح می‌دم قبل از راه‌حل، مسئله را دقیق بنویسم — حتی در کامیت. «اسکرول بعد از unlock منو با offset اندازه‌گیری‌شده» یعنی همه دربارهٔ یک مشکل مشخص حرف می‌زنیم.

مالکیت مسیر

وقتی چیزی می‌شکنه، معمولاً فقط فایل error را باز نمی‌کنم. مسیر کامل را می‌روم تا مرز مشکل معلوم شود — از رندر تا data flow تا قفل اسکرول.

یادگیری با مدل ذهنی

برای یک فریم‌ورک بیشتر روی مدل ذهنی و trade-offش وقت می‌گذارم تا APIها. handbookهای فارسی را همین‌طور نوشتم: چرا این تصمیم، نه فقط چطور این هوک.

BEYOND THE CODE

بیرون از کد

بیشتر وقتم را یا صرف فهمیدن «چرا»ی یک مسئله می‌کنم، یا صرف نوشتنش به فارسی تا نفر بعدی کمتر سردرگم شود. محصول واقعی برای اکوسیستم RTL برایم از دموی زیبا جذاب‌تر است — و کیفیت را معمولاً جایی می‌سنجم که کسی نگاه نمی‌کند.

OPEN SOURCE · PERSIAN HANDBOOKS

کتاب‌هایی که کاش زودتر داشتم

چهار تا راهنمای فارسی که نوشتم چون خودم دلم می‌خواست همچین منابعی وجود داشته باشه: پروژه‌محور، با تمرکز روی مدل ذهنی و «چرا»ها، نه فقط «چطور»ها. رایگان و متن‌باز.

مرجع فارسی JavaScript ES2025
۳۸ فصل

مرجع فارسی JavaScript ES2025

از مدل ذهنی زبان تا معماری و کد آمادهٔ Production

راهنمای جامع React 19.2
۳۷ فصل

راهنمای جامع React 19.2

از اولین کامپوننت تا معماری رابط کاربری در Production

راهنمای جامع Next.js 16
۳۷ فصل

راهنمای جامع Next.js 16

از App Router و Server Components تا معماری و استقرار

مرجع جامع Git و GitHub ۲۰۲۶
۳۶ فصل

مرجع جامع Git و GitHub ۲۰۲۶

از صفر تا سطح حرفه‌ای — یک کتاب، دو مسیر: ترمینال و VS Code

SKILLS

جعبه‌ابزار

ابزارهایی که هر روز دستمه — از پیکسل‌های رابط کاربری تا لایهٔ داده.

Core

  • React
  • Next.js
  • TypeScript
  • JavaScript

UI & Styling

  • Tailwind CSS
  • shadcn/ui
  • MUI
  • RTL

State & Data

  • SWR
  • React Hook Form
  • Context
  • Redis

Backend-for-Frontend

  • API Routes
  • MongoDB
  • Zod
  • JWT / RBAC

Quality & Tooling

  • Playwright
  • Git
  • Vite
  • Accessibility

Architecture

  • Clean Code
  • Component-Driven
  • Performance
  • SEO
ReactNext.jsTypeScriptTailwind CSSshadcn/uiMongoDBRedisZodPlaywrightSWRReact Hook FormMUIViteGitRSCISRSEOA11yRTLReactNext.jsTypeScriptTailwind CSSshadcn/uiMongoDBRedisZodPlaywrightSWRReact Hook FormMUIViteGitRSCISRSEOA11yRTL

TECHNICAL HIGHLIGHTS

برجسته‌های فنی

چند تا مسئلهٔ واقعی که سر راهم سبز شد و راه‌حلی که براش پیدا کردم.

دکتر رزرو

رزرو نوبت با تقویم شمسی و زمان‌بندی دقیق

تاریخ و زمان روی تقویم جلالی (jalaali-js) می‌چرخه و ساعت تهران مستقل از timezone سرور خونده می‌شه؛ نتیجه اینکه اسلات‌ها هیچ‌وقت یه روز این‌ور و اون‌ور نمی‌شن. هر کاربر هم فقط یه نوبت فعال در روز داره.

دکتر رزرو

احراز هویت و سخت‌سازی امنیتی

JWT روی httpOnly cookie با نقش‌های admin/user و هش bcrypt؛ کدهای OTP هش می‌شن، با مقایسهٔ timing-safe چک می‌شن و Redis جلوی brute-force رو می‌گیره.

دکتر رزرو

مهندسی Performance و SEO

کش چندلایه با revalidateTag و Upstash Redis، تصاویر با next/image و code-splitting داینامیک؛ متادیتای داینامیک، sitemap و robots اختصاصی و ISR — نتیجه‌ش امتیاز ۱۰۰ SEO توی Lighthouse.

سقفینو

معماری فرانت‌اند مقیاس‌پذیر

منطق تکراریِ فرم، فیلتر، اعتبارسنجی و OTP رو توی ۱۷ هوک سفارشی جمع کردم، ۱۰۷ کامپوننت رو توی دامنه‌های منطقی چیدم و با memoization توی ۱۰۰+ نقطه، رندرها رو زیر کنترل نگه داشتم.

CONTACT

بیاین یه چیزی بسازیم که
واقعاً کار کنه.

برای همکاری ریموت یا حضوری آماده‌م. اگه دنبال کسی هستین که هم به پیکسل اهمیت بده، هم به Performance و هم به کاربر فارسی‌زبان، خوشحال می‌شم گپ بزنیم.