Learning Hub — Scalable Learning Platform
B2B SaaS e-learning platform: flexible monetization (one-time purchases and category subscriptions), global search, JWT-secured access and a full admin panel.

// Technologies
Learning Hub is an enterprise-grade e-learning SaaS platform for the B2B market. The system turns educational content into a secure, predictable revenue stream — from the course catalog and global search to flexible billing and automated access control.


Architecture: separation and scalability
At its core is a decoupled architecture: a React frontend and a Node.js/Express backend communicate over a RESTful API, while data is stored in PostgreSQL with strictly typed relations (Sequelize ORM). The frontend and backend can scale independently as the number of B2B clients grows.
Security is built on JWT: stateless authentication via authMiddleware and dynamic permission checks (authorizeRoles) separate student and administrator access right at the API level.


Content management and intelligent search
Content is organized hierarchically: Category → Course → Module → Lesson (video) and module tests. The global B2B search uses typo-tolerant logic (iLike) and Promise.allSettled, so an error in a single query never breaks the entire result set.
Administrators manage the catalog, pricing, subscriptions and the dynamic homepage (hero slider, SEO, isPopular flag) through a visual Material-UI panel.


Student journey and seamless navigation
The user path: global search → course card → authorization and payment → the learning process. React routing (/courses/:courseId/lessons/:lessonId) updates content without a page reload and records progress. Passing a module test unlocks access to the next module.



Dual B2B monetization engine
The platform combines two models: a one-time purchase of a specific course (the UserCourseAccess table) and a category subscription (Subscriptions with intervals and active / cancelled / expired statuses). Automated payment gates check access at the API level and, once a subscription expires, lock the content without any manual intervention.



Ready to scale
Fault tolerance is ensured by stateless JWT (easy horizontal scaling of Node.js), strict Sequelize relations (onDelete: CASCADE), failure isolation via Promise.allSettled and centralized error handling. The result is a closed monetization loop: content → search → payment → secured access.

