Giter VIP home page Giter VIP logo

french-toast-mafia's Introduction

French-Toast-Mafia

Online Learning System πŸ“š

Online Learning System is a web application through which individuals can attend pre-recorded courses online. πŸ‘¨β€πŸ«

Motivation ⚑

This project aim was to help us:
β€’ Learn how to properly use the Agile Methodology to plan out a project and develop the software.
β€’ Learn the process of following a given set of System Requirements to develop a software and work together as a Team on Github.
β€’ Learn to research and master the use of the MERN Stack.

Build Status πŸ› οΈ

β€’ For the user, he'll only be able to report a problem or rate the instructor, but in the future we intend to build a chat system between the users and their instructors β€’Users still cannoy refund the course fees if less than 50% of the course is completed & Admin still cannot accept the refund. β€’There's a problem in logging in instructors.

Code Style 😎

Our code style is a standard code style.

Project Description

Theme

! Our project is an online learning platform that helps individual and cooperate trainees to enroll in a variety of courses and check/track their progress in this course such that there aim is to earn a certificate of completion of there courses. Our platform provide a wide range of courses that are taught by experienced and well rated instructors who have created lectures and challenging exams and excersises to encourage students more and help them master the material provided. ! The platform also help instructors to manage their courses and admins to track the requests they receive upon any report or granting access.

Overview

Our project was developed using the Agile Methodology, such that it was divided into 3 sprints (time periods). Each sprint was evaluated gave us the chance to correct and edit some methods that helped later in developing a fully functioned website.

Screenshots πŸ“Έ

A) As a guest, you can sign up

Sign Up

B) You can view a course

view Course Trainee

C) As a registered user, you can pay for a course

pay for a course

D) You can report a problem

Report problem

E) As a user, you can solve an exam

Exam

F) You can change your password

Forget password

Tech/Framework used πŸ’‘

We used MERN Stack to implement this project.

Features 🌟

For Users:

β€’  Can a preview video about the course before registering to it. 
β€’  While enrollment in the course, he'll be able to see his/her progress in the course 
   as a percentage of how much of the course has been completed so far.
β€’  Can request a refund if his progress in the course is less than 50%.
β€’  Can retake an exam if his grade is less than 50%.
β€’  Can download his notes while watching the course videos.
β€’  Can recieve a certificate upon completing the course.

For Instructors:

β€’ Can view the amount of money owed per month.
β€’ Can define a promotion for the course and for how long.
β€’ Can view the average grades of the exams in his course.
β€’ Can save his/her progress in creating a course WITHOUT publishing the course.
β€’ Can publish his/her course. A published course CANNOT be edited nor deleted.

Code Examples πŸ’»

Code

Installation ⬇️

A) Clone the Repository to your device πŸ’»

B) Open 2 Terminals

C) In the first terminal, run the front end by running the following commands in order:

cd frontend/main/src
npm install
npm start

D) In the second terminal, run the back end by running the following commands in order:

cd backend 
nodemon app.js

API reference πŸ“‘

β€’ Axios for communication between the frontend and backend

β€’ Stripe for online payments

β€’ Nodemailer for sending emails to clients πŸ“«

Tests πŸ”¬

Authentication routes

create user

POST /Signup//

Login

POST /Login//

Filter course rating

GET /User/viewcoursetitlehoursrating

Filter course price

GET /User/viewcourseprice

Get my information

GET /User/viewMyInfo
Query Type Description
id string Required. user ID

Get my courses

GET /User/viewMyCourses
Query Type Description
id string Required. user ID

Change password

PUT /User/changePassword
Query Type Description
id string Required. user ID

User add course

POST /User/addCourse
Query Type Description
id string Required. User ID
courseId string Required. Course ID

Send password change email

POST /User/sendPassChangeMail
Body Type Description
Email string Required. user Email

Remove course

PUT /User/removeCourse
Query Type Description
id string Required. user ID
Body Type Description
-- string Required. Course ID

User Refund

POST /User/userRefund
Query Type Description
id string Required. User ID
courseId string Required. Course ID

Update video progress

POST /User/videoProgress
Query Type Description
id string Required. User ID
courseId string Required. Course ID
subtitleId string Required. Subtitle ID
Body Type Description
Video string Required. Video Link

Get My progress

GET /User/getUserProgress
Query Type Description
id string Required. User ID
courseId string Required. Course ID

Send Certificate

GET /User/sendCertificate
Query Type Description
id string Required. User ID

See my grades

GET /User/getUserGrades
Query Type Description
id string Required. User ID
examId string Required. Exam ID

See my info

GET /User/getUser
Query Type Description
id string Required. User ID

Remove unknown courses

GET /User/removeUnknownCourses
Query Type Description
id string Required. User ID

Add promotion

POST /Instructor/addPromotion
Query Type Description
id string Required. Course ID

Body Type Description
Promotion string Required. Course ID
Start Promotion string Required. Course ID
End Promotion string Required. Course ID

Instructor add Course

POST /Instructor/addCourse
Query Type Description
id string Required. Instructor ID
Body Type Description
NameOfCourse string Required. Name Of Course
Summary string Required. summary
Subject string Required. subject
LevelOfCourse string Required. Level of course
Cost string Required. Cost
Preview string Required.Preview

Instructor delete course

POST /Instructor/deleteCourse
Query Type Description
id string Required. Course ID

Instructor add exam

