از لودینگ های معمولی خسته شدی؟ برو سراغ skeleton 💀
سایت skeletonreact ابزاری برای ایجاد کامپوننتهای اسکلت انیمیشنی هست و از خروجی در قالبهایی نظیر React، React Native، Vue و Vanilla HTML پشتیبانی میکنه. انیمیشن های اسکلتی رو میتونیم به عنوان جایگزینی برای لودینگهای معمولی و خسته کننده در نظر بگیریم، و اونها به ما این قابلیت رو میدن که به کاربران پیشنمایشی از ساختار صفحات، مثل مکاننماهایی برای متون یا تصاویر ارائه بدیم تا تجربه کاربری بهتری در زمان بارگذاری دادهها فراهم بشه.
🔗 Link
#tools #skeleton
@CodeModule
سایت skeletonreact ابزاری برای ایجاد کامپوننتهای اسکلت انیمیشنی هست و از خروجی در قالبهایی نظیر React، React Native، Vue و Vanilla HTML پشتیبانی میکنه. انیمیشن های اسکلتی رو میتونیم به عنوان جایگزینی برای لودینگهای معمولی و خسته کننده در نظر بگیریم، و اونها به ما این قابلیت رو میدن که به کاربران پیشنمایشی از ساختار صفحات، مثل مکاننماهایی برای متون یا تصاویر ارائه بدیم تا تجربه کاربری بهتری در زمان بارگذاری دادهها فراهم بشه.
🔗 Link
#tools #skeleton
@CodeModule
آرشیو کتاب ها و دوره های رایگان برنامه نویسی🔥
توی این پست یه آرشیو بهتون معرفی میکنم که بهتون منابعی نظیر کتابها و دورههای رایگان برای زبانها و تکنولوژیهایی مثل پایتون، جاوااسکریپت، ریاکت، جنگو، لینوکس و ... معرفی میکنه. با استفاده از این منابع، به راحتی میتونید مسیر یادگیری خودتون رو بدون هزینه و به زبان فارسی شروع کنید.
🔗 Link
#repository
@CodeModule
توی این پست یه آرشیو بهتون معرفی میکنم که بهتون منابعی نظیر کتابها و دورههای رایگان برای زبانها و تکنولوژیهایی مثل پایتون، جاوااسکریپت، ریاکت، جنگو، لینوکس و ... معرفی میکنه. با استفاده از این منابع، به راحتی میتونید مسیر یادگیری خودتون رو بدون هزینه و به زبان فارسی شروع کنید.
🔗 Link
#repository
@CodeModule
GitHub
GitHub - barnamenevisi/free-resources: آرشیو منابع رایگان آموزش برنامه نویسی به زبان فارسی ( هر کسی باید بتونه برنامه نویسی رو…
آرشیو منابع رایگان آموزش برنامه نویسی به زبان فارسی ( هر کسی باید بتونه برنامه نویسی رو یاد بگیره، مهم نیست پول داره یا نداره، به امید اینکه کسی به خاطر نداشتن پول از آموزش عقب نمونه ) - barnamenev...
TanStack Form بلاخره استیبل شد🗽
TanStack Form یک کتابخانه جدید از تیم TanStack هست که برای مدیریت فرم در پروژه های شما طراحی شده. این کتابخانه به تازگی استیبل شده و بهعنوان جایگزینی برای کتابخانههایی مثل React Hook Form و Formik در نظر گرفته میشه.
ویژگیهای اصلی TanStack Form👇🏻
پشتیبانی از چندین فریمورک و کتابخانه: این کتابخانه از React، Vue، Angular، Solid و Lit پشتیبانی میکنه.
بدون وابستگی خارجی: TanStack Form بدون وابستگی به کتابخانههای دیگه طراحی شده که منجر به حجم کم و عملکرد بهینه میشه.
پشتیبانی قوی از TypeScript: این کتابخانه با پشتیبانی از TypeScript، تجربه توسعه بهتری رو فراهم میکنه.
طراحی بدون رابط کاربری (Headless): امکان استفاده از کامپوننتها و هوکهای بدون رابط کاربری برای انعطافپذیری بیشتر در طراحی فرمها.
واکنشگرایی جزئی: بهبود عملکرد با بهروزرسانیهای جزئی در کامپوننتها.
اعتبارسنجی همزمان و غیرهمزمان: امکان تعریف قوانین اعتبارسنجی مختلف برای فیلدها و فرم.
برای اطلاعات بیشتر و نحوه استفاده، به داکیومنت این کتابخانه مراجعه کنید.
🔗 Link
#tanstack
@CodeModule
TanStack Form یک کتابخانه جدید از تیم TanStack هست که برای مدیریت فرم در پروژه های شما طراحی شده. این کتابخانه به تازگی استیبل شده و بهعنوان جایگزینی برای کتابخانههایی مثل React Hook Form و Formik در نظر گرفته میشه.
ویژگیهای اصلی TanStack Form👇🏻
پشتیبانی از چندین فریمورک و کتابخانه: این کتابخانه از React، Vue، Angular، Solid و Lit پشتیبانی میکنه.
بدون وابستگی خارجی: TanStack Form بدون وابستگی به کتابخانههای دیگه طراحی شده که منجر به حجم کم و عملکرد بهینه میشه.
پشتیبانی قوی از TypeScript: این کتابخانه با پشتیبانی از TypeScript، تجربه توسعه بهتری رو فراهم میکنه.
طراحی بدون رابط کاربری (Headless): امکان استفاده از کامپوننتها و هوکهای بدون رابط کاربری برای انعطافپذیری بیشتر در طراحی فرمها.
واکنشگرایی جزئی: بهبود عملکرد با بهروزرسانیهای جزئی در کامپوننتها.
اعتبارسنجی همزمان و غیرهمزمان: امکان تعریف قوانین اعتبارسنجی مختلف برای فیلدها و فرم.
برای اطلاعات بیشتر و نحوه استفاده، به داکیومنت این کتابخانه مراجعه کنید.
🔗 Link
#tanstack
@CodeModule
حالا بریم سراغ چیزی که همه رو توی شبکههای اجتماعی و جاهای دیگه هیجانزده کرده. طبق پستهایی که توی X دیدم و یه اعلامیه که ظاهراً 11 مارس 2025 توی وبلاگ تایپاسکریپت منتشر شده، تیم مایکروسافت داره روی یه نسخه کاملاً جدید کار میکنه که با زبان Go بازنویسی شده. یعنی کمپایلر تایپاسکریپت که الان با خودش نوشته شده و به جاوااسکریپت تبدیل میشه، قراره به یه برنامه مستقل و سریع با Go تبدیل بشه.
هنوز معلوم نیست این تغییر به Go روی خود زبان (مثل دستورات یا ویژگیها) اثر میذاره یا فقط کمپایلر رو عوض میکنه
#typescript #go #news
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
نوروز سال ۲۵۸۴ شاهنشاهی رو بهتون تبریک میگم دوستان🔥🥳
امیدوارم تموم قله های موفقیت رو فتح کنید و امسال، سال شما باشه💙
@CodeModule
امیدوارم تموم قله های موفقیت رو فتح کنید و امسال، سال شما باشه💙
@CodeModule
معماری میکرو فرانتاند چیه؟! 🪡
تا به حال شده به این فکر کنی که یه پروژه بزرگ مثل یه پازل پیچیدهاست که باید هر قطعهاش به درستی کنار هم قرار بگیره؟ حالا تصور کن که میتونستیم هر یک از این قطعات رو به صورت جداگونه و مستقل توسعه بدیم و بعد به هم وصل کنیم. اینجاست که مفهوم میکرو فرانتاند روشن میشه. میکرو فرانتاندها همونطور که از اسمشون پیداست بخشهای کوچکی از یه پروژه بزرگ هستن که به صورت مستقل و مجزا توسعه، تست و منتشر میشن.
مزایای استفاده از میکروفرانتاند 👇
مستقل بودن تیمها و توسعه سریعتر
هر تیم میتونه روی یک بخش خاص از پروژه کار کنه، بدون اینکه روی سایر بخشها تأثیر بذاره. این موضوع روند توسعه رو سریعتر و مدیریت رو سادهتر میکنه.
چند تکنولوژی در یک پروژه
در یک پروژه میشه از فریمورک و کتابخانه های مختلف مثل React، Vue یا Angular در قسمتهای مختلف استفاده کرد. این ویژگی برای پروژههای قدیمی که نیاز به مهاجرت تدریجی دارن، بسیار مفید هست.
بروزرسانی آسون و بدون تأثیر روی کل پروژه
هر میکروفرانتاند بهصورت مستقل دپلوی میشه و تغییرات در یک بخش، باعث خرابی یا مشکل در سایر بخشها نمیشه.
بهینهسازی عملکرد
بهجای لود شدن یک برنامه بزرگ، فقط بخشهای موردنیاز بارگذاری میشن که باعث بهبود زمان لود صفحه و تجربه کاربری میشه.
مقیاسپذیری بهتر
با افزایش کاربران و نیازهای پروژه، میشه بخشهای مختلف رو بهصورت مستقل گسترش داد.
با این رویکرد هر بخش از فرانتاند میتونه به صورت مستقل توسعه، تست و دیپلوی بشه. دقیقا مثل معماری میکروسرویس ها در بکاند. برای کسب اطلاعات بیشتر این مقاله رو میتونید مطالعه کنید.
#microfrontend
@CodeModule
تا به حال شده به این فکر کنی که یه پروژه بزرگ مثل یه پازل پیچیدهاست که باید هر قطعهاش به درستی کنار هم قرار بگیره؟ حالا تصور کن که میتونستیم هر یک از این قطعات رو به صورت جداگونه و مستقل توسعه بدیم و بعد به هم وصل کنیم. اینجاست که مفهوم میکرو فرانتاند روشن میشه. میکرو فرانتاندها همونطور که از اسمشون پیداست بخشهای کوچکی از یه پروژه بزرگ هستن که به صورت مستقل و مجزا توسعه، تست و منتشر میشن.
مزایای استفاده از میکروفرانتاند 👇
مستقل بودن تیمها و توسعه سریعتر
هر تیم میتونه روی یک بخش خاص از پروژه کار کنه، بدون اینکه روی سایر بخشها تأثیر بذاره. این موضوع روند توسعه رو سریعتر و مدیریت رو سادهتر میکنه.
چند تکنولوژی در یک پروژه
در یک پروژه میشه از فریمورک و کتابخانه های مختلف مثل React، Vue یا Angular در قسمتهای مختلف استفاده کرد. این ویژگی برای پروژههای قدیمی که نیاز به مهاجرت تدریجی دارن، بسیار مفید هست.
بروزرسانی آسون و بدون تأثیر روی کل پروژه
هر میکروفرانتاند بهصورت مستقل دپلوی میشه و تغییرات در یک بخش، باعث خرابی یا مشکل در سایر بخشها نمیشه.
بهینهسازی عملکرد
بهجای لود شدن یک برنامه بزرگ، فقط بخشهای موردنیاز بارگذاری میشن که باعث بهبود زمان لود صفحه و تجربه کاربری میشه.
مقیاسپذیری بهتر
با افزایش کاربران و نیازهای پروژه، میشه بخشهای مختلف رو بهصورت مستقل گسترش داد.
با این رویکرد هر بخش از فرانتاند میتونه به صورت مستقل توسعه، تست و دیپلوی بشه. دقیقا مثل معماری میکروسرویس ها در بکاند. برای کسب اطلاعات بیشتر این مقاله رو میتونید مطالعه کنید.
#microfrontend
@CodeModule
Medium
What is Microfrontend and Why You Should Know About It
In recent years, web applications have grown significantly in size and complexity. This has made traditional approaches to developing…
چرا Vitest رو به Jest ترجیح بدیم؟ 🥶
Jest و Vitest یکی از چندین فریمورکهایی هستن که برای نوشتن تست (unit test یا integration test) داخل پروژههامون استفاده میکنیم.
Vitest به عنوان جایگزینی جدیدتر، سریع تر و ساده تر معرفی شد. این فریمورک به دلیل (Hot Module Replacement) HMR و پشتیبانی از ESM (ECMAScript Modules) سرعتی به مراتب بالاتر از jest داره. پشتیبانی داخلی از Ts بدون نیاز به ابزارهای اضافی باعث شده محیط نوشتن کدها دارای ساختاری یکسان باشه و مثل خیلی از فریمورکهای دیگه اجرای تستها در مرورگر و Node.js به راحتی امکان پذیره. مهاجرت از Jest به Vitest کار چندان سختی نیست اگر از قبل با jest کار کرده باشید.
قید Jest رو کلا بزنیم؟
قطعا نه و هنوز تو بعضی شرایط انتخاب منطقیتریه. برای مثال در پروژه های Next.js یکسری محدودیتها برای Vitest وجود داره و استفاده از Jest منطقیتره.
آیا پروژه باید با vite باشه تا بتونیم از Vitest استفاده کنیم؟
Vitest بهعنوان یک فریمورک تست مستقل کار میکنه و میتونیم اون رو در هر پروژه جاوا/تایپ اسکریپت استفاده، و فقط کانفیگهای مربوطه رو اضافه کنیم.
#testing
@CodeModule
Jest و Vitest یکی از چندین فریمورکهایی هستن که برای نوشتن تست (unit test یا integration test) داخل پروژههامون استفاده میکنیم.
Vitest به عنوان جایگزینی جدیدتر، سریع تر و ساده تر معرفی شد. این فریمورک به دلیل (Hot Module Replacement) HMR و پشتیبانی از ESM (ECMAScript Modules) سرعتی به مراتب بالاتر از jest داره. پشتیبانی داخلی از Ts بدون نیاز به ابزارهای اضافی باعث شده محیط نوشتن کدها دارای ساختاری یکسان باشه و مثل خیلی از فریمورکهای دیگه اجرای تستها در مرورگر و Node.js به راحتی امکان پذیره. مهاجرت از Jest به Vitest کار چندان سختی نیست اگر از قبل با jest کار کرده باشید.
قید Jest رو کلا بزنیم؟
قطعا نه و هنوز تو بعضی شرایط انتخاب منطقیتریه. برای مثال در پروژه های Next.js یکسری محدودیتها برای Vitest وجود داره و استفاده از Jest منطقیتره.
آیا پروژه باید با vite باشه تا بتونیم از Vitest استفاده کنیم؟
Vitest بهعنوان یک فریمورک تست مستقل کار میکنه و میتونیم اون رو در هر پروژه جاوا/تایپ اسکریپت استفاده، و فقط کانفیگهای مربوطه رو اضافه کنیم.
#testing
@CodeModule
با React Scan بیشتر آشنا بشید 💎
پکیج React Scan در واقع یک ابزار نسبتاً جدید و جالب برای آنالیز و اسکن پروژههای ریکتی هست که به شما، در شناسایی رندرهای غیرضروری در پروژتون کمک میکنه. این ابزار مشکلات عملکردی مربوط به re-render شدن کامپوننتها رو بدون نیاز به تغییر در کد به راحتی شناسایی میکنه.
برخلاف ابزارهای دیگه مثل React Devtools، این پکیج بهصورت دقیق مشخص میکنه که کدوم کامپوننتها باعث کند شدن پروژتون و آسیب به پرفورمنس میشن.
📎 Document
#reactScan
@CodeModule
پکیج React Scan در واقع یک ابزار نسبتاً جدید و جالب برای آنالیز و اسکن پروژههای ریکتی هست که به شما، در شناسایی رندرهای غیرضروری در پروژتون کمک میکنه. این ابزار مشکلات عملکردی مربوط به re-render شدن کامپوننتها رو بدون نیاز به تغییر در کد به راحتی شناسایی میکنه.
برخلاف ابزارهای دیگه مثل React Devtools، این پکیج بهصورت دقیق مشخص میکنه که کدوم کامپوننتها باعث کند شدن پروژتون و آسیب به پرفورمنس میشن.
📎 Document
#reactScan
@CodeModule
چطور اکانت گیتهابم رو حفظ کنم؟ مروری بر 2FA و اهمیت مدیریت دسترسیها 🔥
چند روز پیش یک مشکلی با سیستم 2FA داشتم که خیلی به موقع خودش رو نشون داد. به اپ 2FA در گوشیم دسترسی نداشتم و از اون بدتر، ریکاوری کدهایی که باید ذخیره میکردم رو اصلاً نداشتم! (که خب معمولاً خیلیا همینطوری هستن). این شد که یک وضعیت بحرانی پیش اومد و من به از تمام اکانتهای گیتهابم اومده بودم بیرون. تنها راه دسترسی به اکانتم هم یه PAT یا (Personal Access Token) بود که به سختی ساعتها گشتم تا پیداش کنم و در نهایت تونستم وارد بشم. ولی این اتفاق به من یادآوری کرد که چقدر مهمه چند تا نکته امنیتی ساده رو برای اکانت گیتهابمون فعال کنیم تا مثل من یهو از زندگی ناامید نشین!
1- سیو کردن ریکاوری کدها
اولین و مهمترین چیزی که باید انجام بدید اینه که ریکاوری کدها رو دانلود کنید و حتما یه جایی ذخیره کنید. نوشتن اونا توی جایی که به راحتی بهش دسترسی داشته باشید (مثلاً یه فایل امن یا یه اپ مخصوص ذخیرهسازی پسورد) خیلی میتونه کمککننده باشه. این کار رو حتما انجام بدید که اگر روزی روزگاری به اپ 2FA دسترسی نداشتید، راحت بتونید وارد بشید.
2- فعال کردن SSH
یکی دیگه از کارهایی که به شدت توصیه میکنم، فعال کردن SSH برای اکانت گیتهاب هست. این کار کمک میکنه که بدون نیاز به وارد کردن پسورد یا توکن، بتونید به راحتی به گیتهاب دسترسی پیدا کنید.
نحوه فعال سازی SSH:
- ابتدا باید یک کلید SSH بسازید (با استفاده از
- بعد از ساخت کلید، باید اون رو به گیتهاب اضافه کنید از طریق تنظیمات SSH Keys در گیتهاب.
3- اکسس توکن (PAT)
همچنین به جای استفاده از پسورد برای احراز هویت، میتونید از اکسس توکنها (PAT) استفاده کنید. این توکنها برای ارتباط امنتر با گیتهاب خیلی مفید هستند.
نحوه فعال سازی PAT:
- به تنظیمات اکانت گیتهاب برید.
- در قسمت Developer Settings، گزینه Personal Access Tokens رو پیدا کنید.
- توکن جدید بسازید و سطوح دسترسی مورد نظر رو انتخاب کنید.
مهم:
اگر هیچ کدوم از این روشها رو برای اکانتتون فعال نکردید، گیتهاب هیچ تضمینی نمیده که بتونید اکانتتون رو بازیابی کنید. نهایتاً ممکنه مجبور میشید ایمیل رو unlink کنید و یه اکانت جدید بسازید، ولی حتی در این صورت هم تاریخچه کامیتها و اطلاعات دیگه رو ممکنه از دست بدید.
#github
@CodeModule
چند روز پیش یک مشکلی با سیستم 2FA داشتم که خیلی به موقع خودش رو نشون داد. به اپ 2FA در گوشیم دسترسی نداشتم و از اون بدتر، ریکاوری کدهایی که باید ذخیره میکردم رو اصلاً نداشتم! (که خب معمولاً خیلیا همینطوری هستن). این شد که یک وضعیت بحرانی پیش اومد و من به از تمام اکانتهای گیتهابم اومده بودم بیرون. تنها راه دسترسی به اکانتم هم یه PAT یا (Personal Access Token) بود که به سختی ساعتها گشتم تا پیداش کنم و در نهایت تونستم وارد بشم. ولی این اتفاق به من یادآوری کرد که چقدر مهمه چند تا نکته امنیتی ساده رو برای اکانت گیتهابمون فعال کنیم تا مثل من یهو از زندگی ناامید نشین!
1- سیو کردن ریکاوری کدها
اولین و مهمترین چیزی که باید انجام بدید اینه که ریکاوری کدها رو دانلود کنید و حتما یه جایی ذخیره کنید. نوشتن اونا توی جایی که به راحتی بهش دسترسی داشته باشید (مثلاً یه فایل امن یا یه اپ مخصوص ذخیرهسازی پسورد) خیلی میتونه کمککننده باشه. این کار رو حتما انجام بدید که اگر روزی روزگاری به اپ 2FA دسترسی نداشتید، راحت بتونید وارد بشید.
2- فعال کردن SSH
یکی دیگه از کارهایی که به شدت توصیه میکنم، فعال کردن SSH برای اکانت گیتهاب هست. این کار کمک میکنه که بدون نیاز به وارد کردن پسورد یا توکن، بتونید به راحتی به گیتهاب دسترسی پیدا کنید.
نحوه فعال سازی SSH:
- ابتدا باید یک کلید SSH بسازید (با استفاده از
ssh-keygen
در ترمینال).- بعد از ساخت کلید، باید اون رو به گیتهاب اضافه کنید از طریق تنظیمات SSH Keys در گیتهاب.
3- اکسس توکن (PAT)
همچنین به جای استفاده از پسورد برای احراز هویت، میتونید از اکسس توکنها (PAT) استفاده کنید. این توکنها برای ارتباط امنتر با گیتهاب خیلی مفید هستند.
نحوه فعال سازی PAT:
- به تنظیمات اکانت گیتهاب برید.
- در قسمت Developer Settings، گزینه Personal Access Tokens رو پیدا کنید.
- توکن جدید بسازید و سطوح دسترسی مورد نظر رو انتخاب کنید.
مهم:
اگر هیچ کدوم از این روشها رو برای اکانتتون فعال نکردید، گیتهاب هیچ تضمینی نمیده که بتونید اکانتتون رو بازیابی کنید. نهایتاً ممکنه مجبور میشید ایمیل رو unlink کنید و یه اکانت جدید بسازید، ولی حتی در این صورت هم تاریخچه کامیتها و اطلاعات دیگه رو ممکنه از دست بدید.
#github
@CodeModule
Forwarded from FullstacksJS — Academy
قابلیت جدید CSS برای ساخت Carousel
تو این ویدئو به قابلیت جدید CSS برای ساخت Carousel میپردازیم.
مشاهده ویدئو
این ویدئو بخشی از استریم های هفتگی جامعه ست شما هم میتونید با دنبال کردن کانال توی لایو ها شرکت کنید:
https://twitch.tv/fullstacksjs
عضویت در جامعه:
https://fullstacksjs.com
#wus #carousel #css
تو این ویدئو به قابلیت جدید CSS برای ساخت Carousel میپردازیم.
مشاهده ویدئو
این ویدئو بخشی از استریم های هفتگی جامعه ست شما هم میتونید با دنبال کردن کانال توی لایو ها شرکت کنید:
https://twitch.tv/fullstacksjs
عضویت در جامعه:
https://fullstacksjs.com
#wus #carousel #css
YouTube
قابلیت جدید CSS برای ساخت Carousel
تو این ویدئو به قابلیت جدید CSS برای ساخت Carousel میپردازیم.
این ویدئو بخشی از استریم های هفتگی جامعه ست شما هم میتونید با دنبال کردن کانال توی لایو ها شرکت کنید:
https://twitch.tv/fullstacksjs
عضویت در جامعه:
https://fullstacksjs.com
#fullstacksjs #carousel…
این ویدئو بخشی از استریم های هفتگی جامعه ست شما هم میتونید با دنبال کردن کانال توی لایو ها شرکت کنید:
https://twitch.tv/fullstacksjs
عضویت در جامعه:
https://fullstacksjs.com
#fullstacksjs #carousel…
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔗 Link
#figma
@CodeModule
🔗 Link
#figma
@CodeModule
یه موردی خیلی توجهم رو جلب کرده.
توی لینکدین پست های زیادی میبینم که همکار های خانم به دنبال کار هستن و در کنار رزومه، عکسی از خودشون هم قرار میدن.
واقعا رسالت این کار چیه؟ /:
در این که قشر قابل توجهی از افراد اصطلاحا هول تشریف دارن شکی نیست و خیلی مورد میبینیم خانم هایی که از دست این موضوع شاکی هستن. ولی خب اکثریت خود خانمها هم دارن به این موضوع قدرت میبخشن و سو افتاده میکنن که اصلا خوب نیست.
@CodeModule
توی لینکدین پست های زیادی میبینم که همکار های خانم به دنبال کار هستن و در کنار رزومه، عکسی از خودشون هم قرار میدن.
واقعا رسالت این کار چیه؟ /:
در این که قشر قابل توجهی از افراد اصطلاحا هول تشریف دارن شکی نیست و خیلی مورد میبینیم خانم هایی که از دست این موضوع شاکی هستن. ولی خب اکثریت خود خانمها هم دارن به این موضوع قدرت میبخشن و سو افتاده میکنن که اصلا خوب نیست.
@CodeModule