E Learning Project Report
E Learning Project Report
Platform
BACHELOR OF TECHNOLOGY
COMPUTER SCIENCE ENGINEERING
2025
BONAFIDE CERTIFICATE
This project aims to provide an AI-driven e-learning solution for skill development
across various technical and non-technical domains. The project scope was very vast,
but I’ve tried to do it to the best of my ability & knowledge. I would like to thank:
• My guide, Prof. Ritesh Kumar, for directing me on how to approach the project and
helping me figure out different approaches for the problem at hand.
• All the esteemed faculty members: Mr. Ritesh Kumar, Dr. Kanchan Bala, Mr. Alok
Kumar, Mrs. Garima, Dr. Pratik for their continued support and mentorship.
• The Dean of Gaya College of Engineering, Gaya, for providing all the necessary
facilities.
• My friends, for all the fruitful discussions on this topic which proved very helpful.
Last but not the least, my parents, for their constant support and encouragement.
I would like to thank all those who spared their valuable time to discuss and helped
me present the project in its current shape and form.
1
Contents
2 Requirement Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1 Software Requirement Specification . . . . . . . . . . . . . . . . . . . . . 8
2.2 Requirements of the Project . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1 Implementation and Software Specification Testing . . . . . . . . . . . . 20
4.2 Programming and Testing . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 Steps of Software Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4 System Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.5 Existing System of E-learning . . . . . . . . . . . . . . . . . . . . . . . . 24
4.6 Proposed System of E-learning . . . . . . . . . . . . . . . . . . . . . . . . 25
4.7 Description of Technology Used . . . . . . . . . . . . . . . . . . . . . . . 26
2
Chapter 1
3
1.1 Abstract of the Project
The purpose of SkillTree: An AI-Driven E-Learning Platform is to modernize and
automate the traditional methods of education delivery by leveraging advanced web tech-
nologies and artificial intelligence. This system is designed to replace manual processes
and deliver an efficient, interactive, and secure digital learning experience.
Built using the MERN stack, SkillTree allows educators to publish technical and non-
technical courses online while enabling learners to enroll, track their progress, and engage
with the material anytime, anywhere. With a user-friendly and responsive interface, the
platform ensures ease of access and smooth navigation for all users.
The application integrates Clerk for secure OTP-based user authentication and Stripe
for safe and seamless payment transactions. A standout feature of SkillTree is Sarthi AI,
a generative AI-powered assistant that helps students by answering course-related doubts
in real-time. This not only enhances the learning experience but also fosters independent
learning.
Educators can create an account, upload video content, write detailed descriptions,
include code snippets, set preview options, and monitor course performance and earnings
through a dedicated dashboard. Learners can also rate courses, track their completion
status, and receive instant doubt resolution.
This platform reduces redundancy, secures important data, and ensures accurate, fast,
and centralized management of e-learning content. It supports better resource utilization
and helps educational organizations focus on quality delivery rather than administrative
overhead.
• Enables learners to browse, preview, and enroll in courses from various technical
and non-technical domains.
• Displays individual learner progress with the ability to mark lessons as complete or
incomplete.
• Offers a dedicated educator dashboard for managing course content, student enroll-
ments, and earnings.
• Tracks and manages data related to users, enrollments, course progress, and trans-
actions.
• Provides an intuitive, responsive, and user-friendly interface for both students and
educators.
4
1.2 Scope of the Project
The proposed system, SkillTree: An AI-Driven E-Learning Platform, is aimed at
automating the educational delivery and management processes. The system is designed
to make course management, student engagement, and academic content delivery more
streamlined, interactive, and intelligent through the use of modern web technologies and
AI-based assistance.
In a short span of time, SkillTree allows for efficient and structured handling of course
data, user activities, and educator-student interactions. It improves accuracy, reduces
redundancy, and enhances operational efficiency for educational institutions and indi-
vidual educators. The platform will also minimize costs associated with manual course
management and improve access to learning resources.
Our project focuses on business process automation within the e-learning domain. It
computerizes multiple key functions to deliver a faster, smarter, and more secure learning
experience.
5
• Generation of reports related to Courses, Enrollments, Students, and Educators.
• Filterable reports based on specific fields such as Course Category, Progress Status,
and Ratings.
• Export reports as PDF documents for Course Progress, Payment History, and En-
rollment Details.
• Support for Excel export formats for Student Information, Educator Data, and
Course Ratings.
• Ability to export CSV files for data such as Course Completion, Student Feedback,
and Earnings.
• Payment Module: Integrated with Stripe for handling secure payments, course
purchases, and managing transaction records.
• Dashboard Module: Provides interactive dashboards for both students and ed-
ucators, displaying course progress, earnings, feedback, and analytics.
• Reporting and Export Module: Facilitates data export in PDF, Excel, and
CSV formats for user records, course statistics, earnings, and ratings.
6
1.5 Objective
The main objective of the project SkillTree: An AI-Driven E-Learning Platform
is to provide an accessible, user-friendly, and intelligent online learning environment that
enables users to learn and grow irrespective of their location. The system allows anyone
to register and access high-quality educational content tailored to their interests and skill
levels.
The platform promotes personalized learning by allowing students to explore various
technical and non-technical subjects. It enables them to preview course content, enroll
in courses, and track their progress. With integrated features like secure authentication
(via Clerk), smart payments (via Stripe), and AI-powered doubt resolution (Sarthi AI),
SkillTree ensures a seamless and supportive learning experience for users.
The project also includes a fully functional educator dashboard where verified users
can become educators, create courses, upload materials, and monitor student enrollments
and earnings. The system is designed to reduce manual effort by automating course
delivery, enrollment, progress tracking, and reporting tasks.
• To provide a scalable and interactive platform for online learning and teaching.
• To allow learners to preview, purchase (via Stripe), and track their course progress.
7
Chapter 2
Requirement Engineering
• The system must store information related to newly created and updated courses
by educators.
• The system must help educators and administrators manage and retrieve student
data based on various filters and queries.
• The system must track and update student course progress, including completion
status.
• The system must securely manage educator profiles, courses published, and student
enrollment data.
• The system must allow updating, editing, and deleting of records related to users,
courses, and transactions.
• The system must provide a powerful search functionality for quick access to courses,
users, and discussions.
• The system must integrate secure authentication (via Clerk) and payment systems
(via Stripe) to ensure the protection of user data and financial transactions.
• The system must support AI-based functionalities like the Sarthi AI doubt assistant,
which should handle and respond to user queries in real time.
8
2.2 Requirements of the Project
The SkillTree: An AI-Driven E-learning Platform is designed to create an efficient,
secure, and interactive online learning environment. To achieve its goals, the system
requires specific software and hardware resources along with certain functional and non-
functional capabilities. These requirements ensure the platform performs seamlessly and
provides a superior user experience to both learners and educators.
• User Registration and Authentication: The system must support secure user
registration and login, including OTP-based authentication via Clerk to ensure data
privacy and secure access.
• Progress Tracking and Reporting: The system must track learners’ progress,
course completion status, and provide detailed reports accessible via dashboards.
• Responsive and Interactive UI: The platform should have a responsive design
accessible on multiple devices, providing an intuitive and engaging user experience.
• Data Security and Privacy: All user data, payment details, and course materials
must be securely stored and transmitted to prevent unauthorized access.
• Export and Reporting Features: The system should support exporting reports
and data in multiple formats such as PDF, Excel, and CSV for administrative and
analytical purposes.
9
Chapter 3
10
A. Design various blocks for the overall system such as User Authentication, Course
Management, AI Doubt Assistance, Payment Integration, and Role-based Dash-
boards.
B. Break down each block into smaller, compact, and manageable modules that handle
specific tasks such as course publishing, enrollment tracking, or AI query handling.
E. Design clean and responsive input and output interfaces such as registration forms,
course cards, dashboards, progress bars, and interactive chat windows for AI assis-
tance.
• Nested documents support complex and hierarchical data, such as course content,
user profiles, and transaction logs.
• Integrated seamlessly with Node.js backend (Express) using Mongoose for object
data modeling (ODM).
• Supports horizontal scaling and sharding, making it ideal for future growth of the
SkillTree platform.
11
• Suited for applications requiring real-time analytics, high-speed read/write opera-
tions, and flexible data storage.
MongoDB has become the preferred choice in modern web development environments,
especially those using microservices, REST APIs, and cloud-native infrastructure. In the
context of this MERN-based project, it allows:
• Efficient storage of user data, authentication tokens (JWT), AI query logs, and
course metadata.
• Easy integration with tools such as Postman (for API testing), Git and GitHub
(for version control), and development utilities like Nodemon (for automatic server
reload).
12
• Identify the project’s aims and objectives, such as creating a responsive, AI-enabled
e-learning platform with secure authentication and payment integration.
• Thoroughly understand the requirements and specifications.
• Choose appropriate methods for analysis, design, and implementation based on the
MERN stack and Next.js technologies.
• Define testing techniques to ensure quality and reliability.
• Prepare comprehensive documentation covering all aspects of the project.
• Set project milestones and deliverables with clear deadlines.
• Allocate budget, keeping track of expenditures to avoid exceeding limits.
• Make project estimates for cost, time, code size, and duration.
• Allocate resources, including hardware and software tools like MongoDB, React,
Node.js, Postman, Git, and development utilities.
• Leverage previous relevant project information and digital libraries for best prac-
tices.
• Implement risk management strategies:
– Risk avoidance by careful planning and contingency measures.
– Risk detection through continuous monitoring and early identification of issues.
13
3.7 Project Profile
In the evolving landscape of software development, developers often face challenges in
adapting to new technologies and paradigms. While tools have been developed to ease the
software development process, the demand for scalable, maintainable, and well-structured
software has never been higher.
For the SkillTree: An AI-Driven E-learning Platform, Unified Modeling Lan-
guage (UML) diagrams are used to visually represent the structural and behavioral as-
pects of the system. UML has become a standard in the software engineering design
process due to its expressiveness and wide industry acceptance.
What is UML?
Unified Modeling Language (UML) is a standardized modeling language used to visualize
the design of a system. UML was developed as a unification of the object-oriented
modeling techniques of Booch, Rumbaugh (OMT), and Jacobson. Unlike methodologies
that define both process and notation, UML focuses on the modeling language itself,
making it suitable across different software development approaches.
• Class Diagram:
Describes the static structure of the system by showing classes, their attributes,
methods, and the relationships between classes. The primary relationships captured
include:
• Activity Diagram:
Represents the dynamic behavior of the system, particularly workflows such as
course publishing, payment processing, and AI-powered doubt solving. This dia-
gram helps in understanding the flow of control within and across use cases.
• State Diagram:
Demonstrates how the system behaves in response to internal and external events,
such as a course changing states from “draft” to “published” or a payment status
from “pending” to “completed.”
14
• Supporting better documentation and future maintenance.
A class diagram specific to this project is also created, depicting entities such as User,
Student, Educator, Course, Payment, and DoubtAI, along with their relationships, at-
tributes, and key operations.
• Each use case is represented by an ellipse containing the name of the function.
• Actors are shown using the stick-person icon, representing users such as students
or educators.
• A rectangle is drawn around the use cases to indicate the system boundary.
• The lines connecting actors and use cases are known as communication relation-
ships.
• External systems or services (e.g., payment gateway, AI API) are also represented
as actors, often annotated using the stereotype <<system>>.
• Student: Can register/login, browse and enroll in courses, make payments, track
progress, and ask doubts using Sarathi AI.
15
• Educator: Can register as a content creator, upload and manage courses, monitor
student engagement, and view earnings.
• Admin (Optional): Can manage users, approve educators, and monitor platform
performance.
• <<system>> Stripe API: Handles secure course payments.
• <<system>> Sarathi AI: Provides AI-driven doubt-solving assistance.
16
Key Features of DFDs
– Processes: Shown as circles; represent transformations or functions that han-
dle data.
– Data Flows: Shown as arrows; indicate the direction and movement of data
between components.
– Data Stores: Shown as open-ended rectangles; represent places where data
is held for processing.
– External Entities (Actors): Shown as rectangles; these are users or external
systems interacting with the application.
Application in SkillTree
In the SkillTree platform, a DFD helps to identify:
– The flow of user data from registration and login to course enrollment.
– The handling of payments via the Stripe API.
– The processing of student queries through Sarathi AI.
– Data transformation for course progress tracking, educator dashboards, and
course ratings.
Levels of DFD
– Level 0 DFD (Context Diagram): Provides a broad overview of the sys-
tem, its major processes, external entities, and data flows.
– Level 1 DFD: Decomposes the main process into sub-processes, showing
more detail on internal data movements.
Figure: Data Flow Diagram representing core modules and data movement in the
SkillTree E-learning Platform.
17
3.10 E-R Diagram
18
Figure: ER Diagram for SkillTree showing entity relationships between Students,
Educators, Courses, Payments, and Sarathi AI interactions.
19
Chapter 4
Construction
20
– API testing and integration validation using Postman.
– Authentication logic through Clerk and token handling via JWT.
– Modular testing and validation of each route and component before deploy-
ment.
User Training
Although the application is built to be intuitive, user documentation and guidance
have been prepared to ensure smooth onboarding for both students and educators:
Acceptance Test
A final demonstration was conducted to validate:
Installation Phase
The application was hosted and deployed using cloud platforms (e.g., Vercel/Render
for frontend and backend, and MongoDB Atlas for database), making the system
globally accessible and scalable.
Review Phase
After implementation, the system was evaluated for:
Development Recap
– Utilized modern JavaScript technologies to achieve performance and modular-
ity.
– Developed an educator-student flow with full-cycle course management.
– Achieved real-time learning support through AI integration.
21
Post-Implementation Review
After running the system in a controlled environment, we analyzed:
– System performance against initial goals.
– Cost-benefit analysis (time saved vs manual approach).
– Feedback from early users for future enhancement.
– Planned updates based on educator and student feedback.
Note: Code snapshots, test results, and UI screen captures have been attached in
the appendix section.
Unit testing focuses on verifying the smallest functional parts of the system, such
as individual components or modules. The following steps were involved:
a) Preparation of detailed test cases for each module (e.g., login, dashboard,
course enrollment).
b) Design and creation of test data, including validation scenarios for forms and
input fields.
c) Manual code review of each module for correctness and logic adherence.
d) Execution of manual testing for each component independently.
e) Rectification of bugs and revalidation after fixes.
f) Preparation of structured test result scripts for documentation.
The unit testing scope included:
– Testing module-level functionality (e.g., AI response accuracy in Sarathi AI).
– Input validation (e.g., email/OTP checks using Clerk).
– Compliance with JavaScript coding standards and React best practices.
– Logical correctness and arithmetic/data transformations (e.g., course progress
tracking).
– Code commenting standards and maintainability.
22
System Integration Testing
After successful unit testing, all modules were integrated and tested as a cohesive
system to ensure seamless operation across all features. The steps followed are:
Tools Used
– Postman – For testing backend REST APIs.
– Browser Dev Tools (Chrome/Firefox) – For frontend UI/UX testing and
debugging.
– React Testing Library (optional) – For component-level unit tests (in
future updates).
– JWT Debugger – To test and validate JSON Web Tokens used in authenti-
cation.
Testing Highlights
– Login and OTP authentication tested using Clerk under normal and edge case
scenarios.
– Stripe payment tested in test mode with different card types and failure sce-
narios.
– AI Assistant (Sarathi AI) tested with diverse question types across subjects.
– Dashboard tested for dynamic course listing, student progress tracking, and
rating updates.
– Educator module tested for course publishing, content creation, and earnings
visibility.
23
4.4 System Testing
System Testing is a crucial stage in the software development life cycle that validates
the complete and integrated software system. For SkillTree: An AI-Driven E-
learning Platform, system testing ensured that all the integrated modules worked
in harmony and met the specified requirements. The following steps were followed
during the system testing phase:
The successful execution of system testing confirmed that all integrated modules of
SkillTree perform as expected in real-world usage scenarios with high reliability,
security, and performance.
Existing System
In the traditional learning environments and many current e-learning platforms,
several limitations exist which hinder the effectiveness, scalability, and efficiency of
online education systems. The existing system suffers from the following drawbacks:
– Manual Learning and Assessment: Exams and assessments are often con-
ducted manually, which leads to inefficiencies and delays in results processing.
– Lack of Intelligent Assistance: Existing systems lack AI-driven tools for
real-time doubt solving and personalized guidance, making self-study less ef-
fective.
24
– Low Data Security: Many legacy platforms lack robust authentication and
authorization systems, risking unauthorized access and data breaches.
– High Manpower Dependency: Traditional systems require significant hu-
man intervention for managing users, content, and results.
– Time-Consuming Operations: Tasks like enrollment, fee processing, progress
tracking, and manual evaluations are time-intensive.
– Paper-Heavy Processes: Legacy systems often involve physical paperwork
for registration, attendance, grading, etc., which is inefficient and prone to
errors.
– No Role-Based Access: Higher-level educators and administrators have
limited or no direct system access or real-time visibility into platform perfor-
mance.
– Lack of Automation and Analytics: Important features such as auto-
grading, learning progress tracking, and analytics are often missing or under-
developed.
Due to these limitations, existing systems fail to deliver a scalable, secure, and
intelligent digital learning experience. SkillTree: An AI-Driven E-learning
Platform addresses all of these issues by providing a secure, modular, and fully
automated online learning environment with integrated AI assistance.
25
– AI Integration for Support: Doubt-solving assistant “Saarthi AI” offers
real-time academic help for students.
The proposed system thus provides a comprehensive and modern solution to deliver
quality education through a secure, intelligent, and user-friendly platform.
Technologies Used
The development of the project SkillTree: An AI-Driven E-learning Platform
was carried out using modern web technologies and development tools that enable
efficient, secure, and scalable application development. Below is a description of
the core technologies used:
26
7. Node.js and Express.js
Node.js was used to create the backend runtime environment, and Express.js
was used to create APIs for interacting with the database and managing busi-
ness logic. Together, they form the backend layer of the MERN stack.
8. JWT (JSON Web Token)
JWT was used to secure user sessions through token-based authentication,
enabling protected routes and verifying user roles.
9. Stripe Payment Gateway
The Stripe API was integrated for secure, real-time payment processing when
students enroll in courses.
10. Clerk Authentication System
Clerk provided a robust and modern authentication system supporting OTP-
based login, email login, and user session management.
11. Redux and React Router DOM
Redux was used for state management across components, and React Router
DOM handled routing within the single-page application architecture.
12. Postman
Postman was utilized for testing API endpoints during backend development
and debugging.
13. Git and GitHub
Git was used for version control, and GitHub served as the remote repository
for source code collaboration and tracking.
27
Chapter 5
Conclusion
Our project SkillTree: An AI-Driven E-Learning Platform is a humble yet
innovative attempt to fulfill the need for an intelligent, scalable, and user-friendly
online learning system. The system has been designed and developed with the aim
to support both learners and educators by providing a seamless and interactive
environment.
This project has adopted several modern technologies and user-friendly design prin-
ciples to make the platform powerful and intuitive. The planning and execution of
the software were carried out under a structured methodology, enabling effective
project management and timely delivery.
At the end of the development phase, we conclude that we have made significant
efforts in the following key areas:
28
– Thorough implementation and rigorous testing of the system against prepared
test cases to ensure reliability and performance.
We believe that this platform can make a meaningful contribution to modern ed-
ucation by providing learners with a flexible, accessible, and intelligent e-learning
experience.
Future Scope
In a nutshell, it can be summarized that the future scope of the project revolves
around enhancing the scalability, functionality, and user experience of the platform.
The following improvements and additions can be considered for future versions of
SkillTree: An AI-Driven E-Learning Platform:
These enhancements will significantly increase the applicability, efficiency, and user
engagement of the system. The open-ended architecture ensures that future features
and improvements can be added seamlessly.
29
Finally, we would like to thank everyone involved in the development and improve-
ment of this platform, directly or indirectly. With continuous innovation, SkillTree
aims to evolve as a comprehensive and intelligent companion for learners and edu-
cators alike.
30
Chapter 6
31
30
31 import React from ’ react ’;
32 import { assets } from ’ ../../ assets / assets ’;
33 const CallToAction = () = > {
34 return (
35 < div className = " ␣w - full ␣ relative ␣ overflow - hidden ␣ bg -
gradient - to - br ␣ from - yellow -50 ␣ to - white ␣ py -20 ␣ px -6 ␣
md : px -0 " >
36 { /* Decorative wave */ }
37 < div className = " absolute ␣ top -0 ␣ left -0 ␣ right -0 " >
38 < svg viewBox = " 0 ␣ 0 ␣ 1440 ␣ 100 " className = "w - full ␣h -
auto " >
39 < path
40 fill = " # fef9c3 "
41 d = " M0 ,64 L48 ,80 C96 ,96 ,192 ,128 ,288 ,117.3 C384
,107 ,480 ,53 ,576 ,32 C672 ,11 ,768 ,21 ,864 ,42.7 C960
,64 ,1056 ,96 ,1152 ,90.7 C
42 ␣ 1248 ,85 ,1344 ,43 ,1392 ,21.3 L1440 ,0 V100H1392C1344
,100 ,1248 ,100 ,1152 ,100 C1056 ,100 ,960 ,100 ,864 ,100 C768
,100 ,672 ,
43 ␣ 100 ,576 ,100 C480 ,100 ,384 ,100 ,288 ,100 C192 ,100 ,96 ,100 ,48 ,100
H0Z "
44 > </ path >
45 </ svg >
46 </ div >
47 < div className = " relative ␣z -10 ␣ flex ␣ flex - col ␣ items -
center ␣ text - center ␣ gap -4 " >
48 < h1 className = " md : text -5 xl ␣ text -2 xl ␣ font - bold ␣ text
- gray -800 ␣ leading - snug " >
49 Learn anything , anytime , anywhere
50 </ h1 >
51 <p className = " text - gray -600 ␣ md : text - lg ␣ max -w - xl " >
52 Master in - demand skills from industry experts
with interactive lessons , real - world projects
, and lifetime access .
53 </p >
54 < div className = " flex ␣ flex - wrap ␣ items - center ␣
justify - center ␣ font - medium ␣ gap -6 ␣ mt -6 " >
55 < button className = " px -8 ␣ py -3 ␣ rounded - lg ␣ text -
white ␣ bg - blue -600 ␣ hover : bg - blue -700 ␣
transition - all ␣ shadow - md " >
56 Get Started
57 </ button >
58 < button className = " flex ␣ items - center ␣ gap -2 ␣ text -
blue -700 ␣ hover : text - blue -900 ␣ transition " >
59 Learn More
60 < img src ={ assets . arrow_icon } alt = " arrow_icon "
className = "h -4 ␣w -4 " / >
61 </ button >
62 </ div >
63 { /* Feature Highlights */ }
32
64 < div className = " grid ␣ grid - cols -2 ␣ sm : grid - cols -4 ␣
gap -6 ␣ mt -10 ␣ text - sm ␣ text - gray -700 ␣ font - medium " >
65 < div className = " flex ␣ flex - col ␣ items - center " >
66 < img src ={ assets . star } alt = " Courses " className
= "w -6 ␣h -6 ␣ mb -1 " / >
67 100+ Expert Courses
68 </ div >
69 < div className = " flex ␣ flex - col ␣ items - center " >
70 < img src ={ assets . clock_icon || assets .
arrow_icon } alt = " Flexible " className = "w -6 ␣h
-6 ␣ mb -1 " / >
71 Learn at Your Pace
72 </ div >
73 < div className = " flex ␣ flex - col ␣ items - center " >
74 < img src ={ assets . infinite_icon || assets .
star_blank } alt = " Access " className = "w -6 ␣h -6
␣ mb -1 " / >
75 Lifetime Access
76 </ div >
77 < div className = " flex ␣ flex - col ␣ items - center " >
78 < img src ={ assets . mobile_icon || assets .
arrow_icon } alt = " Mobile " className = "w -6 ␣h -6
␣ mb -1 " / >
79 Mobile Friendly
80 import React from ’ react ’;
81 import { motion } from ’ framer - motion ’;
82 import CountUp from ’ react - countup ’;
83 const stats = [
84 { end : 500 , suffix : ’+ ’ , label : " Active ␣ Learners " } ,
85 { end : 3000 , suffix : ’+ ’ , label : " Hours ␣ Watched " } ,
86 { end : 90 , suffix : ’% ’ , label : " Career ␣ Growth ␣ Rate " } ,
87 { end : 10 , suffix : ’+ ’ , label : " Countries ␣ Reached " }
88 ];
89 const contai nerVar iants = {
90 hidden : { opacity : 0 } ,
91 visible : {
92 opacity : 1 ,
93 transition : { staggerChildren : 0.3 }
94 }
95 };
96 const itemVariants = {
97 hidden : { opacity : 0 , y : 30 } ,
98 visible : { opacity : 1 , y : 0 }
99 };
100 const Companies = () = > {
101 return (
102 < div className = " ␣w - full ␣ bg - gradient - to - b ␣ from - white ␣ via -
yellow -50 ␣ to - yellow -100 ␣ py -16 " >
103 < div className = " text - center ␣ mb -10 " >
104 < h2 className = " text -3 xl ␣ md : text -4 xl ␣ font - bold ␣ text - yellow
-900 " > Our Learning Impact </ h2 >
33
105 <p className = " text - yellow -800/80 ␣ mt -2 ␣ max -w - xl ␣ mx - auto " >
106 We ’ re ␣ proud ␣ to ␣ empower ␣ learners ␣ worldwide . ␣ Here ’s a
snapshot of our reach .
107 </p >
108 </ div >
109 < motion . div
110 className = " grid ␣ grid - cols -2 ␣ md : grid - cols -4 ␣ gap -6 ␣ px -6 ␣ md :
px -20 ␣ text - center "
111 variants ={ cont ainerV ariant s }
112 initial = " hidden "
113 whileInView = " visible "
114 viewport ={{ once : true }}
115 >
116 { stats . map (({ end , suffix , label } , index ) = > (
117 < motion . div
118 key ={ index }
119 className = "
120 ␣ bg - white ␣ shadow - lg ␣p -6 ␣ rounded - xl ␣ cursor - pointer
121 ␣ transition - transform ␣ duration -300
122 ␣ hover : - translate -y -3 ␣ hover : shadow -2 xl
123 ␣ hover : bg - yellow -100
124 ␣"
125 variants ={ itemVariants }
126
127
128
129
130
131 import React from ’ react ’;
132 import { motion } from ’ framer - motion ’;
133 import CountUp from ’ react - countup ’;
134 const stats = [
135 { end : 500 , suffix : ’+ ’ , label : " Active ␣ Learners " } ,
136 { end : 3000 , suffix : ’+ ’ , label : " Hours ␣ Watched " } ,
137 { end : 90 , suffix : ’% ’ , label : " Career ␣ Growth ␣ Rate " } ,
138 { end : 10 , suffix : ’+ ’ , label : " Countries ␣ Reached " }
139 ];
140 const contai nerVar iants = {
141 hidden : { opacity : 0 } ,
142 visible : {
143 opacity : 1 ,
144 transition : { staggerChildren : 0.3 }
145 }
146 };
147 const itemVariants = {
148 hidden : { opacity : 0 , y : 30 } ,
149 visible : { opacity : 1 , y : 0 }
150 };
151 const Companies = () = > {
152 return (
34
153 < div className = " ␣w - full ␣ bg - gradient - to - b ␣ from - white ␣
via - yellow -50 ␣ to - yellow -100 ␣ py -16 " >
154 < div className = " text - center ␣ mb -10 " >
155 < h2 className = " text -3 xl ␣ md : text -4 xl ␣ font - bold ␣ text
- yellow -900 " > Our Learning Impact </ h2 >
156 <p className = " text - yellow -800/80 ␣ mt -2 ␣ max -w - xl ␣ mx -
auto " >
157 We ’ re ␣ proud ␣ to ␣ empower ␣ learners ␣ worldwide . ␣ Here ’
s a snapshot of our reach .
158 </p >
159 </ div >
160 < motion . div
161 className = " grid ␣ grid - cols -2 ␣ md : grid - cols -4 ␣ gap -6 ␣
px -6 ␣ md : px -20 ␣ text - center "
162 variants ={ cont ainerV ariant s }
163 initial = " hidden "
164 whileInView = " visible "
165 viewport ={{ once : true }}
166 >
167 { stats . map (({ end , suffix , label } , index ) = > (
168 < motion . div
169 key ={ index }
170 className = "
171 ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ bg - white ␣ shadow - lg ␣p -6 ␣ rounded - xl ␣ cursor -
pointer
172 ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ transition - transform ␣ duration -300
173 ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ hover : - translate -y -3 ␣ hover : shadow -2 xl
174 ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ hover : bg - yellow -100
175 ␣␣␣␣␣␣␣␣␣␣␣␣"
176 variants ={ itemVariants }
177 >
178
179
180
181
182
183 import React , { useContext } from ’ react ’;
184 import { AppContext } from ’ ../../ context / AppContext ’;
185 import CourseCard from ’ ./ CourseCard ’;
186 import { Link } from ’ react - router - dom ’;
187 const CoursesSection = () = > {
188 const { allCourses } = useContext ( AppContext ) ;
189 return (
190 < div className = " py -16 ␣ md : px -40 ␣ px -6 ␣ bg - gradient - to - b ␣
from - white ␣ to - yellow -50 " >
191 < div className = " text - center ␣ mb -12 " >
192 < h2 className = " text -3 xl ␣ md : text -4 xl ␣ font - bold ␣ text
- yellow -900 " >
193 Learn from Industry Experts
194 </ h2 >
35
195 <p className = " md : text - lg ␣ text - sm ␣ text - yellow -800 ␣
mt -3 ␣ max -w -2 xl ␣ mx - auto " >
196 Explore top - rated online courses in technology ,
business , design , wellness , and more .
197 Start learning from expert instructors and
unlock new career opportunities today .
198 </p >
199 </ div >
200 < div className = " grid ␣ grid - cols -1 ␣ sm : grid - cols -2 ␣ md :
grid - cols -3 ␣ lg : grid - cols -4 ␣ gap -6 ␣ md : mb -16 ␣ mb -10 " >
201 { allCourses . slice (0 , 4) . map (( course , index ) = > (
202 < CourseCard key ={ index } course ={ course } / >
203 ))}
204 </ div >
205 < div className = " flex ␣ justify - center " >
206 < Link
207 to ={ ’/ course - list ’}
208 onClick ={() = > scrollTo (0 , 0) }
209 className = " mt -6 ␣ inline - block ␣ text - yellow -900 ␣
border ␣ border - yellow -500 ␣ px -6 ␣ py -3 ␣ rounded -
full ␣ hover : bg - yellow -100
210 ␣ transition ␣ duration -300 "
211 >
212 Browse All Courses
213 </ Link >
214 </ div >
215 </ div >
216 );
217 };
218 export default CoursesSection ;
219
220
221
222
223
224
225 import React from ’ react ’;
226 import { assets } from ’ ../../ assets / assets ’;
227 const Footer = () = > {
228 return (
229 < footer className = " bg - gradient - to - r ␣ from - orange -300 ␣
via - yellow -300 ␣ to - amber -400 ␣ text - gray -800 ␣w - full ␣ mt
-10 " >
230 < div className = " flex ␣ flex - col ␣ md : flex - row ␣ items -
start ␣ px -6 ␣ md : px -36 ␣ justify - between ␣ gap -10 ␣ py -12 ␣
border - b ␣ border
231 gray -400/50 " >
232 { /* Logo & Description */ }
233 < div className = " flex ␣ flex - col ␣ md : items - start ␣ items
- center ␣w - full ␣ md :w -1/3 " >
234 < img
36
235 src ={ assets . skillstree }
236 alt = " logo "
237 className = "w -32 ␣h - auto ␣ object - contain ␣ mb -4 "
238 />
239 <p className = " text - sm ␣ text - gray -700 ␣ text - center ␣
md : text - left ␣ leading - relaxed " >
240 Learn with SkillTree where knowledge meets
opportunity and turns into success .
241 </p >
242 </ div >
243 { /* Company Links */ }
244 < div className = " flex ␣ flex - col ␣ md : items - start ␣ items
- center ␣w - full ␣ md :w -1/4 " >
245 < h2 className = " font - semibold ␣ text - lg ␣ mb -4 " >
Company </ h2 >
246 < ul className = " flex ␣ md : flex - col ␣ justify - between ␣
text - sm ␣ text - gray -700 ␣ md : space -y -2 ␣ gap -2 ␣ md :
gap -0 " >
247 <li > < a href = " # " className = " hover : text - gray -900
" > Home </ a > </ li >
248 <li > < a href = " # " className = " hover : text - gray -900
" > About Us </ a > </ li >
249 <li > < a href = " # " className = " hover : text - gray -900
" > Contact Us </ a > </ li >
250 <li > < a href = " # " className = " hover : text - gray -900
" > Privacy Policy </ a > </ li >
251 </ ul >
252 </ div >
253 { /* Newsletter */ }
254 < div className = " hidden ␣ md : flex ␣ flex - col ␣ items -
start ␣w - full ␣ md :w -1/3 " >
255 < h2 className = " font - semibold ␣ text - lg ␣ mb -4 " >
Subscribe to our newsletter </ h2 >
256 <p className = " text - sm ␣ text - gray -700 ␣ mb -4 " >
257 Get the latest updates and free resources
delivered to your inbox .
258 </p >
259 < div className = " flex ␣ items - center ␣ gap -2 ␣w - full " >
260 < input
261 type = " email "
262 placeholder = " Enter ␣ your ␣ email "
263 className = " flex -1 ␣ border ␣ border - gray -300 ␣ bg -
white ␣ placeholder - gray -500 ␣ text - gray -800 ␣
px -3 ␣h -10 ␣ rounded ␣ outline
264 none ␣ text - sm "
265 />
266 < button className = " bg - gray -900 ␣ hover : bg - gray
-800 ␣ transition ␣w -28 ␣h -10 ␣ text - white ␣
rounded ␣ text - sm ␣ font - medium " >
267 Subscribe
268 </ button >
37
269 </ div >
270 </ div >
271 </ div >
272
273
274
275
276
277
278 };
279 useEffect (() = > {
280 if ( userData ) {
281 f e t c h U s e r E n r o l l e d C o u r s e s ()
282 }
283 } , [ userData ])
284 useEffect (() = > {
285 if ( enrolledCourses . length > 0) {
286 getC ourseP rogres s ()
287 }
288 } , [ enrolledCourses ])
289 import React , { useContext , useEffect , useState } from ’
react ’
290 import { AppContext } from ’ ../../ context / AppContext ’
291 import YouTube from ’ react - youtube ’;
292 import { assets } from ’ ../../ assets / assets ’;
293 import { useParams } from ’ react - router - dom ’;
294 import humanizeDuration from ’ humanize - duration ’;
295 import axios from ’ axios ’;
296 import { toast } from ’ react - toastify ’;
297 import Rating from ’ ../../ components / student / Rating ’;
298 import Footer from ’ ../../ components / student / Footer ’;
299 import Loading from ’ ../../ components / student / Loading ’;
300 const Player = ({ }) = > {
301 const { enrolledCourses , backendUrl , getToken ,
calculateChapterTime , userData ,
fetchUserEnrolledCourses } =
302 useContext ( AppContext )
303 const { courseId } = useParams ()
304 const [ courseData , setCourseData ] = useState ( null )
305 const [ progressData , setProgressData ] = useState ( null )
306 const [ openSections , setOpenSections ] = useState ({}) ;
307 const [ playerData , setPlayerData ] = useState ( null ) ;
308 const [ initialRating , setInitialRating ] = useState (0) ;
309 const getCourseData = () = > {
310 enrolledCourses . map (( course ) = > {
311 if ( course . _id === courseId ) {
312 setCourseData ( course )
313 course . courseRatings . map (( item ) = > {
314 if ( item . userId === userData . _id ) {
315 setInitialRating ( item . rating )
6.2 Snapshots of the Project
39
41
42
References
43