Learning Hub — масштабована освітня платформа
B2B SaaS-платформа онлайн-навчання: гнучка монетизація (разові продажі та підписки на категорії), наскрізний пошук, захищений доступ на JWT і повноцінна адмін-панель.

// Технології
Learning Hub — освітня SaaS-платформа enterprise-рівня для B2B-ринку. Система перетворює освітній контент на захищений, прогнозований грошовий потік: від каталогу курсів і наскрізного пошуку до гнучкого білінгу та автоматизованого контролю доступу.


Архітектура: розділення та масштабованість
В основі — decoupled-архітектура: React-фронтенд і Node.js/Express-бекенд взаємодіють через RESTful API, а дані зберігаються в PostgreSQL зі строгою типізацією зв'язків (Sequelize ORM). Інтерфейс і серверну частину можна масштабувати незалежно в міру зростання числа B2B-клієнтів.
Безпека побудована на JWT: stateless-автентифікація через authMiddleware і динамічна перевірка прав (authorizeRoles) розмежовують доступ студента та адміністратора прямо на рівні API.


Управління контентом та інтелектуальний пошук
Контент організований ієрархічно: Категорія → Курс → Модуль → Урок (відео) і модульні тести. Наскрізний B2B-пошук використовує typo-tolerant логіку (iLike) та Promise.allSettled, тому помилка в одному запиті не руйнує всю пошукову видачу.
Адміністратори керують каталогом, тарифами, підписками та динамічною головною сторінкою (Hero-слайдер, SEO, прапорець isPopular) через візуальну панель на Material-UI.


Шлях студента та безшовна навігація
Шлях користувача: глобальний пошук → картка курсу → авторизація й оплата → процес навчання. React-маршрутизація (/courses/:courseId/lessons/:lessonId) оновлює контент без перезавантаження сторінки та фіксує прогрес. Успішне проходження модульного тесту відкриває доступ до наступного модуля.



Подвійний двигун монетизації B2B
Платформа поєднує дві моделі: разову купівлю конкретного курсу (таблиця UserCourseAccess) і категорійну підписку (Subscriptions з інтервалами та статусами active / cancelled / expired). Автоматизовані «ворота оплати» перевіряють доступ на рівні API і при простроченій підписці закривають контент без ручного втручання.



Готовність до масштабування
Відмовостійкість забезпечують stateless-JWT (легке горизонтальне масштабування Node.js), строгі зв’язки Sequelize (onDelete: CASCADE), ізоляція збоїв через Promise.allSettled і централізована обробка помилок. Підсумок — замкнений цикл монетизації: контент → пошук → оплата → захищений доступ.

