Foad Labs
82 subscribers
46 photos
2 videos
2 files
45 links
Building modern web experiences.
React • Next.js • TypeScript

🪐 DM For collaborates: @foad_ebrahiml
🌐 Personal website: https://foad-ebrahimi.ir
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
💣 تکنیک Show, Don't Tell ( نشونشون بده بجای صحبت کردن )

یکی از مهم‌ترین تکنیک‌های پرزنت کردن، تکنیک اثباته.
بزرگ‌ترین اشتباه تو رزومه اینه که از کلمات کلیشه‌ای مثل مسلط به توسعه وب یا متخصص سئو استفاده کنیم.

در صورتی که وقتی حرف از دستاوردهای واقعی خودمون بزنیم مثل این مثال =>

به جای اینکه بگی من می‌تونم سایت‌های شرکتی رو با نکست‌جی‌اس بیارم بالا
بگو : توسعه و بهینه‌سازیِ وب‌سایت [نوع پروژه] با Next.js، رسیدن به رتبه ۱ گوگل در کلمات کلیدی هدف، و کاهش زمان لود اولیه سایت به زیر ۱ ثانیه

همین یدونه جمله مثل بمب میترکونه،
توی رزومتون از اعداد و ارقام و نتایجی که دادن استفاده کنید، مردم به اعداد بیشتر از کلمات اعتماد میکنن 🤝
غروبتون بخیر رفقا ☕️💻

یه بحث داغ برای همین الان🔥
همیشه یکی از بزرگترین دغدغه‌های ما تو پروژه‌های سطح بالا، رسوندن زمان لود اولیه سایت (Initial Load) به زیر ۱ ثانیه است. این عدد تو پروژه‌های واقعی برای سئو و نرخ تبدیلِ کارفرما معجزه می‌کنه.
حالا فرض کنید یه پروژه Next.js (یا ریکت) اومده زیر دستتون که لود اولیه‌اش ۳ تا ۴ ثانیه طول می‌کشه. اولین قدمی که برای دیباگ و بهینه‌سازی برمی‌دارید چیه؟

۱. اول می‌رید سراغ بهینه‌سازی Assetها (حجم عکس‌ها، فرمت WebP، فونت‌ها)؟
۲. استراتژی رندرینگ (SSR vs SSG) رو تغییر میدین؟
3. باندل سایز جاوااسکریپت (Bundle Size) و پکیج‌های سنگینِ اضافی رو چک می‌کنید؟
۴. مستقیم میرید سراغ کشینگِ سرور و تنظیمات CDN؟

تو کامنت‌ها برام بنویسید اولویت اولتون کدومه و چرا.
امشب نظراتتون رو میخونم و فردا به عنوان کسی که بارها سایت‌ها رو به زیر یک ثانیه رسونده، تجربیات و راه‌حلِ اصلی خودم رو براتون می‌شکافم! 👇
1
آخر هفتتون رو چطور شروع کردین
من که با داکیومنت خوندن 🫪
بعد از دو روز
انشالا از شنبه شروع میکنیم
🔥1
🙄🫪🫪
👀1
صبح مهندسین آینده بخیر و پر کد باشه ☕️💻
🗿1
همونطور که قولشو داده بودم
امروز میخایم یکم از کد زدن و تریک‌ها فاصله بگیریم و بریم سراغ مباحث معماری و دیزاین سیستم‌ در مقیاس جهانی

پس ....

اولین قهوه رو بریزین که روزِ سنگین و به‌ شدت جذابی در پیش داریم...
1
☝🏻 قدم اول
خیلی‌ها فکر می‌کنن دیزاین سیستم یعنی همون فایل فیگما که طراح بهمون میده. اما تو دنیای مهندسی نرم‌افزار، دیزاین سیستم خودش یک "محصول" است که به محصولات دیگر سرویس میده!
حالا این یعنی چی دقیقا؟ 🤔

دیزاین سیستم چیست؟
🎨
مجموعه‌ای یکپارچه از عناصر رابط کاربری (UI) قابل استفاده مجدد هست که تیم‌ها برای ساخت محصولاتشون از اون‌ها استفاده میکنن تا یک تجربه کاربری (UX) کاملا سازگار و استاندارد خلق کنن.

