MediaCMS
Професійна розподілена система керування вмістом для високонавантажених інтернет-видань
Створення професійних високонавантажених інтернет-видань процес доволі складний. Потрібно або тримати в штаті власних висококваліфікованих програмістів, які будуть його постійно модернізувати, або замовляти його створення іншій спеціалізованій організації. Обидва варіанти не з дешевих тому дозволити їх собі можуть лише одиниці.
Для всіх інших існують доступні безплатні готові рішення на зразок Wordpress з усіма наслідками: відносно низька швидкодія, якість коду та безпека. Цими недоліками на початках можна знехтувати якщо проєкт молодий. А що робити тим кому функціоналу Wordpress вже не вистачає та водночас відсутня можливість для створення власного професійного високонавантаженого вебсайту?
Саме для них і створена професійна система керування вмістом MediaCMS. Вона має як просту безплатну версію з базовим функціоналом, так і розширену платну. На ринку займає проміжну нішу між простішою Wordpress та складнішим індивідуальним створенням інтернет-видання під замовлення.
Масштабування
Її унікальна розподілена архітектура дає змогу краще масштабувати проєкт, щоб він витримував ще більше навантаження ніж класичні монолітні рішення. Програмний код MediaCMS складається з трьох незалежних частин (головна частина, панель керування та сервер зображень), які можливо використовувати як на одному сервері, так і на трьох окремих. Такий підхід суттєво збільшує його продуктивність.
Швидкодія
Зазвичай програмний код виконуються послідовно, очікуючи закінчення роботи попередніх операцій. Це створює затримки часу, особливо при виконанні складних операцій, які для своєї діяльності потребують багато виділених ресурсів.
Натомість програмний код MediaCMS виконується асинхронно: програма не зупиняється в очікуванні результату складної операції, а швидко перемикається на виконання інших операцій з черги й повертається назад, коли виконання складної операції завершиться. Подібна технологія відчутно пришвидшує виконання коду, особливо на високонавантажених вебсайтах.
Надійність
Для редагування інформації в MediaCMS використовується частина “Панель керування”. Для доступу в неї необхідно авторизуватись за допомогою персонального пароля користувача, який зберігається в зашифрованому вигляді. Додатково використовується reCAPTCHA для запобігання підбору пароля. Подальша взаємодія з вебсайтом відбувається за допомогою стандартизованого у RFC 7519 токена JSON Web Token (JWT).
З метою простого та надійного підвищення безпеки доступ користувачів до редагування інформації обмежений на основі типових ролей (читач, автор, редактор, головний редактор, адміністратор). Кожна наступна роль надає більше можливостей порівняно з попередньою та призначається при створенні нового користувача. Кожен з користувачів бачить лише ті пункти в меню панелі керування, які йому дозволено використовувати.
Інновації
Проєкт MediaCMS реалізовано на базі сучасних програмних технологій. Використана мова програмування JavaScript стандарту ECMAScript 2024, платформа Node.js 22, фреймворк Express.js 4, шаблонізатор EJS 3, бібліотека React 19, набір інструментів Bootstrap 5, систем керування бази даних MongoDB 8, мова стилів CSS 3, мова розмітки HTML5
Для створення контенту використовується сучасний гібридний онлайн WYSIWYG-редактор власної розробки на базі популярного редактора TinyMCE. Він дає можливість зручно редагувати контент одночасно як у вигляді сучасних блоків, так і у вигляді класичного WYSIWYG редактора.
Крім цього застосовано “гумовий дизайн”, який автоматично підлаштовується під пристрої різних розмірів. При цьому для економії трафіку одночасно адаптуються розміри зображень в широкому діапазоні. Вони попередньо автоматично створені під час завантаження на сервер зображень.
Відкритість
Безплатна версія MediaCMS розповсюджується як проєкт з відкритим початковим кодом (Open Source) та розміщується на GitHub. Такий підхід дає можливість всім охочим ознайомитись з продуктом, поставити питання які цікавлять та висловити свої побажання. Також відкритість дає можливість швидко виявляти та виправляти помилки, що робить систему більш стабільною.
Незалежність
Як тільки ви завантажили проєкт з репозиторію github, ви отримали свою незалежну копію проєкту. З нею ви можете робити все що вам заманеться - повністю адаптовувати її під свої потреби. Гнучка система контролю версій робить процес оновлення проєкту контрольованим. Ви зможете оновлювати лише ті частини, які ви бажаєте оновити. У всіх інших частинах проєкту, наприклад де вами внесені зміни, оновлювати код не потрібно.
Доступність
Не менш важливий фактор є те що система безплатна. Адже більшість інтернет-видань організації неприбуткові й платні професійні системи керування вмістом для них недоступні. А для тих організацій які потребуватимуть додаткових можливостей буде доступна платна версія MediaCMS Pro.
Застосування
Система керування вмістом MediaCMS вже успішно впроваджена та працює на декількох українських проєктах. Замовники після внесення деяких змін для адаптації до їх потреб задоволені результатом та високо оцінили якість продукту. Також вони допомогли виявити деякі дрібні помилки, які були оперативно виправлені.
Професіоналізм
В стандартній версії системи реалізований базовий функціонал, достатній для діяльності інтернет-видання. Для тих хто захоче більше можливостей зможе придбати платну професійну версію MediaCMS Pro.
В ній додатково можуть бути реалізовані такі можливості як повна підтримка типізації TypeScript, використання різних фреймворків Next.js/Koa.js/Fastify, взаємодія з MongoDB за допомогою Mongoose, кешування даних за допомогою Memcached, логування за допомогою Winston, повне покриття тестами Jest, використання контейнерів Docker, підтримка багатомовності, пошуковий рушій Elasticsearch, платна підписка для читачів, темна тема оформлення.
Питання
1. Чи можливо встановити MediaCMS на локальному ноутбуці/комп’ютері/сервері?
Так, архітектура системи керуванням вмістом MediaCMS дуже гнучка і її можна використовувати як на одному вузлі, так і на декількох. Для розміщення всіх частин разом (Main, Panel, Image) їх можна запустити на різних внутрішніх IP-адресах та скористатися вебсервером Nginx в режимі проксі, для перенаправлення зі зовнішньої IP-адреси зі стандартним портом 80 на внутрішні віртуальні сервери.
2. Як саме встановити MediaCMS?
Інструкції з встановлення для кожної частини системи (Main, Panel, Image) детально викладені в описі до кожного репозиторію на GitHub. Вам лише необхідно по черзі зайти на їх адреси та виконати їх. В кінці для зручності можете окремо завантажити та імпортувати демонстраційні дані в MongoDB з відповідного репозиторію MediaCMS Data.
3. Як перенести дані з наявної системи керування вмісту в MediaCMS?
Інтернет-видання можуть використовувати різноманітні системи керування вмістом, через що неможливо написати один універсальний конвертер даних. Відповідно для кожного з них необхідно написати власний. Зазвичай в організаціях існують власні IT-спеціалісти, які добре знають свою власну систему і можуть написати її швидше, якісніше та безплатно.
Висновок
Раніше лише в дуже великих медіаресурсів була можливість використовувати швидкі та надійні професійні системи керування вмістом. Це спричиняло суттєвий дисбаланс на ринку та шкодило справедливій конкуренції. MediaCMS змінила правила гри на ринку та дає можливість не тільки великим інтернет-виданням, але й середнім і навіть початківцям відчути переваги якісного продукту. Для цього достатньо переглянути скриншоти, потім відвідати демонстраційний вебсайт за адресою нижче та зрештою локально встановити для тестування безплатну версію з репозиторіїв GitHub.