POST /Instructor/addExam
Query Type Description
id string Required. Instructor ID
Body Type Description
id string Required. Instructor ID
question string Required. Question
choice1 string Required. Choice1
choice2 string Required. Choice2
choice3 string Required. Choice3
choice4 string Required. Choice4
correct string Required. Correct

Instructor edit his biography

POST /Instructor/editInstrBiography
Query Type Description
id string Required. Instructor ID

Instructor edit his email

POST /Instructor/editInstrEmail
Query Type Description
id string Required. Instructor ID

Instructor edit his data

POST /Instructor/editInstructorData
Query Type Description
id string Required. Instructor ID

Instructor view his courses

GET /Instructor/ViewMyCourses
Query Type Description
id string Required. Instructor ID

Instructor view his ratings

GET /Instructor/ViewMyRatings
Query Type Description
id string Required. Instructor ID

Instructor view his reviews

GET /Instructor/ViewMyReview
Query Type Description
id string Required. Instructor ID

Instructor money in wallet

GET /Instructor/calculateMoney
Query Type Description
instrId string Required. Instructor ID

Instructor remove exam

GET /Instructor/removeExam
Query Type Description
id string Required. Instructor ID

Admin add Instructor

POST /Admin/addInstructor
Body Type Description
InstrEmail string Required. Instructor Email
InstrPassword string Required. Instructor Password

Admin add cooperate trainees

POST /Admin/createCorporateTrainess
Body Type Description
Name string Required. User Name
Email string Required. User Email
Password string Required. Password
Type string Required. Type
Gender string Required. Gender

Admin view course reports

GET /Report/viewCourseReports
Query Type Description
id string Required. CourseId

Admin get reported courses

GET /Report/getReportedCourse
Query Type Description
id string Required. CourseId

Admin view reporter name

GET /Report/getReporterName
Query Type Description
id string Required. userId
Admin delete report 

GET /Report/delete

 Admin get all reports 

GET /Report/getReport

Admin update type of request

GET /Report/updateType
Query Type Description
id string Required. CourseId

Admin update status of request

POST /Report/updateStatus
Query Type Description
id string Required. CourseId

Admin add a followup

POST /Report/addFollowup
Query Type Description
id string Required. report id
Body Type Description
id string Required. follow id
comment string Required. comment

Admin delete followup

GET /Report/deleteFollowup
Query Type Description
id string Required. report id

Instructor get all subtitles

GET/Subtitle/getAllSubtitles

Instructor add subtitles

POST/Subtitle/addSubtitle
Query Type Description
id string Required. course id
Body Type Description
Title string Required. Title
Description string Required. Description
Duration string Required. Duration

Instructor edit subtitle

POST/Subtitle/editSubtitle
Query Type Description
id string Required. Subtitle Id

Instructor add excercise for subtitle

POST/Subtitle/addExcercise
Query Type Description
id string Required. subtitle id
Body Type Description
Question string Required. question
Answer string Required. answer

Instructor remove all excercises

POST/Subtitle/removeAllExcercises
Query Type Description
id string Required. subtitle id

Instructor delete subtitles

GET/Subtitle/deleteSubtitle
Query Type Description
id string Required. subtitle id

Instructo rdelete subtitles from course

GET/Subtitle/deleteSubtitleFromCourse
Query Type Description
id string Required. subtitle id

Instructor remove all subtitles

GET/Subtitle/removeAllSubtitles
Query Type Description
id string Required. subtitle id

User get course subtitles videos

GET/Subtitle/getCourseSubtitlesVideo
Query Type Description
id string Required. course id

User get course subtitles excercises

GET/Subtitle/getCourseSubtitlesExcercises
Query Type Description
id string Required. course id

Instructor add video description for subtitles

POST/Subtitle/addVideoDescription
Query Type Description
id string Required. course id
Body Type Description
--- string Required. Description

User get excercises Questions

GET/Subtitle/getExcercisesQuestions
Query Type Description
id string Required. course id

User get excercises answers

GET/Subtitle/getExcercisesAnswers
Query Type Description
id string Required. course id

User add notes

POST/Subtitle/addNotes
Query Type Description
id string Required. subtitle id
Body Type Description
--- string Required. Notes

User view course subtitles

GET/Subtitle/viewAllCourseSubtitles
Query Type Description
id string Required. courseId

User view course subtitles videos

GET/Subtitle/viewSubtitleVideo
Query Type Description
id string Required. subtitle id

User view course subtitles notes

GET/Subtitle/viewSubtitleNotes
Query Type Description
id string Required. subtitle id

Instructor clear all excercises

GET/Subtitle/clearAllExercises

Instructor add video

POST/Subtitle/addVideo
Query Type Description
id string Required. subtitle id
Body Type Description
video string Required. video

Instructor add course exam

POST/Subtitle/addCourseExam
Query Type Description
id string Required. subtitle id

For testing our website:

  • try searching for a course and filter your search results
  • try viewing a course and watch its preview
  • try signing up
  • try go to your profile and edit your info
  • try changing your password

How to Use? ❓

Open http://localhost:3000/#/home to view the homepage in your browser.

Contribute πŸ“₯

To contribute to our project, you can check our Contribution Guidelines

Credits βœ…

The main resources that helped us in our implementation :

https://www.youtube.com/@NetNinja
https://mui.com/
https://react-bootstrap.github.io/getting-started/introduction/
https://www.npmjs.com/

License βœ’οΈ

Apache 2.0 License

french-toast-mafia's People

Contributors

maryamsherif avatar mayarabdelaziz avatar nada-abdelfattah avatar nousabr avatar ranareda11 avatar sarashkamal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.