The main goal of the LMS application is to create an easy-to-use, multi-tenant platform for enabling and engaging the students, LMS is a government-funded project aimed at creating an intuitive and engaging Learning Management System (LMS) for universities and colleges for multi-tenant logins like Super Admin, University/College admins, Faculties, and Students enabling seamless course management, student engagement, and certification tracking. Courses are inbuilt with multiple cohorts where further linked with various activities like File, Assignments submission, Attending Quiz, and going through the videos.
Project Details
Key Features:
Multi-Tenant Architecture:
- Allows multiple universities and colleges to manage their learning environments independently.
- Each tenant (institution) has distinct administrative controls for course creation and user management.
Role-Based Access Control:
- Super Admin: Manages overall platform operations and configurations.
- University/College Admins: Oversee institutional activities, course approvals, and faculty management.
- Faculties: Create and manage courses, assignments, and student progress.
- Students: Enrol in courses, complete activities, and earn certifications.
- Side Navigation Routing for Multiple Roles
Course and Cohort Management:
- Courses are created by University/College Admins and assigned to students.
- Each course consists of multiple cohorts, ensuring batch-wise organization.
- Activities within cohorts include file submissions, assignments, quizzes, and video lessons.
Student Engagement and Certification:
- Students complete various interactive learning activities to progress through the course.
- Quizzes and assignments assess their knowledge and engagement.
- Upon successful completion, students receive official certification as proof of their learning.
Video Playback Feature: Supporting seamless video playback for courses with features like play, pause, seek, and progress tracking. Handled different video formats and ensuring smooth streaming across various devices. Managing access control (e.g., only enrolled students can watch).
SCORM Compliance:
Ensure compatibility with SCORM (Sharable Content Object Reference Model) for seamless content interoperability with other learning systems.
Challenges
- Multiple Role Management: Each role (Super Admin, University/College Admins, Faculty, Students) has different navigation structures, making it complex to manage routing.
- Quiz with Multiple Attempts: Implemented a system where students can retake quizzes while maintaining attempt records and preventing abuse.
- Edit Cohort: Managing cohort updates while keeping existing student-course relationships intact.
- Add Activity (Quiz, Submissions, etc.): Dynamic form handling for multiple activity types and ensuring they sync with the backend data.
- Drag-and-Drop Listing (Edit, Update, Delete): Implemented a smooth drag-and-drop UI while maintaining backend order and handling edits.
- Event Trigger in Hasura:
Hasura monitors database events (e.g., INSERT, UPDATE, DELETE) based on the configured trigger. When an event occurs, Hasura sends a payload to the specified Webhook URL. - Webhook Endpoint:
The webhook is an HTTP endpoint implemented in the backend (e.g., Flask). This endpoint acts as a Temporal Workflow starter, passing the event payload to Temporal. - Temporal Workflow:
Temporal receives the event payload and starts a workflow instance. This workflow coordinates the business logic, such as:
i. Sending notifications (e.g., email, SMS, push notifications).
ii. Logging the event in a database.
iii. Handling retries or failures gracefully. - Notification Delivery:
Temporal ensures the execution is reliable and handles the retries or timeouts if needed.
This Temporal Workflow invokes activities for specific tasks, such as:
i. Sending the notification (email/SMS).
ii. Updating MongoDB with notification details.
Technologies
- Frontend: ReactJS, JavaScript, Tailwind CSS, Bootstrap, GraphQL, Appollo Client, Lodash, Recoil State, HTML, CSS, Figma
- Backend: Flask Backend, PostgreSQL, Redis, Hasura, MongoDB, Temporal, Docker, Doppler, WSO2
- Repositories & Data Store: GitHub, PostgreSQL, Redis, Hasura, MongoDB, Elastic search

Implementation Benefits:
Implemented Access Restrictions for Multi-tenant Management: By restricting user access, sensitive information related to specific user is protected, ensuring that only authorized personnel can manage or view data.
Managed login Functionality: Multiple logins across the application for Super Admins, University/College Admins, Faculty Admins, and Students by managing the data visible for a particular login.
Data Visualization:Graphical representation of data for Courses, Students, Colleges, and Universities in the dashboard.
Hasura: Implemented Hasura with GraphQL to attain several advantages:
- Faster Queries – GraphQL fetches only the needed data, improving speed.
- Real-time Updates – keeps data updated instantly using subscriptions.
- Auto-Generated APIs – creates APIs automatically from the database.
- Secure Access – Built-in authentication and role-based permissions to protect data and breaches.
Docker:
- Same Setup Everywhere – Runs the app the same way on any system.
- Easy to Deploy – Packs everything needed, allowing setup quick.
- Scales Easily – Can run multiple copies of the app when needed.
- Uses Fewer Resources – More efficient than traditional virtual machines.
- Speeds Up Development – Quick setup for testing and updates.
- Keeps Apps Separate – Avoids conflicts between different apps.
- Works Anywhere – Runs on any cloud or system without changes.
WSO2: WSO2 is an open-source integration platform that provides various tools for building and managing API, identity, and access management solutions. It helps organizations securely manage, authenticate, and authorize access to their APIs, applications, and services.
Doppler: Doppler securely manages environment variables, keeping sensitive data like API keys and database credentials safe. It simplifies secret management by providing centralized storage, automatic updates, and seamless integration with Flask, reducing security risks and manual errors.
Solutions
Role-Based Navigation & State Management:
- Different user roles (Super Admin, University/College Admins, Faculty, Students) required unique navigation structures.
- Used Recoil for state management and recursion to dynamically generate menus, ensuring flexibility and maintainability.
Quiz System with Multiple Attempts:
- Enabled students to retake quizzes while tracking attempts and preventing misuse.
- Used GraphQL mutations and Apollo Client to manage attempt records and enforce access control.
Cohort Editing Without Data Loss:
- Allowed updates to cohorts while preserving student-course relationships.
- Implemented Apollo Client’s cache update strategy to reflect changes in real time without unnecessary data fetching.
Activity Management (Quizzes, Submissions, etc.):
- Developed a dynamic form system for different activity types.
- Used Recoil for local state updates and GraphQL mutations for backend synchronization.
Drag-and-Drop Course Organization:
- Implemented a smooth drag-and-drop feature for editing, updating, and deleting course elements.
- Used React for UI and Apollo Client Optimistic UI updates to sync changes instantly.
Event Trigger in Hasura:
- Hasura’s event triggers were configured to monitor database events such as INSERT, UPDATE, and DELETE. When an event occurs,
- Captures the event details and payload.
- Sends a POST request to the configured webhook endpoint with the event data.
Webhook Endpoint:
- We implemented a webhook endpoint using Flask (Python) to act as an intermediary between Hasura and Temporal.
- Listens for incoming requests from Hasura.
- Initiates a Temporal Workflow to handle the event.
Temporal Workflow:
- Temporal was leveraged to ensure reliable execution of notifications and retries. Then the workflow,
- Receives the event payload.
- Executes business logic, such as:
- Sending notifications (email, SMS, push).
- Handling automatic retries in case of failures.
Notification Delivery:
- Notification Handling: Temporal invokes an activity to send an email/SMS/push notification.
- MongoDB Logging: A separate activity ensures event details are recorded.
- Retries & Timeouts: If a notification fails, Temporal automatically retries using exponential backoff.