بعد از نسخه های اولیه ارائه سیستم مدیریت محتوا میشکا (GitHub - mishka-group/mishka-cms: MishkaCms an open source and real time API base CMS Powered by Elixir and Phoenix) متوجه نیازمندی بسیار فوری و مهمی شدم که باعث می شد هم سیستمم بسیار داینامیک تر بشود و هم نگهداری و به روز رسانی برای مدیران و همینطور تیم توسعه بهتر شکل بگیرد.
کل کاری که این کتابخانه می کند این است که یک سری api به صورت فانکشن به همراه یک پنل گرافیکی بسیار ساده به پروژه هایی که با الیکسیر درست شدن می دهد. حالا در این پنل شما می توانید کتابخانه هایی که بر روی پروژه شما نصب می باشند که برای core نیستند بلکه به وسیله مدیر اضافه شده است را فعال غیر فعال یا مورد جدید نصب و حذف کنید.
عملیات به روز رسانی نیز با اطلاع رسانی و صف برای مدیریت بهتر نیز در آن انجام می گیرد این امکان قسمت runtime installer می باشد که در مرحله آزمایشی می باشد و در محیط توسعه تست شده است.
ولی بخش مهم تر این هست که شما می توانید هر خروجی و ورودی یک تابع را تبدیل به یک event کنید و در آن هر تعداد پلاگین می خواهید فعال نماید و همینطور سطوح لول بندی ایجاد کنید کدام زودتر لود شود و آیا دسترسی به تغییر اطلاعات دارد یا خیر.
مثلا در نظر بگیرید شما یک فرم لاگین دارید event های پیشنهادی
قبل از لاگین
در صورتی که کاربر با موفقیت وارد شد
در صورتی که عدم موفقیت کاربر در وارد شدن دیده شد
حالا شما در سه مورد بالا مثلا می توانید
در event قبل از لاگین دکمه های شبکه های اجتماعی را قرار بدهید که با آن ها کاربر ورود کند
در event موفقیت آمیز بودن می توانید ایمیلی به صاحب اکانت بزنید که کسی وارد شده است
و در رویداد آخر می توانید آیپی و دیگر اطلاعات را کپچر کنید برای ریت لیمیتر و دیگر موارد
خوب شما دیگر به core پروژه دست نزدید و به راحتی اومدید امکاناتی که می خواستید رو به عنوان پلاگین با امکانات و hook های زیادی که برای این کتابخانه فراهم شده است اضافه کردید
در حقیقت این کتابخانه یک سری استراکچر زیر ساختی ارائه می دهد با یک رویکرد نظارتی که پروژه را بسیار پلاگین base بسازید و مدیریت خوبی رو آن داشته باشید
لینک کتابخانه در گیتهاب
لینک کتابخانه در hex
لینک داکیومنت
https://hexdocs.pm/mishka_installer/MishkaInstaller.html
لطفا نظر یا ایده ای دارید همینجا قرار بدهید با تشکر از همراهی شما