/Online-Courses-Web

This MERN Stack project creates an online course website with UML design, project management, iterative development, and security measures like token encryption and password hashing.

Primary LanguageJavaScript

Online Courses Website

This MERN Stack project involves the development of a website that offers online courses, incorporating knowledge of object-oriented system design through UML specification, project management, and iterative development. Additionally, the product implements a security method using token encryption and password hashing.

Project Name Online Courses Website
Subject Object-Oriented Software Engineering
Start Date 03/2024
End Date 05/2024
Team Size 4
Documentation PDF
Project Management Docs PDF
Live Website LINK
Development Process Iterative, Incremental Frameworks
Unified Modeling Language Use Case Diagram, Class Diagram, Sequence Diagram, Collaboration Diagram

Technologies Applied

Technology
UX/UI - Client Side NodeJS, Vite & ReactJS, Bootstrap
API Endpoints - Server Side NodeJS, ExpressJS
Database MongoDB
Cloud Storage Cloudinary
Code Editor VSCode
Source Control Git, Github
Deployment Render, MongoDB Atlas
UML Diagrams Draw.io, PlantUML

API Endpoints

USER ENDPOINTS
Endpoint Method Description
/api/users/register POST Register a new user
/api/users/register-app-user POST Register a new app user
/api/users/register/instructor POST Register a new instructor (requires authentication)
/api/users/otp-authentication POST Authenticate user with OTP
/api/users/login POST Login user
/api/users/login-app-user POST Login app user
/api/users/forgot-password POST Request password reset
/api/users/reset-password/:id/:token POST Reset password with specific ID and token
/api/users GET Get current user information (requires authentication)
/api/users/update-profile PUT Update user profile information (requires authentication, file upload)
/api/users/update-profile-picture PUT Update user profile picture (requires authentication, file upload)
/api/users/change-password PUT Change user password (requires authentication)
/api/users/change-password-app-user PUT Change app user password (requires authentication)
/api/users/change-app-user-name PUT Change app user name (requires authentication)
/api/users/get-list-users/:role GET Get list of users by role (requires authentication)
/api/users/:id GET Get user information by ID
/api/users/change-user-status/:id PUT Change user status by ID (requires authentication)
COURSE ENDPOINTS
Endpoint Method Description
/api/courses/create-course POST Instructor creates a new course (requires authentication, file upload)
/api/courses/update-course-intro/:id PUT Update course introduction (requires authentication, file upload)
/api/courses/delete-course/:id DELETE Delete a course (requires authentication)
/api/courses/user-courses GET Get a list of courses created by the instructor (requires authentication)
/api/courses/search-user-courses POST Search for courses created by the instructor (requires authentication)
/api/courses/search-courses POST Search for all courses
/api/courses/change-course-visibility/:id PUT Change the visibility status of a course (requires authentication)
/api/courses/change-course-status/:id PUT Change the status of a course (requires authentication)
/api/courses/all GET Get all courses
/api/courses/getNewestCourse GET Get the newest course
/api/courses/getBestSellerCourse GET Get the best-selling course
/api/courses/find_course/:str GET Find a course by string
/api/courses/get_course/:id GET Get detailed information of a course
/api/courses/get-courses-by-instructor/:id GET Get a list of courses by instructor ID (requires authentication)
/api/courses/get-courses-by-student/:id GET Get a list of courses by student ID (requires authentication)
REVIEW ENDPOINTS
Endpoint Method Description
/api/reviews/create_review/:courseId POST Create a review for a course (requires authentication)
/api/reviews/get-review-course/:courseId GET Get reviews for a course
/api/reviews/get-my-review-for-course/:courseId GET Get the authenticated user's review for a course (requires authentication)
LESSON ENDPOINTS
Endpoint Method Description
/api/lessons/get-course-lessons POST Get lessons for a course
/api/lessons/delete-lesson/:id DELETE Delete a lesson (requires authentication)
/api/lessons/update-lesson/:id PUT Update a lesson (requires authentication)
/api/lessons/create-lesson POST Create a new lesson (requires authentication)
/api/lessons/get-lesson/:id GET Get a specific lesson
DOCUMENT ENDPOINTS
Endpoint Method Description
/api/documents/get-lesson-documents POST Get documents for a lesson
/api/documents/create-document POST Create a new document (requires authentication, file upload)
/api/documents/delete-document/:id DELETE Delete a document (requires authentication)
COMMENT ENDPOINTS
Endpoint Method Description
/api/comments/get-lesson-comments POST Get comments for a lesson
/api/comments/create-comment POST Create a new comment (requires authentication)
CART ENDPOINTS
Endpoint Method Description
/api/carts/addToCart POST Add a course to the cart (requires authentication)
/api/carts/removeFromCart/:cartId/:courseId DELETE Remove a course from the cart
/api/carts/clearCart DELETE Clear the cart (requires authentication)
/api/carts/getCart GET Get the cart (requires authentication)
INVOICE ENDPOINTS
Endpoint Method Description
/api/invoices/my_invoice GET Get the authenticated user's invoices (requires authentication)
/api/invoices/checkout POST Checkout and generate an invoice (requires authentication)
/api/invoices/my_course GET Get the authenticated user's courses (requires authentication)
/api/invoices/my_course/searchByName/:str GET Search the authenticated user's courses by name (requires authentication)
/api/invoices/my_course/searchByTopic/:str GET Search the authenticated user's courses by topic (requires authentication)
/api/invoices/my_course/searchByTimeUpdate GET Search the authenticated user's courses by update time (requires authentication)
INVOICE ITEM ENDPOINTS
Endpoint Method Description
/api/invoiceItems/all-courses GET Get statistics for all courses (requires authentication for admin)
/api/invoiceItems/all-courses/instructor GET Get statistics for all courses created by the authenticated instructor (requires authentication)

Preview

GIF