مثلا فرض کنین توی شرکتی کار میکنین که ۳ تا پروژه مختلف داره :
۱. سایت اصلی (Landing Page)
۲. پنل ادمین
۳. داشبورد مشتریان

بدون دیزاین سیستم : شما باید کدِ یه دکمه یا فرم ساده رو حداقل ۳ بار توی این پروژه‌ها تکرار کنید! 🤦‍♂️
با دیزاین سیستم : بدون هیچ تکرار کدی، همه‌چیز از یک منبع مشترک فراخوانی میشه
import { Button } from '@company/design-system'


در واقع این دیزاین سیستم به عنوان یه مرجع حقیقی (Single Source of Truth) برای پروژه‌های شرکت عمل می‌کنه 🎯

حالا جادوی اصلی کجاست؟ برای مثال، شرکت ری‌برند (Re-brand) میکنه و تصمیم میگیره رنگ اصلی برند و تمام پروژه‌هاش رو به «آبی» تغییر بده اگه دیزاین سیستم نداشته باشی، باید بری هزاران فایل رو تو پروژه‌های مختلف پیدا کنی و دستی تغییر بدی. اما با دیزاین سیستم، فقط کافیه رنگ رو توی همون کتابخونه‌ی مرجع عوض کنی؛ با همین یک تغییر، رنگ تمام پروژه‌های شرکت به صورت یکپارچه و خودکار آپدیت میشه ⚡️😎
👌1
☝🏻 قدم دوم
برای درک عمیق دیزاین سیستم، باید با معماری اتمیک (Atomic Design) آشنا بشین یکی از معروف‌ترین و استانداردترین روش‌ها تو دنیای فرانت‌اند بحساب میاد ⚛️
توی این متدولوژی، ما با رابط کاربری (UI) دقیقاً مثل علم شیمی برخورد میکنیم و اون رو به ۵ سطحِ مختلف تقسیم می‌کنیم:

۱. 🔴 اتم‌ها (Atoms) : کوچک‌ترین اجزای غیرقابل تجزیه! مثل یک دکمه (Button)، یک تگ اینپوت یا یک آیکون ساده.
۲. 🧬 مولکول‌ها (Molecules) : ترکیب چند اتم با هم. (مثلا: یک لیبل + یک اینپوت + یک دکمه = ساخت یک فرم جستجوی ساده).
3. 🦠 ارگانیسم‌ها (Organisms) : ترکیبِ مولکول‌ها و اتم‌ها که بخش‌های مستقل و پیچیده‌تری می‌سازن. (مثل هدر سایت، فوتر، یا یک کارتِ محصول کامل).
۴. 🧩 تمپلیت‌ها (Templates) : ساختار و لی‌آوت (Layout) کلی صفحه، اما به صورت خام و بدون دیتای واقعی.
۵. 🖼 صفحات (Pages) : مرحله‌ی نهایی! همون تمپلیت‌ها هستن که حالا با دیتای واقعیِ API پر شدن و کاربر اون‌ها رو می‌بینه.

میتونید اینکه چرا این دیزاین سیستم از علم شیمی ایده گرفته رو از وبلاگ Brad Frost سازنده این دیزاین سیستم بخونین : لینکش

نتیجه‌ی این سبک کدنویسی :
وقتی با این ذهنیت کامپوننت‌هاتون رو می‌سازین، دیگه هیچ کُدِ کثیف و درهم‌تنیده‌ای ندارین. هر قطعه از سایت جای مشخصِ خودش رو داره و مدیریت پروژه‌های بزرگ به شدت راحت و لذت‌بخش میشه 👌😎
3🔥1
☝🏻 قدم سوم
کالبدشکافی غول‌های دیزاین سیستم در جهان 🌍
کدوم شرکت‌ها استانداردهای طراحی و توسعه رو در دنیا تعیین می‌کنن؟ بیاید ۴ تا از بزرگترین دیزاین سیستم‌های جهان رو زیر ذره‌بین ببریم 👇

