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 и централизованная обработка ошибок. Итог — замкнутый цикл монетизации: контент → поиск → оплата → защищённый доступ.

