
آموزش حرفه ای NodeJS بدون پیش نیاز
الان و امروز کمتر کسی هست که از بازار کار داغ نود جی اس با خبر نباشه و یکی از دلایل استفاده از این تکنولوژی فارغ از یه خیلی از مزایاش برای برنامه نویسا(کسب و کار ها به کنار) همین بازار کارشه و ما توی این دوره از نقطه منفی صفر حتی اگه جاوااسکریپت بلد نباشید هم بهتون یادش میدیم و بعد میریم سراغ مباحث خود نود جی اس و اینقدر باهم پروژه میزنیم و تعامل میکنیم و یه خیلی نکته رو بهتون منتقل میکنیم تا به پختگی قابل قبولی برسید و درنهایت بتونید وارد بازار کار بشید. فارغ از همه این موارد ما توی این دوره علاوه بر اینکه مباحث فنی رو پوشش میدیم، بهتون یاد میدیم چطور از مهارتی که بدست میارید کسب درآمد کنید. برای مثال راجب چالشای استخدام به عنوان نود جی اس دولوپر، رزومه نویسی، بایدها و نباید های قرارداد نویسی، نکات مفید و کاربردی راجب نمونه کار زدن و... یه خیلی از مباحث دیگه بهتون آموزش داده میشه

توضیحات
نودجیاس تکنولوژی جدیدی نیست و بیش از 10 ساله که وجود داره و طی این سالها با محبوبیت صعودی که داشته تونسته سهم بزرگی از بازار کار رو به خودش اختصاص بده.
نودجیاس به شما این امکان رو میده که بتونین جاوااسکریپت رو سمت سرور اجرا کنین و باهاش برای پروژههاتون بکاند توسعه بدین.
عملاً اگه شما جاوااسکریپت رو بلدین، بدون نیاز به یادگیری زبان برنامهنویسی دیگهای میتونین با جاوااسکریپت یک وبسایت کامل (هم فرانتاند و هم بکاند) رو توسعه بدین، چی از این بهتر؟ به همین دلیله که نودجیاس یکی از مهمترین مهارتها در مسیر
آموزش برنامه نویسیمحسوب میشه و یادگیری اون میتونه مسیر شغلیتون رو چند پله جلوتر ببره.
این دوره چه فرقی با بقیه دورهها داره؟
ویژگی هایی که این دوره داره با بقیه دوره ها متمایزش میکنه، ویژگی هایی مثل:
1. پشتیبانی مادام العمر: وقتی تو دوره ثبتنام کردین، حتی تا چندین سال دیگه اگه تو Node.js سوال یا ابهامی داشتین، پشتیبانی دوره در خدمت شماست. جدا از این که تو پشتیبانی به طور مستقیم با مدرس دوره در ارتباط هستین، چندین کمک پشتیبان دیگر نیز در پشتیبانی دوره حضور دارن.
2. پروژه محور بودن: طی این دوره جدا از این که مباحث بکاند و Node.js تدریس میشن برای یادگیری و کسب تسلط بیشتر دانشجو چندین پروژه حتی به صورت فولاستک نیز توسعه داده میشه. پروژه سایت آموزشی سبزلرن، پروژه فروشگاهی، پروژه بلاگ، پروژه سوشال مدیا و ….
3. مشاوره استخدام: وقتی دوره رو گذروندین و چندین نمونه کار خوب توسعه دادین و آماده ورود به بازار کار بودین، به طور مستقیم میتونین با استاد دوره در ارتباط بوده و در زمینه استخدام و ورود به بازار کار ازشون مشاوره بگیرین.
4. بررسی و تحلیل نمونه کارها و رزومه دانشجو: وقتی یه نمونه کار توسعه دادین، رزومه آماده کردین یا با یه کارفرمایی قراره مذاکره کنین، میتونین برای تحلیل رزومه، نمونه کار یا اصول مصاحبه، فریلنسری و … نیز میتونین مستقیما از استاد دوره مشاوره بگیرین.
توی این دوره دقیقا چی یاد میگیریم؟
تو این دوره مفاهیم حوزه شغلی بکاند و Node.js رو به صورت پروژه محور یاد میگیرین.
به طوری که بعد از گذروندن دوره و توسعه 2 نمونه کار خوب بتونین به عنوان توسعه دهنده بکاند وارد بازار کار بشین.
بعد از گذروندن این دوره به چه سطحی میرسیم میتونیم چیکار کنیم؟
بعد از گذروندن این دوره میتونین به عنوان توسعه دهنده بکاند وارد بازار کار برنامه نویسی بشین و برای هر مدل کلاینت مثل وبسایت، اپلیکیشن های موبایل و … میتونین با Node.js بکاند بنویسین.
اگه این دوره رو نبینم چه اتفاقی میفته؟
اگه هدفتون فعالیت در بازار کار بکاند هست Node.js یکی از بهترین و محبوب ترین گزینه هایی هست که دارین و بنا به مزایا و ویژگی هایی این دوره داره اگه تو این دوره شرکت نکنین ممکنه Node.js رو اونطور که باید نتونین یاد بگیرین و برای ورود به بازار کار ممکنه دچار بحران های جدی بشین.
از اونجایی که این دوره امتحانش رو پس داده و دانشجو های این دوره تونستن به خروجی های خوب برسن، شما هم با گذروندن دوره متخصص Node.js و توسعه نمونه کار میتونین به خروجی های خیلی خوب در بازار بکاند برسین.
دوره رو تضمین میکنی اگه کامل ببینم نتیجه میگیرم؟
قطعا بله. با توجه به محتوا و پیشینهای که این دوره داره و خیلی از دانشجو های دوره تونستن به خروجی های خوب برسن و پروژه های خیلی خوب توسعه بدن، شما هم با گذروندن دوره، تمرین و توسعه نمونه کار میتونین وارد بازار کار بشین 👌❤️
آینده بازار کار این دوره به کجا ختم میشه ارزش وقت گذاشتن داره؟
طبق آمار استکاورفلو و گیتهاب در زمینه محبوبیت زبان های برنامه نویسی، جاوا اسکریپت چندین سال به طور پیوسته محبوب ترین و پراستفاده ترین زبان برنامه نویسی اعلام شده.
در کنار محبوبیت بالا با توجه به بازار کار فوق العاده و کامیونیتی گستردهای که جاوا اسکریپت و Node.js دارن یکی از بهترین گزینه های بکاند که ارزش وقت گذاشتن داره Node.js هست.
چه پروژه هایی در طول دوره کار میشه؟
طی این دوره 4 پروژه اصلی پیاده سازی میشه:
1. پروژه سایت آموزشی سبزلرن: پروژه سبزلرن اولین پروژه دوره متخصص Node.js هست که به صورت Api Base با دیتابیس MongoDB و پنل های مدیریت، کاربر و مدرس توسعه داده شده.
2. پروژه سایت فروشگاهی: پروژه فروشگاهی با Express، Ejs و دیتابیس MongoDB پیاده سازی شده.
3. پروژه سوشال مدیا: پروژه سوشال مدیا به صورت فول استک با دیتابیس MongoDB و تمپیلت انجین Ejs با قابلیت های انتشار پست، احراز کاربر، لایک و دیسلایک پست، سیو پست و … توسعه داده شده.
4. پروژه وبلاگ: پروژه وبلاگ با دیتابیس Mysql و فریمورک Express پیاده سازی شده.
من کی هستم؟
من محمدامین سعیدی راد هستم و یه 8 سالی هست که دارم با جاوا اسکریپت زندگی میکنم. تو شرکت های مختلفی به عنوان توسعه دهنده فرانتاند و بکاند فعالیت کردم و تیم های فریلنسری مختلفی داشتم و همچنین مدت زیادی به عنوان منتور برنامه نویسی فعالیت داشتم و تو این دوره قراره تجربه هایی که در زمینه بکاند و Node.js به دست آوردم رو بهتون انتقال بدم تا خودتون به تنهایی هر پروژهای که میخواین رو بتونین توسعه بدین و به راحتی به عنوان توسعه دهنده بکاند وارد بازار کار بشین.
توی دوره کمکم میکنی بعد از بتونم ازش کسب درآمد بکنم؟
بله قطعا. جدا از این که دوره متخصص Node.js پشتیبانی رایگان و مادام العمر داره میتونین برای تنظیم رزومه، بررسی رزومه، تحلیل نمونه کار، مصاحبه استخدامی و … به طور مستقیم با خود استاد دوره در ارتباط باشین.
چطور میتونم بهترین نتیجه رو از این دوره بگیرم؟
اگه بعد از هر جلسه از دوره که مشاهده میکنین راجع به مطالب اون جلسه تمرین، کدنویسی، سرچ و مطالعه داشته باشین و انتهای هر فصل از دوره یک تمرین بزرگ به عنوان نمونه کار توسعه بدین بهترین نتیجه رو از این دوره میگیرین.
همچنین برای نتیجه گیری بهتر پیشنهاد میکنم قبل از مشاهده هر جلسه، کاری که قراره تو اون جلسه انجام بشه رو خودتون پیاده سازی کنین. با این روند نتیجه خیلی فوق العادهای از دوره میگیرین.
ایا به پیش زمینه خاصی نیاز دارد؟
برای شرکت در دوره متخصص Node.js سبزلرن به هیچ پیشزمینه خاصی نیاز ندارین.
اگه Html و Css رو در حد مبتدی بلدین، میتونین دوره متخصص Node.js سبزلرن رو شروع کنین.
این دوره برای چه کسانی مناسب هست؟
این دوره برای افرادی هست که عاشق دنیای برنامه نویسی هستن و قصد دارن به عنوان توسعه دهنده بکاند وارد بازار کار برنامه نویسی بشن.
جلسات
ویدیوی معرفی
برنامه نویسی چیست؟
فرانتاند Vs بکاند
تاریخچه مختصر و جالب جاوا اسکریپت
آشنایی با Variable در جاوا اسکریپت
آشنایی اولیه با DataTypeها
کار با عملگر های Arithmetic
concat شدن stringها در جاوا اسکریپت
روش های تبدیل string به number
روش های تبدیل number به string
نحوه دریافت اطلاعات از کاربر با prompt + معرفی تمرین
پیاده سازی تمرین + معرفی تمرین جدید
پیاده سازی تمرین ماشین حساب ساده
کار با دیتاتایپ Boolean
کار با عملگر های Comparison
کار با دستورات شرطی در جاوا اسکریپت + معرفی تمرین
پیاده سازی تمرین اعمال محدودیت سنی
کار با else در شرطها
چطور چند شرط مختلف رو بررسی کنیم؟
کار با عملگر های Logical
استفاده از عملگر های Logical در Condition
پیاده سازی تمرین تعیین سطح کاربر
کار با Ternary Condition + معرفی تمرین
پیاده سازی تمرین تعیین سطح دسترسی کاربر - معرفی تمرین جدید
پیاده سازی تمرین تعیین زوج یا فرد بودن عدد - معرفی تمرین جدید
پیاده سازی تمرین محاسبه میانگین اعداد ورودی
کار با متد های آبجکت Math - معرفی تمرین
پیاده سازی تمرین تولید و ولیدیت کد کپچا
کار با متد های String - قسمت اول
کار با متد های String - قسمت دوم - معرفی تمرین
پیاده سازی تمرین ثبت نام کاربر با ولیدیشن تعیین شده
آشنایی با NaN و isNaN - معرفی تمرین
پیاده سازی تمرین تعیین تاریخ تولد کاربر طبق ولیدیشن تعیین شده
فانکشن چیه؟ تعریف اولین فانکشن
نحوه تعریف فانکشن به روش Expression
چطور تو فانکشنها پارامتر دریافت کنیم؟
نحوه دریافت چندین پارامتر در توابع
پیاده سازی تمرین تعیین زوج یا فرد بودن عدد به کمک فانکشن
کلمه کلیدی return در توابع
عملگر های Increment و Decrement در جاوا اسکریپت
کار با حلقه تکرار for
حلقه for چطور کار میکنه؟ - معرفی تمرین
پیاده سازی تمرین نمایش اعداد بین 0 تا ۱۰۰ - معرفی تمرین جدید
پیاده سازی تمرین نمایش اعداد زوج بین 50 تا ۱۰۰
کار با حلقه تکرار while - معرفی تمرین
پیاده سازی تمرین نمایش اعداد فرد بین ۱۰۰ تا ۲۰۰
کار با حلقه تکرار do while - معرفی تمرین
پیاده سازی تمرین تعیین تعداد ارقام عدد ورودی
تریس کد تمرین برای درک بهتر - معرفی تمرین
پیاده سازی تمرین نمایش مجموع ارقام عدد ورودی
تفاوت حلقه های while و for - ریفکتور تمرین قبلی - معرفی تمرین جدید
پیاده سازی تمرین به توان رسوندن اعداد - معرفی تمرین
پیاده سازی تمرین نمایش ستاره های پلکانی - معرفی تمرین
پیاده سازی محاسبه میانگین اعداد ورودی به کمک حلقه تکرار
آشنایی با آرایهها
مباحث مقدماتی مربوط به آرایهها
کار با متد های مقدماتی آرایهها
پیمایش آرایهها - معرفی تمرین
پیاده سازی تمرین محاسبه میانگین به کمک آرایه
آشنایی با آبجکتها
استفاده از آبجکتها و آرایه های تودرتو
کار با متد some
کار با متد find
کار با متد findIndex
کار با متد forEach
کار با متد every
کار با متد map
کار با متد filter - معرفی تمرین
پیاده سازی تمرین فروشگاه اینترنتی - معرفی تمرین جدید
پیاده سازی تمرین Task Management - معرفی تمرین جدید
پیاده سازی تمرین فروش بلیط آنلاین - معرفی تمرین جدید
پیاده سازی تمرین آزمون آنلاین
تفاوت دیتا تایپ های Reference و Primitive - معرفی تمرین
پیاده سازی تمرین ریکاوری پسورد کاربر - معرفی تمرین
پیاده سازی تمرین ماشین حساب - معرفی تمرین
پیاده سازی تمرین فروشگاه پیشرفته
آشنایی با Anonymous Function
کار با توابع IIFE
آشنایی با مفهوم Hoisting در جاوا اسکریپت
آشنایی با مفهوم مهم Scope
کار با let keyword برای ساخت Variable
کار با const keyword
کار با Arrow Function
آشنایی با مفاهیم مهم Falsy Value و Truthy Value
آشنایی با مفاهیم مهم Mutate و Immutate
کار با لوپ for in
کار به لوپ for of
آشنایی با قابلیت Spread Syntax
آشنایی با Rest Operator
قابلیت Array Destructuring
قابلیت Object Destructuring
استفاده از Object Destructuring در پارامتر فانکشن
تعیین Default Value برای پارامتر فانکشن
null Vs undefined - معرفی تمرین
پیاده سازی تمرین تعیین قرینه بودن کلمه - معرفی تمرین جدید
پیاده سازی تمرین تعیین تعداد صفر های عدد ورودی - معرفی تمرین جدید
پیاده سازی تمرین برعکس کردن ترتیب ارقام عدد ورودی - معرفی تمرین جدید
پیاده سازی تمرین برعکس کردن ترتیب کلمات جمله
اصول CleanCode برای Variable
اصول CleanCode برای Object/Array
اصول CleanCode برای Function
کار با setTimeout
کار با متد setInterval
کار با Json - قسمت اول
کار با Json - قسمت دوم
Pure Function چیست؟
HOF چیست؟
HOF چیست؟ - قسمت دوم
Callback Function چیست؟
حل مشکل متد sort - معرفی تمرین
پیاده سازی تمرین Shuffle Array
کار با Module
آشنایی با export default در module
مفاهیم Sync و Async
Callback Function کجا استفاده میشه؟
مثال واقعی برای درک کاربرد Callback Function
مفهوم Callback Hell چیست؟
Promise چیست و چه کاربردی داره؟
استفاده از Promise به عنوان خروجی فانکشن
بررسی فاز های ممکن برای Promise
هندلر finally و اصل DRY
Chaining Handlers در Promise
مثال واقعی برای درک Chaining Handlers
Api چیه و چه کاربردی داره؟
ارسال Get Request به Api
ارسال Get Request به سرور local
ریفکتور کد با async و await
قانون Object Shorthand در Es6
آشنایی با class و پارادایم OOP
تعریف Method در class
مفهوم extends و ارث بری
آشنایی با static keyword (جلسه آخر)
جلسه اطلاع رسانی فصل RegEx و Npm
نیم نگاهی به RegEx
کاراکتر های RegEx - قسمت اول
کاراکتر repeat در RegEx
Optional Character در RegEx
Limit Character در RegEx
کاراکتر های Begin و End
آشنایی با Shorthand های RegEx
گروه بندی در رجکس (Group)
کار با Flagها
lookahead و lookbehind
پروژه Date - پیاده سازی کد RegEx
استفاده از رجکس Date در جاوا اسکریپت
پروژه Decimal Number - پیاده سازی کد RegEx
استفاده از رجکس Decimal Number در جاوا اسکریپت
پروژه Emoji Converter - پیاده سازی کد RegEx
توسعه Emoji Converter در جاوا اسکریپت
پروژه استخراج لینک Instagram - پیاده سازی کد RegEx
توسعه ساختار استخراج لینک Instagram در جاوا اسکریپت
پروژه پیاده سازی RegEx برای شماره تلفن ثابت
پروژه کاربردی کد RegEx برای شماره همراه تمامی اپراتور ها(همراه اول، ایرانسل و …)
پروژه ارزیابی متون عربی (فارسی) با RegEx
پیاده سازی کد RegEx برای Email Validation
سخن پایانی
معرفی Npm
مفهوم پکیج منیجر و Npm چیست و چه کاربردی دارند؟
نصب Nodejs و Gitbash
مفهوم ماژول و برنامه نویسی ماژولار
آشنایی با کامند های پرکاربرد ترمینال
ایجاد npm init و آشنایی با package.json
نصب دپدنسی های پروژه طبق package.json
حذف پکیج های دلخواه با Npm
کاربرد فولدر node_modules و کامند npm i
مفهوم Semantic Version (نحوه ورژن بندی پکیجها)
نصب نسخه دلخواه از هر پکیج
تفاوت dependency با devDependency
نصب پکیج ها به صورت local و global
فایل package-lock چیست؟ (کار با npm list –depth)
نحوه ست کردن Config های Npm
مفهوم Flag در کامند های Npm
جزئیات مستندات پکیجها در Npm
کار با script های Npm
کار با کامند های Npm Update و نقش کاراکتر های ^ * ~ در آن
مفهوم Npx و کاربرد های آن
بحث آسیب پذیری پکیجها و کامند npm audit
استفاده از NPM به عنوان پکیج منیجر در پروژه واقعی
سخن پایانی
چطور از این دوره بهترین نتیجه رو بگیریم؟
Nodejs چیه و چطور کدامونو اجرا میکنه؟
3 روش اجرای کد جاوا اسکریپت داخل Nodejs
آشنایی با آبجکت سراسری global
آشنایی با سیستم ماژولار CommonJS
استفاده از ESM در Nodejs
انواع ماژول های مورد استفاده در Nodejs
ساخت اولین سرور با ماژول http
ارسال Response به Request
انواع Content-Type در ارسال Response
بررسی Status Codeها
بررسی Http Methods و مفهوم CRUD
نصب و کار با Postman جهت تست Api
دریافت اطلاعات از فایل با ماژول fs
تغییر محتوای فایل با ماژول fs + معرفی تمرین
پیاده سازی تمرین آپدیت فایل Json با ماژول fs
نیازسنجی پروژه مدیریت کتابخانه
شبیه سازی دیتابیس پروژه در فایل db.json
توسعه Api برای دریافت لیست کتاب های کتابخانه
مفهوم Url Param و توسعه Api برای حذف کتاب + معرفی تمرین
آشنایی با Req Body و توسعه Api اضافه کردن کتاب جدید به کتابخانه
توسعه Api برای آپدیت اطلاعات کتاب موجود
توسعه Api برای عضویت کاربر در کتابخانه
توسعه قابلیت جریمه کردن کاربر توسط مدیر در صورت تاخیر در تحویل کتاب
پیاده سازی Validation هنگام ثبت نام کاربر
توسعه قابلیت ارتقای سطح دسترسی کاربر به ادمین توسط مدیر کتابخانه
توسعه Api برای لاگین کاربر
مفهوم Relationship در دیتابیس شبیه سازی شده
توسعه Api برای امانت گرفتن کتاب توسط کاربر
توسعه Api برای تحویل دادن کتاب به کتابخانه توسط کاربر
نکات مهم راجع به ساختار پروژه مدیریت کتابخانه
حذف و rename کردن فایل و متد appendFile با fs
کار با Folderها با ماژول fs
آشنایی با Nodemon و کانفیگ هایی که داره
کار با ماژول OS
آشنایی با معماری MVC
ریفکتور پروژه مدیریت کتابخانه با معماری MVC
دیتابیس چیه و چرا استفاده میشه؟
نصب دیتابیس Mongo و رابط Compass
اتصال به دیتابیس به کمک پکیج Mongodb در Nodejs
ایجاد داکیومنت در دیتابیس با متد insertOne
ایجاد همزمان چندین داکیومنت در دیتابیس با متد insertMany
کار با پکیج dotenv برای مدیریت Environment Variables
دریافت اطلاعات از دیتابیس با متد های find و findOne
حذف داکیومنت از دیتابیس با deleteOne و deleteMany
آپدیت داکیومنت های دیتابیس با متد های update
جایگزین کردن داکیومنت با متد replace
ذخیره Nested Document در دیتابیس Mongo
Operator های فیلترینگ در انتخاب داکیومنتها
روش های Drop کردن دیتابیس و کالکشنها
Operator های مختلف برای update داکیومنتها
آشنایی با فیلد های createdAt و updatedAt
کار با آرایهها در دیتابیس Mongo
کار با limit, sort, count و ... در خروجی کوئری
استفاده از RegEx در کوئری find
کدنویسی و تست در محیط shell داخل Compass
کار با Dynamic Variables در Postman
ساخت Api Document به کمک Postman
کار با ماژول path
تبدیل کانکشن دیتابیس به ماژول
ریفکتور پروژه مدیریت کتابخانه - اتصال Model کتابها به دیتابیس
حذف کتاب از دیتابیس در پروژه مدیریت کتابخانه
Best Practice در Nodejs
سخن پایانی فصل
معرفی و نصب فریمورک Express
توسعه اولین Api با Express
کار با Route Params در Express
روش های ارسال Response
توسعه CRUD Api با Express
دریافت چندین Route Param در Api
دریافت Req Body
کار با پکیج Body-Parser
ارتباط با دیتابیس با پکیج Mongoose
ساخت اولین Model با Mongoose و ایجاد داکیومنت در Collection
اعتبارسنجی req.body با پکیج fastest-validator
روش های اعتبارسنجی objectId
توسعه Api برای حذف کاربر
دسته بندی Apiها Router اکسپرس
توسعه Controller های پروژه
کاهش حجم کد های router با متد route
انتخاب/حذف فیلد های مورد نیاز از دیتابیس
پارامتر های اختیاری route
استفاده از RegEx در توسعه آدرس Api
تعریف Middleware به صورت local
تعریف Middleware به صورت Global
توسعه Middleware بررسی سطح دسترسی کاربر
آشنایی با انواع Middleware
دستکاری req داخل Middleware
کار با پکیج Morgan
کار با Query Params در Express
استفاده از Middleware های Camelcase و Pascalcase
استفاده از میدلویر omit-empty
استفاده از میدلویر helmet جهت امنیت پروژه
استفاده از میدلویر cors
ارسال صفحات Html در Response
ست کردن آدرس فایل های static
توسعه Helper برای Path
توسعه Api برای ارور 404
انواع Relation در دیتابیس
تحلیل مثال های بیشتر برای درک بهتر انواع Relation
پیاده سازی روابط one-to-one و one-to-many در mongoose
متد populate و جمعآوری اطلاعات کالکشن مقصد
معرفی رابطه از نوع Embedded
پیاده سازی رابطه One-To-Many به صورت Embedded
پیاده سازی Schemaی رابطه Many-To-Many
ایجاد کامنت برای دورهها
استفاده از Populate های زنجیرهای برای چند Relation
مقایسه رابطه Reference و Embedded
ایجاد رابطه های مجازی (Virtual Relation)
تمرین برای درک بهتر Virtual Relation
آپلود فایل با پکیج multer
کانفیگ های diskStorage در multer
تعیین محدودیت سایز برای فایل های آپلودی
تعیین محدودیت بر اساس Type فایل های آپلودی
آپلود چندتایی فایل (Multiple Files)
Hash چیست؟
هش کردن پسورد با Bcrypt
مقایسه پسورد هش شده با پسورد خام
آشنایی با توکن و پکیج JWT
ساخت توکن با JWT
چطور توکن رو Verify کنیم؟
چطور توکن رو Decode کنیم؟
استفاده از try / catch برای Error Handling
رفع ارور های احتمالی
ارسال ارور های Multer به کلاینت - سخن پایانی
معرفی پروژه سبزلرن
نصب دپندنسیها
ایجاد Folder Structure پروژه
ذخیره سازی Env Variables و ران کردن پروژه
نیازسنجی پروژه
توسعه مدل User
توسعه روتر و کنترلر Auth
پیاده سازی Validator برای اعتبارسنجی User
ست کردن Middleware های دیفالت
پیاده سازی قابلیت ثبت نام
هش کردن پسورد کاربر - تعیین اولین کاربر به عنوان Admin
ساخت Access Token برای کاربر موقع ثبتنام
تست Api ثبت نام و حذف password از Response
توسعه مدل Ban برای کاربر های بن شده
پیاده سازی قابلیت بن کردن کاربر
جلوگیری از ثبت نام مجدد کاربر بن شده
توسعه قابلیت لاگین کاربر
توکن رو کجا و چطور دریافت میکنیم؟
توسعه Middleware جهت وریفای کردن Token
توسعه Middleware جهت بررسی مدیر/ یوزر بودن کاربر
محدود سازی استفاده از قابلیت بن کردن کاربر به مدیران سایت
پیاده سازی قابلیت دریافت لیست یوزر های ثبت نام شده
پیاده سازی قابلیت حذف یوزر
چطور Debug کنیم؟
توسعه قابلیت تغییر نقش کاربر توسط مدیر
توسعه قابلیت آپدیت اطلاعات کاربر از طریق پنل کاربری
ایجاد مدل دسته بندی دورهها
ایجاد دسته بندی و دریافت اطلاعات دسته بندی های موجود
حذف و آپدیت اطلاعات دسته بندی مورد نظر
ایجاد مدل جلسات
ایجاد مدل کامنتها
ایجاد مدل دورهها
ایجاد Uploader
توسعه قابلیت ایجاد دوره در سایت
توسعه قابلیت آپلود جلسه برای دورهها
دریافت کل جلسات آپلود شده توسط مدیر سایت
دریافت ویديو و فایل پیوست هر جلسه از دوره
دریافت ویديو و فایل پیوست هر جلسه
توسعه قابلیت ایجاد کامنت برای دورهها
توسعه قابلیت ثبتنام دانشجو در دورهها
توسعه قابلیت دریافت دوره های مربوط به دسته بندی مورد نظر
دریافت جزئیات دوره مورد نظر
سطح دسترسی کاربر به دوره
توسعه قابلیت حذف دوره توسط مدیر و مدرس
توسعه قابلیت دریافت دوره های مرتبط
توسعه قابلیت حذف دورهها فقط توسط مدیر و مدرس
توسعه قابلیت رد و تایید کامنت های ثبت شده
توسعه قابلیت پاسخدهی به کامنت
مدیریت پاسخ های ثبت شده برای کامنتها
توسعه دریافت محبوب ترین دورهها و دوره های در حال پیش فروش
دریافت کامنت های کل سایت توسط مدیر
توسعه Model و Router ارتباط با ما
ارسال پیام از سمت کاربر و دریافت آنها توسط مدیر
حذف پیام های ارسالی کاربر توسط مدیریت سایت
کانفیگ کردن Nodemailer
ارسال پاسخ های کاربران در قالب ایمیل
توسعه قابلیت عضویت در خبرنامه سایت
توسعه قابلیت سرچ گلوبال در سایت
توسعه Model و Router نوتیفیکیشنها
ارسال نوتیفیکیشن توسط مدیر به مدرسها
توسعه قابلیت مشاهده نوتیفیکیشن توسط مدرس (Seen)
توسعه Model و Router برای ذخیره سازی کد های تخفیف
توسعه قابلیت برگزاری کمپین (تخفیف همگانی)
ایجاد کد تخفیف توسط مدیران
دریافت کد های تخفیف ایجاد شده
دریافت جزئیات کد تخفیف
توسعه قابلیت های مورد نیاز برای مقالات سایت + ارائه تمرین
پیاده سازی سفارشات کاربر
توسعه مدل برای دپارتمانها و تیکتها
توسعه Router تیکتها
دریافت واحد های مختلف برای ارسال تیکت
توسعه قابلیت ایجاد تیکت توسط دانشجوها
دریافت تمام تیکت های ارسال شده توسط واحد پشتیبانی
توسعه قابلیت پاسخدهی به تیکتها توسط واحد پشتیبانی
توسعه قابلیت دریافت پاسخ تیکت جهت نمایش به دانشجو
دریافت لیست تیکت های دانشجو
توسعه Model و Router برای منو های سایت
ایجاد منو و سابمنو توسط مدیران
دریافت لیست همه منو های سایت
توسعه دریافت لیست همه دورهها
دیباگ پروژه - سخن پایانی
Template Engine چیه؟
نصب و راه اندازی Pug
چطور در Pug استایل دهی کنیم؟
کار با Attributes در Pug
دریافت اطلاعات از سرور و داینامیک سازی صفحات Pug
توسعه کد های Js داخل Pug
استفاده از Loop داخل Pug
استفاده از شرط داخل Pug
استفاده از Switch/Case در Pug
پیادهسازی Partials در Pug
استفاده از mixin ها
Post کردن اطلاعات از View به Api
اعتبارسنجی اطلاعات دریافتی از View
رجیستر کردن hbs در پروژه
استفاده از شرط و حلقه در hbs
استفاده از partial در hba
تبدیل Html سایت لندینگ پیج به hbs (مینی پروژه)
رجیستر کردن ejs
استفاده از variable در ejs
لوپ و شرطها در ejs
استفاده از partials در ejs
معرفی پروژه Cms
تبدیل Client پروژه به Ejs
پیاده سازی Router و کانفیگ های اولیه
ایجاد دوره در دیتابیس از طریق Ejs
ریدایرکت کاربر به صفحه دورهها
توسعه قابلیت حذف دوره از طریق Ejs
سخن پایانی
معرفی فصل
نمایش ارورها در Ejs با پکیج express-flash
اعتبارسنجی inline با express-validator
اضافه کردن validator
Validation های زنجیرهای
پیاده سازی Validator برای ثبت نام کاربر
پیاده سازی Custom Rule برای Validator
توسعه Middleware برای اعتبارسنجی
اعتبارسنجی param و query
توسعه Validator برای ثبتنام کاربر با Joi
اعتبارسنجی پیشرفته با Joi
تبدیل تکه کد ولیدیشن به Middleware
تشخیص ارور های Joi با isJoi
اعتبارسنجی دیتا با پکیج Express-Validation
توسعه Helper Function برای نمایش خطاها
اعتبارسنجی دیتا با پکیج Validate
اعتبارسنجی دیتا با پکیج Yup
مفهوم Stateless بودن HTTP
ست کردن کوکی روی Client
دسترسی به کوکی های کلاینت با پکیج Cookie-Parser
حذف Cookie های کلاینت
تعیین ExpireTime برای کوکی
کانفیگ های مربوط به امنیت کوکی
حفره امنیتی CSRF و کانفیگ SameSite
Session چیست؟
نحوه ست کردن و استفاده از Session
ارورشناسی در جاوا اسکریپت
چطور حرفهای دیباگ کنیم؟
فولدر استراکچر Modular
آپلود چندگانه فایل به صورت Fields
فیکس کردن باگ عجیب آپلود فایل
آشنایی با میدلویر pre در mongoose
پیاده سازی قابلیت Remember Me - تمرین
مفهوم Refresh Token چیست؟
شروع پیاده سازی سیستم احراز هویت - قابلیت ثبت نام
ایجاد Access Token و Refresh Token
توسعه قابلیت لاگین با وجود Refresh Roken
ایجاد Middleware برای Route Protection
پیاده سازی و استفاده از Refresh Token
کار با Robo 3T
اکسپورت و ایمپورت در دیتابیس
مفهوم Buffer چیست؟
استفاده از Buffer
آشنایی بیشتر با Buffer و مبناها
نحوه خواندن اطلاعات به شکل Stream
Write کردن فایل به شکل Stream
ایجاد راحتتر Stream به کمک pipe
ایجاد Stream از ترمینال با Stdin
چطور اطلاعات سئوی وبسایت رو ذخیره کنیم؟
Swagger چیه؟ - کانفیگ Swagger
ایجاد Api در Swagger - سخن پایانی
ایجاد اکانت در سرویس فراز اساماس
ارسال کد یکبار مصرف به صورت Sms
لیست ارور های مربوط به ارسال Sms
پیاده سازی مدل Otp
ذخیره سازی اطلاعات Otpها در دیتابیس
وریفای کردن کد Sms شده به کاربر
دیباگ + سخن پایانی
رونمایی از پروژه سوشال مدیا
ایجاد Folder Structure اصولی + نصب Dependencyها
تبدیل HomePage پروژه به Ejs
توسعه کانفیگ های مربوط به Headers، Body و NotFound
کانفیگ ENV و اتصال به دیتابیس
توسعه Helper های Response
توسعه Model کاربران
پیاده سازی قابلیت ثبتنام کاربران
پیاده سازی Validation ثبتنام با Yup
اتصال لاجیک ثبتنام کاربر به Ejs
نمایش مسیجها با Express-Flash
استفاده از Swal در Ejs
ذخیره سازی Access Token در کوکی
ایجاد مدل Refresh Token
پیاده سازی Static های مدل Refresh Token
ایجاد و ذخیره سازی Refresh Token در کوکی و دیتابیس
توسعه کامل قابلیت لاگین کاربران
توسعه مدل Postها
توسعه router و validator پستها
توسعه Middleware احراز هویت
توسعه Middleware تعیین وریفای شدن اکانت
توسعه Middlware آپلودر با Multer
توسعه لاجیک ایجاد پست
دیباگ + اتصال بکاند به Ejs
نمایش پیج های کاربران
بررسی دسترسی یا عدم دسترسی کاربر به پیج بقیه
اتصال قابلیت فالو و آنفالو به view
توسعه قابلیت فالو کردن پیجها
توسعه قابلیت آنفالو کردن پیجها
نمایش لیست فالوور های هر پیج
نمایش جزئیات پیج کاربران
نمایش لیست Following های هر پیج
نمایش پست های هر پیج
نمایش دکمه Manage فقط به مدیر پیج
نمایش صفحه ویرایش اطلاعات پیج به مدیر
آپلود عکس پروفایل برای پیج توسط مدیر
توسعه Model و Route های مربوط به Like و Dislike
توسعه لاجیک Like و اتصال آن به فرانتاند
نمایش لایک پست های پیجها
توسعه لاجیک Dislike و اتصال آن به فرانتاند
توسعه Model و Route های مربوط به Save کردن پست
توسعه لاجیک Save کردن پستها
توسعه لاجیک مربوط به Unsave
اتصال Save و Unsave آن به فرانتاند
دیباگ نمایش پست های پیج خودِ کاربر
نمایش کلاینت پست های Save شده پیج و اتصال آن به بکاند
توسعه لاجیک مربوط به find کردن پست های Save شده پیج
نمایش اطلاعات داینامیک هر پیج به مدیر پیج
نمایش اطلاعات منتشر کننده پست های Save شده با populate های تودرتو
توسعه قابلیت حذف پست توسط منتشر کننده (مدیر پیج)
توسعه قابلیت ثبت کامنت برای پستها
کانفیگ کردن Swagger
دستهبندی کردن Apiها در Swagger
اضافه کردن Api های پروژه به Swagger
آشنایی با Componentها در Swagger
پیاده سازی Refresh Token
توسعه مدل ResetPassword و نمایش Viewها
ارسال لینک یکبار مصرف برای Account Recovery به صورت ایمیل
توسعه لاجیک تغییر پسورد از طریق لینک یکبار مصرف
تست قابلیت فراموشی رمز عبور - سخن پایانی
جلسه معرفی - Sql Vs NoSql
Mysql Vs MongoDB
نصف و راه اندازی Mysql
کوئری های ایجاد DB و Table
کوئری های حذف DB و Table
آشنایی با Charset و Collate
آشنایی با DataType های Mysql
کوئری Alter Table
ذخیره سازی دیتا با کوئری Insert
حالت های مختلف کوئری Select - پارت 1
حالت های مختلف کوئری Select - پارت 2
حالت های مختلف کوئری Select - پارت 3
چالش های کوئری Select
سرچ در دیتابیس با کوئری LIKE
ویرایش دیتا با کوئری Update
حذف دیتا با کوئری Delete
کوئری Truncate Table
آشنایی با تایپ SET
پیاده سازی Pagination با Limit و Offset
کار با GUI
ست کردن Ttigger روی Table
کوئری های Union و Intersect
نکات کنکوری در طراحی دیتابیس
اکسپورت / ایمپورت دیتابیس در Mysql
آشنایی با Foreign Key
پیاده سازی دیتابیس فروشگاه - تمرین
پیاده سازی Relation با کوئری JOIN
JOIN های نوع Left و Right
آشنایی با توابع Mysql
مدیریت Foreign Key با Constraint
تعیین Constraint روی Columnها
IN و Between در کوئری های Mysql
کوئری Group By
استفاده از Having در Group By
متد های IFNULL و Coalesce
استفاده از Regex در کوئری
آشنایی با بحث مهم INDEXها
اتصال با Mysql از طریق Node.js
پیاده سازی CRUD در Mysql از طریق Node.js - پارت 1
پیاده سازی CRUD در Mysql از طریق Node.js - پارت 2
استفاده از Promise از طریق پکیج Mysql2
معرفی Folder Structure مناسب برای Node.js + Mysql
معرفی و ایجاد Folder Structure پروژه
دسته بندی کردن متغیر های env
پیاده سازی کوئری های Migration
نهایی سازی Migration
آشنایی با Connection Pooling
پیاده سازی کانفیگها و اجرای سرور
توسعه repo و router کاربران
توسعه لاجیک ثبتنام کاربر
توسعه لاجیگ لاگین شدن کاربر
پیاده سازی validatorها
کانفیگ کردن Ejs
اتصال لاجیک login به Ejs
اتصال لاجیگ register به Ejs
توسعه ریپوی مربوط به tagها
توسعه Api های مربوط به مدیریت Tagها
مشاهده و حذف تگها توسط مدیر
پیاده سازی Route Protection
توسعه ریپوی مقالات (ایجاد مقاله و ...)
پیاده سازی Router مقالات
توسعه آپلودر برای کاور مقالات
ویرایش تگها توسط مدیر
توسعه صفحه مقالاتِ یه تگ خاص
کانفیگ کردن CKEditor
نهایی سازی ایجاد مقاله
ذخیره سازی عکس کاور برای مقالات
اضافه کردن تگ (هشتگ) به مقاله
فشرده سازی عکس کاور مقاله قبل از ذخیره سازی
نمایش مقالات مربوط به تگ خاص
محاسبه زمانِ گذشته از انتشار مقاله
ایجاد Captcha برای فرم لاگین
توسعه میدلویر roleGuard
کوتاه کردن خلاصه مقاله در کوئری Mysql
احراز کاربر در صفحه اصلی (Home)
آماده سازی صفحه Search بین مقالات
توسعه Query سرچ بین مقالات
توسعه Query انتخاب همه مقالات با جزئیات
فرمتبندی مقالات در صفحه Home
تسک هایی برای دانشجوها - سخن پایانی
معرفی Sequelize - اتصال به دیتابیس
روش های تعریف Model در Sequelize
Option های Columnها در Model
آشنایی با DataType های Sequelize
روش های Insert کردن دیتا
حذف Recordها
آشنایی با Soft Delete
آپدیت Recordها
Increase و Decrease کردن دیتا
روش های Read کردن دیتا در Sequelize
Option های مربوط به find
کار با Where
نوشتن Where های پیشرفته
ایجاد Pagination
تعریف Virtual Field برای Modelها
توسعه Validator در سطح Column و Table
findByPK, findAndCountAll و findOrCreate
کانسپت های Sequelize-Cli
ایجاد Migration
اصول طراحی دیتابیس
پیاده سازی Seeder
پیاده سازی Relation در سطح دیتابیس
پیاده سازی Relation در سطح Sequelize (مفاهیم Associations) - سخن پایانی
ایجاد Folder Structure - نصب Dependencyها
کانفیگ کردن پروژه
پیاده سازی کانفیگ های Sequelize
تعریف Model های مورد نیاز پروژه
تعریف Migrationها
ایجاد Migration برای ایجاد Relationها
پیاده سازی Associate
توسعه JsDoc
نصب و راه اندازی Redis
اتصال به Redis از طریق Node.js
ران کردن اولیه سرور و ست کردن Middlewareها
توسعه Api برای ثبت نام کاربر
دیباگ پروژه
توسعه Login با Passport.js
جنریت کردن Captcha
اعتبارسنجی Captcha موقع لاگین کاربر
توسعه Validator برای ایجاد مقاله
توسعه AuthGuard با Passport.js
ایجاد تگ های جدید در دیتابیس (مثل استراتژی اینستاگرام)
توسعه Api ایجاد مقاله
Catch کردن ارور ER_DUP_ENTRY
Find کردن مقاله طبق Slug
توسعه Api برای حذف مقاله
توسعه Api دریافت همه مقالات
توسعه GetMe و Logout
دریافت اطلاعات شخصی از Google Client
توسعه قابلیت احراز هویت با Google
توسعه قابلیت Refresh کردن توکن
توسعه قابلیت آپدیت مقاله - سخن پایانی
آشنایی و کار با Argv
پیاده سازی Flag با Yargs
ثبت نام کاربر جدید به صورت Cli
نمایش کل لیست کاربران
حذف کاربر به صورت Cli
آشنایی با Inquirer - سخن پایانی
کار با Ngrok + کاربردها - سخن پایانی
معرفی پروژه - اتصال به Redis
کانفیگ کردن سرور
توسعه Helper Function ها
توسعه Model کاربران
ارسال کد Otp به کاربر (Sms) - قسمت 1
ارسال کد Otp به کاربر (Sms) - قسمت 2
وریفایِ Otp و لاگین / ثبتنام کاربر - قسمت 1
وریفایِ Otp و لاگین / ثبتنام کاربر - قسمت 2
توسعه روت GetMe
بن کردن کاربر توسط ادمین
اضافه کردن آدرس توسط کاربر به لیست آدرسهاش
حذف آدرسها توسط کاربر
آپدیت کردن آدرس
دریافت لیست همه کاربران توسط مدیر
اضافه کردن Pagination به پروژه
ثبتنام به عنوان فروشنده در سایت
تغییر اطلاعات فروشگاه توسط فروشنده
حذف فروشگاه از لیست فروشگاه های سایت
نمایش اطلاعات فروشنده در داشبورد
ارسال همه شهرها به کلاینت
توسعه Model دستهبندیها به همراه زیردستهبندی
اضافه کردن فیلتر های داینامیک به دستهبندیها
ایجاد کتگوری در سایت
حذف کتگوری و ساب کتگوری
تغییر اطلاعات مربوط به کتگوری فقط توسط ادمین
ایجاد SubCategory
دریافت جزئیات و محصولات هر SubCategory
حذف SubCategory توسط مدیر
ویرایش اطلاعات SubCategory
توضیحِ نحوه دریافت اطلاعات همه کتگوریها (تمرین)
توسعه لاجیک دریافت اطلاعات همه کتگوریها
توسعه Model محصولات
ایجاد محصول جدید توسط مدیر
استراتژی ایجاد محصول بدون فروشنده خارجی
استراتژی ایجاد محصول با وجود اولین فروشنده
حذف محصول توسط مدیر
حذف تصاویر محصول از هاست
دریافت اطلاعات یک محصول خاص
توسعه مدل Notes
ثبت Note برای محصولات توسط کاربر
دریافت Note ایجاد شده توسط کاربر
دریافت اطلاعات همه Note های کاربر
حذف Note ایجاد شده توسط کاربر
توسعه قابلیت Short Link برای محصولات
ویرایش Note ثبت شده توسط کاربر
ویرایش اطلاعات محصول توسط مدیر
توسعه Model و Router درخواستِ تامین محصول
ارسال درخواست تامین محصول از سمت فروشنده
دیباگ و تست پروژه
حذف درخواست تامین محصول
اعمال فیلتر روی درخواست های ثبت شده توسط فروشنده
رد درخواست تامین محصول فروشنده توسط مدیر
تایید درخواست تامین محصول فروشنده توسط مدیر
توسعه Error Handler گلوبال
توسعه Model و Router کامنت
ایجاد کامنت توسط کاربر
توسعه قابلیت حذف کامنت
دریافت کامنت های یک محصول خاص با حفظ پرفورمنس
اضافه کردن Reply به کامنت
حذف Reply
ویرایش اطلاعات کامنتها
باز کردن دسترسی برای چند Role مختلف
توسعه Model و Router سبد خرید
ایجاد سبد خرید برای کاربر
اضافه کردن محصول به سبد خرید از فروشنده دلخواه کاربر
حذف محصول از سبد خرید
دریافت محصولات موجود در سبد خرید
توسعه Model و Router سفارشات
توسعه Model و Router پرداختها
معرفی زرین پال - کانفیگ کردن درگاه پرداخت
دریافت لینک پرداخت از زرین پال
ارسال کاربر به صفحه پرداخت با مبلغ دلخواه
ارسال مبلغ کل سبد خرید کاربر به درگاه پرداخت
حذف اتوماتیک پرداختها در صورت ناموفق بودن (TTL)
اعتبارسنجی پرداخت کاربر و ایجاد سفارش
کم کردن موجودی محصول از فروشنده به تعداد سفارش کاربر
مرور کدها - تست درگاه پرداخت
دریافت همه سفارشها توسط مدیر
رد / تایید کردن سفارشات توسط مدیر - دزج کد رهگیری پستی
آشنایی با پکیج Axios
دریافت لیست همه کامنتها توسط مدیر
دریافت همه محصولات با فیلتر های مختلف
آشنایی با Aggregate در فیلتر کردن محصولات
توسعه Api Doc پروژه با Swagger
توسعه اصولی Api Doc به کمک Yaml
طراحی نمودار Er - سخن پایانی
بررسی مهارت های نرم - قسمت 1
بررسی مهارت های نرم - قسمت 2
بررسی مهارت های نرم - قسمت 3
چطور از طریق شبکه سازی معجزه کنیم؟
صفر تا صد پرسونال برندینگ برای برنامه نویسان
زبر و بم فریلنسری - دریافت اولین پروژه
اصول برنامه ریزی و مدیریت زمان به عنوان یک فریلنسر
چطور همیشه آپدیت باشیم؟ - سخن پایانی
7+ راهکار تجربی و خلاقانه برای توسعه نمونه کار - سخن پایانی
بررسی فرمت های موجود برای تنظیم رزومه
نکات مهم راجع به سیستم های ATS
چطور یک About Me جذاب بنویسیم؟
سکشن تجربه های کاری در رزومه
نمونهکارها، مهم ترین سکشن رزومه
نکات مهم راجع به سکشن Languages
بایدها و نبایدها در سکشن مهارتها
حواشی و ممنوعه های تنظیم رزومه
بررسی رزومه های دانشجویان
پاسخ به سوالات دانشجوها حول محور رزومه نویسی - سخن پایانی
انواع رزومه در شرکت های برنامه نویسی
بررسی و تحلیل اولین قرارداد استخدامی
بررسی 2 قرارداد فریلنسری
بررسی و تحلیل دومین قرارداد استخدامی
بررسی یک قرارداد NDA واقعی - سخن پایانی
20+ تکنیک مذاکره - قسمت 1
20+ تکنیک مذاکره - قسمت 2
20+ تکنیک مذاکره - قسمت 3
20+ تکنیک مذاکره - قسمت 4
پیش نیاز ها
پشتیبانی
این دوره مجهز به «سبزبات» ربات هوشمند مبتنی بر هوش مصنوعی است.
اگر در حین مشاهده جلسات دوره با سوال یا ابهامی مواجه شدید، میتوانید پرسش خود را از سبزبات بپرسید و در همان لحظه پاسخ دریافت کنید. در صورتی که نیاز به توضیح بیشتر یا پاسخ تخصصی مدرس داشتید، کافی است از سبزبات بخواهید تا سوال شما را به مدرس دوره ارجاع دهد تا مستقیماً توسط مدرس پاسخ داده شود.