🔹 1. Material Design (گوگل) :
معروف‌ترین سیستم بر پایه فیزیک دنیای واقعی. تمرکز اصلی متریال روی سایه‌ها (Shadows)، عمق و انیمیشن‌های واکنش‌گراست. خیلی ساختاریافته است، اما یه ایراد بزرگ داره: به شدت ظاهر پروژه‌تون رو "گوگلی" می‌کنه و کاستوم کردنش واقعا سخته

🔹 2. Human Interface Guidelines یا HIG (اپل) :
قانون اساسیِ اپل! تمرکز عجیب و غریب روی مینیمالیسم، بلار (Blur) کردن پس‌زمینه و تایپوگرافیِ بی‌نقص. شعار اپل اینه :
کاربر نباید گیج بشه، همه‌چیز باید در ساده‌ترین و زیباترین حالتِ ممکن باشه.

🔹 3. Fluent Design (مایکروسافت) :
سیستمی که ویندوز ۱۱ و محصولات جدید مایکروسافت بر پایه‌اش ساخته شدن.
تمرکز این سیستم روی نور، عمق و متریال جذابی به اسم Acrylic (شفافیت شیشه‌ای) هست.

🔹 4. Radix UI / Shadcn (محبوب‌ترین در اکوسیستم فرانت‌اند مدرن) :
برخلاف متریال و بقیه، اینا Headless هستن!
یعنی چی؟ یعنی فقط منطقِ کامپوننت (مثل باز و بسته شدن مودال یا استانداردهای دسترسی‌پذیری) رو به شما میدن، اما هیچ استایلِ از پیش تعیین شده‌ای ندارن! این یعنی شما نهایتِ کنترل رو دارین تا دیزاین سیستمِ اختصاصی و حرفه‌ای برند خودتون رو صفر تا صد با Tailwind CSS بسازین.
خود Shadcn به صورت دیفالت 5 تا رنگ اصلی داره که شما موقع نصب انتخاب میکنین اما بعد از نصب هم میتونین کامل رنگ اصلی و همچی رو تغییر بدین و این یعنی یه دیزاین سیستم به شدت قابل کاستوم که همچی رو خودت تعیین کنی

شما تو پروژه‌هاتون ترجیح میدین از سیستم‌های آماده (مثل Material/Ant Design) استفاده کنید، یا با ابزارهایی مثل Shadcn دیزاین سیستم اختصاصی بسازین؟
نامرده هرکی تو کامنت‌ها ننویسه 😁
👍3
☝🏻 قدم چهارم
دیزاین توکن‌ها (Design Tokens) - زبان مشترک طراح و برنامه‌نویس 🤝

