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 |
|
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 |
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) |