تو دیزاین سیستم‌های حرفه‌ای، ما چیزی به اسم کد رنگِ هاردکد شده (مثلاً #bd9855) یا سایزهای ثابت (مثل 16px) تو کدهامون نداریم! به جاش از توکن استفاده می‌کنیم 🎨

توکن چیه؟ متغیرهای استاندارد شده‌ای هستن که مقادیر دیزاین رو تو خودشون نگه میدارن ، یعنی طراح تو فیگما به جای اینکه به شما بگه این دکمه طلاییه، یه متغیر تعریف می‌کنه
color-primary-brand = #bd9855
و شما هم تو کدتون (مثلا تو tailwind.config) دقیقا همون نام رو می‌خونین و به کامپوننت‌هاتون میدین

چرا اینقدر حیاتیه؟ فرض کنین فردا برندینگِ شرکت کلا عوض شد. اگه توکن نداشته باشین باید تو ۱۰۰۰ تا فایل بگردین و رنگ‌ها رو عوض کنین.
اما با توکن، شما حتی یک خط از کدهای کامپوننت‌هاتون رو دست نمیزنین!
فقط مقدارِ همون یک توکن آپدیت میشه و کل سیستم به صورت یکپارچه تغییر رنگ میده. این یعنی مهندسیِ نرم‌افزار ⚡️
2👌2
☝🏻 قدم پنجم
استوری‌بوک (Storybook) - ویترینِ دیزاین سیستم شما 📘

حالا که اتم‌ها و مولکول‌ها رو با توکن‌ها ساختیم، این کامپوننت‌ها کجا باید نگهداری بشن؟ از کجا بدونیم چه دکمه‌ها و فرم‌هایی قبلاً ساخته شده که دوباره کدشون رو ننویسیم؟
جواب ابزاری به اسم Storybook هست! 🛠 استوری‌بوک یه محیط کاملاً ایزوله و مستقل (بیرون از پروژه اصلی) براتون می‌سازه که مثل یه کاتالوگ عمل می‌کنه.

جادوی استوری‌بوک چیه؟ شما تمام کامپوننت‌هاتون رو اونجا لیست می‌کنین، کارفرما یا بقیه اعضای تیم می‌تونن برن اونجا، با فرم‌ها تعامل داشته باشن و استیت‌های مختلف رو تست کنن. مثلاً می‌تونن حالت بارگذاری (Loading State) بصریِ دکمه‌ها رو در لحظه کلیک ببینن (که همون‌طور که می‌دونید برای UX خیلی اصولی‌تر از یه تاخیرِ ساده یا Debounce تو عملکرده) و دقیقا درک کنن سیستم چطور به کاربر فیدبک میده

اگه می‌خواید به عنوان یک فرانت‌اند دولوپرِ ارشد (Senior) رزومه بدید، توانایی داکیومنت کردن دیزاین سیستم با Storybook یکی از مهم‌ترین برگ برنده‌های شماست 💥
🔥2
🌙 شب بخیر رفقا
امروز حسابی درگیرِ دنیایِ مهندسیِ سیستم‌ها بودیم و یاد گرفتیم چطور پروژه‌هامون رو از یه حالتِ معمولی به یه سیستمِ حرفه‌ای و مقیاس‌پذیر تبدیل کنیم
امشب خوب استراحت کنید تا ذهنتون برای فردا تازه بمونه. فردا دوباره با کلی مبحثِ فنی و جذاب برمیگردیم

شبتون آروم و پر از آرامش ✌️🌌
2🔥1
سلام رفقا، صبح همگی بخیر ☕️☀️
امیدوارم هفته رو پرانرژی شروع کرده باشید. بریم که یه روز عالی رو کنار هم بسازیم.
معرفی کتابخونه 📕⚒️

امروز می‌خوام یکی از اون کتابخانه‌هایی رو معرفی کنم که اگه تو پروژه‌تون نباشه، عملا دارین چرخ رو از اول اختراع می‌کنین 🔄 : TanStack Query 📦
یا همون React Query سابق 🔄

خیلی‌ها هنوز برای گرفتنِ دیتا (Data Fetching) از useEffect استفاده می‌کنن و درگیرِ مدیریتِ Loading، Error و Caching میشن 😫. اما TanStack Query این پیچیدگی‌ها رو کامل حذف میکنه 🚀.
کش کردن خودکارِ داده‌ها.
مدیریت هوشمندِ Stateهای درخواست (Loading, Error, Success).
همگام‌سازیِ داده‌های سرور با کلاینت.

این کتابخونه رسما استانداردی برای اپلیکیشن‌های مدرنِ React/Next.js هست 🏗
⚠️ این کتابخونه فقط مختص به نکست یا ری‌اکت نیست و برای کتابخونه یا فریمورک‌های
Preact
Vue
Angular
Solid
Svelte
Lit
هم قابل استفاده هست.

کسی هست که هنوز از useEffect برای فچ کردنِ دیتا استفاده کنه 🧐؟


#Labs_library
🌟 معرفی کتابخونه 📕⚒️

بیاین یه سناریوی خیلی آشنا رو بررسی کنیم. طراح یه دیزاین خفن بهمون میده که توش کاربر با هر بار اسکرول کردن، کل صفحه به صورت نرم و انیمیشنی میره روی بخش بعدی (دقیقا مثل سایت‌های معرفی محصول اپل).
اولش با خودمون میگیم خب یه اسکرول ساده است دیگه اما وقتی شروع می‌کنیم به کد زدن، تازه دردسرها شروع میشه : هماهنگ کردن اسکرول موس، هندل کردن لمس (Touch) روی صفحه موبایل، باگ‌های مرورگرها و کلی کثیف‌کاری با جاوااسکریپت 🤦‍♂️

راه‌حل چیه؟
کتابخونه fullPage.js
این کتابخونه سال‌هاست که بهترین ابزار برای ساختن وب‌سایت‌های اسکرولیِ تمام‌صفحه (Full-screen scrolling) به حساب میاد و خوشبختانه پکیج رسمی و بسیار پایداری برای React و Next.js داره (@fullpage/react-fullpage).

چرا اینقدر محبوبه و کار رو راحت می‌کنه؟
📱 سازگاری بی‌نقص با موبایل : خیالتون بابت رفتار Swipe (کشیدن صفحه) روی گوشی‌ها کاملاً راحته.
🔗 آپدیت خودکار URL: با رفتن به هر اسلاید، آدرس سایت هم عوض میشه تا کاربر بتونه لینکِ همون بخش رو برای بقیه بفرسته (که برای سئو هم عالیه).
⚛️ بدون نیاز به کدهای اضافه : نیازی به درگیر شدن با رویدادهای پیچیده DOM یا CSSهای عجیب و غریب ندارید.

اگه تا الان برای این مدل دیزاین‌ها خودتون رو با کدهای دستی خسته می‌کردین، تو پروژه بعدی حتما این کتابخونه رو تست کنین
💣 من به شخصه با تستش کردم و میتونم بگم واقعا خروجی خفن و بدون نقصی بهتون میده

تست کردنش 2 دقیقه زمان میره اما وقتی آشنا میشی باهاش دیوانت میکنه و کلی ایده خفن به ذهنتون برمیخوره 💥

#Labs_library
2
پیش اومده تو کدهای پروژه گیر کنین یا یه کار خیلی ازتون وقت بگیره ولی بعد با نصب یه کتابخونه (پکیج) خاص، ببینید چقدر کارتون راحت شده؟

توی پروژه‌هاتون چه مشکلی داشتین و با چه کتابخونه‌ای حلش کردین ؟ 🤔

اسم اون ابزار و کاری که براتون کرده رو تو کامنتا بنویسین تا همهمون چند تا پکیج جدید و به درد بخور یاد بگیرین
عشقید ❤️
معرفی کتابخونه 📕⚒️

تاحالا شده یه کامپوننت بسازین و بعدش مجبور بشین کلی وقت بذارید تا برای حالت لودینگش یه اسکلتون (Skeleton) دقیقا شبیه به خودش طراحی کنین ( قطعا شده )؟😫
سر و کله زدن با کلاس‌های Tailwind و نوشتن تگ‌های اضافه برای ساخت لودینگ‌ها گاهی واقعاً خسته‌کننده میشه.🛠

امروز می‌خوام یه ابزار خیلی باحال به اسم Boneyard رو بهتون معرفی کنم.🚀
کار این ابزار چیه؟ خیلی ساده میاد از روی کامپوننت‌های ریکت و نکستِ شما، به صورت خودکار Skeleton می‌سازه ( مجیک )🪄

چرا خیلی به درد می‌خوره؟
دیگه نیازی نیست برای هر بخش از سایت، کدهای اسکلتون رو دستی بنویسین🚫✍️
فرم و ساختارِ اسکلتون دقیقا شبیه کامپوننت اصلیتون درمیاد🔍
سرعت توسعه‌تون رو بالا میبره و کدهاتون رو خیلی تمیزتر نگه می‌داره.🧹🚀
به جای درگیری با کدهای اضافه، این ابزار بهتون کمک می‌کنه تا ساختار لودینگِ پروژه‌ها رو تو سریع‌ترین زمان پیاده کنین.⚡️
پیشنهاد می‌کنم حتما یه نگاه به فیچرهاش بندازین 👀📖


#Labs_library
👍1