- Overview
- How to get started with MathQuest
- Features
- High-Level System Architecture
- Technology Stack
- API Endpoints
- Development Setup
- Test Results
- Contributors/ Team Members
- Frequently Asked Questions
MathQuest is an online learning management system designed specifically to deliver math courses and curriculum in an asynchronous format, allowing students to learn at their own pace. It provides capabilities for instructors to create course offerings, design quizzes and assignments, grade student work automatically, facilitate text discussions, and continually update course content, while students can browse courses, register, take assessments, participate in discussions with classmates, and track their progress. The system architecture employs a combination of MVC, client-server, and microservices patterns to enable a scalable, extensible, and modular platform that can handle multiple concurrent users.
Key features of MathQuest LMS include:
- Course offerings and registration: Instructors can create course offerings that students can browse and register for. This includes publishing detailed course information like syllabus, modules, assessments, etc.
- Course content and curriculum: Instructors can create and manage course content including modules, quizzes, assignments, and syllabus.
- Assessments and grading: Quizzes can be created, automatically graded, and feedback provided to students. Overall course grades are calculated.
- Discussions: Students and instructors can engage in threaded discussions within a course.
- User roles and permissions: The system supports student, instructor, and administrator roles with appropriate access controls.
- Administrative capabilities: Admins can approve/reject course requests, manage instructors, and moderate content.
![](https://private-user-images.githubusercontent.com/62342666/287100569-53dcd444-0c85-47f5-a041-835908ec24f4.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ1NDQ4NzIsIm5iZiI6MTcyNDU0NDU3MiwicGF0aCI6Ii82MjM0MjY2Ni8yODcxMDA1NjktNTNkY2Q0NDQtMGM4NS00N2Y1LWEwNDEtODM1OTA4ZWMyNGY0LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI1VDAwMDkzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlMTA5NDQxYjA5NWYxYTBiMjE4YjM4NWEyYTg2MTI4NzQyODAzMDM1NWI3YTQ2Y2ExYmRjYjQ1N2RhZmQyOTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.JbJ5pgaOagmE5iCsQdZ1J60bqRUtXEX21SwY1c7-JRM)
Engineering Activity | Selected Tool(s) |
---|---|
Version Control | GitHub |
Development IDE | Visual Studio Code |
Wireframe & UI Screens | Balsamiq |
Project Planning | Microsoft Excel |
Diagramming | LucidChart |
Frontend | React |
Backend | Node.js |
Database | MongoDB |
Testing | Jest, Karma |
Anything within <angular brackets>
is a parameter.
Endpoint | Description | Type |
---|---|---|
/api/users/login |
Authenticates a user for the MathQuest system. | POST |
/api/users/signup |
Creates a new User for the MathQuest system. | POST |
/api/courses |
Gets a list of all available published courses. | POST |
/api/courses/teachers/getAllCourses |
Gets a list of all courses created by a teacher. | POST |
/api/courses/registered/getRegisteredUsers |
Gets a list of registered users within a specific course. | POST |
/api/courses/hideCourse |
Hides or un-publishes a course from the list of available courses. | POST |
/api/courses/filterCoursesByStatus |
Fetches a list of courses according to their Request Status | POST |
/api/courses/changeRequestStatus |
Changes the Request Status of a course. | POST |
/api/courses/quizzes/grades/gradeQuiz |
Grades and calculates the total points earned by a student after submitting a quiz. | POST |
/api/courses/registered |
Gets a list of courses that a student is registered in. | POST |
/api/courses/registered/new |
Registers a student in a new course. | POST |
/api/courses/discussions/getAllThreads |
Gets a list of threads created by students within a specific course. | POST |
/api/courses/discussions/getAllReplies |
Get a list of replies created by students in a specific thread. | POST |
/api/courses/discussions/createThread |
Creates a new thread within a course. | POST |
/api/courses/discussions/createReply |
Creates a new reply to an existing thread. | POST |
/api/courses/quizzes/getAllQuizzes |
Gets a list of quizzes for a specific course. | POST |
/api/courses/quizzes/getQuiz |
Gets a specific quiz, all questions and their options for a specific course. | POST |
You need to clone (download) the repository to your local machine using the below command in the terminal
$ git clone https://github.com/ris-tlp/mathquest.git
This makes a local copy of the repository in your machine
Once you have cloned the mathquest
repository in Github, move to that folder first using the change directory cd
command on Linux/ Mac/ Windows
$ cd mathquest
Then open the terminal inside mathquest
folder and run the following command
$ code .
The above command opens the project folder in Visual Studio Code which will be the IDE for Mathquest Development (Feel free to use the IDE of your choice)
Once you have downloaded the source code of MathQuest in your local, make sure npm
and node
are installed on your machine,
then follow the below part 1 and part 2 to start the MathQuest
application in your development environment.
First, navigate to the mathquest-client
folder
cd mathquest-client
Then, let us install the dependencies required on the client side of the Mathquest application.
npm install
The above command installs the dependencies mentioned in the
package-lock.json
file ofmathquest-client
Now, we can start the application using the below command:
npm run start
First, navigate to the server
folder
cd server
Then, let us install the dependencies required on the server side of the Mathquest application.
npm install
The above command installs the dependencies mentioned in the
package-lock.json
file ofserver
Run the below command to start the mathquest server
npm run dev
If everything is up and running, you should see the home page of MathQuest
application running on localhost
![](https://private-user-images.githubusercontent.com/62342666/286821019-ac929fb6-6c6c-4421-a3d0-bc565da93ba5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ1NDQ4NzIsIm5iZiI6MTcyNDU0NDU3MiwicGF0aCI6Ii82MjM0MjY2Ni8yODY4MjEwMTktYWM5MjlmYjYtNmM2Yy00NDIxLWEzZDAtYmM1NjVkYTkzYmE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI1VDAwMDkzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRhY2I3ZDFkYjE0NDI2NjM5YTI1ZjI1MTdiMWI4N2NhZmE3MjllM2M1YjYyMmNiN2I1MjYxY2U1OTYyNmIzZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Uuq-k-GYjDayji0L7rDIhgLolWs61BBZl7hqNRHj0Pk)
![](https://private-user-images.githubusercontent.com/62342666/287069325-41a4b02e-6afc-46c2-bb5e-d410f3c64e5a.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ1NDQ4NzIsIm5iZiI6MTcyNDU0NDU3MiwicGF0aCI6Ii82MjM0MjY2Ni8yODcwNjkzMjUtNDFhNGIwMmUtNmFmYy00NmMyLWJiNWUtZDQxMGYzYzY0ZTVhLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI1VDAwMDkzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2ODUxYzlmOGQ5OGRiOTEyMTVjZWNmOTRhNjQ3MjYyNDJhYTViMGNjNjI3ZjRiMmMxMzRlNmI0OTRjM2Y2OWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.twx5nO8oasYixQpOWrPHrZUn3NBRwPj1m_9d_prI4cM)
Team Member Name | |
---|---|
Anand Verma | |
Tharun Kumar Reddy Polu | |
Omar Khan | |
Ashwini Gour | |
Cydni Turner |
1. What types of math courses does MathQuest offer?
Ans: MathQuest offers a wide variety of math courses including Algebra, Geometry, Trigonometry, Calculus, Statistics, and more. Courses are available for middle school, high school, college prep, and college levels.
2. Do I need any special software or hardware to use MathQuest?
Ans: No, MathQuest is a web-based platform that works on any modern web browser. The only requirement is an internet connection.
3. How do I register for courses on MathQuest? Is there an enrollment period?
Ans: You can register for courses at any time by creating a student account on our platform. There is no enrollment period - you can sign up and start courses immediately.
4. Can I access MathQuest on my phone or tablet?
Ans: Yes, MathQuest is mobile-friendly and can be accessed from any device with a web browser including phones and tablets. This allows for on-the-go learning.
5. Are there options for getting help if I have questions on course material or assessments?
Ans: Yes, students can access discussion forums for each course to ask questions and interact with instructors or peers for help. Additionally, students can utilize 1-on-1 video chat options with instructors to ask questions.
6. Does MathQuest provide accommodations for students with disabilities?
Ans: Yes, we provide closed-captioning for videos, screen reader compatibility, enhanced fonts/contrast options, alternative input options for quizzes/exams, and the ability to make other necessary accommodations.
7. Is MathQuest accredited? Will course credits transfer to my university?
Ans: MathQuest itself is not an accredited program. However, most courses are designed to align with curriculum standards and prepare students for accredited exams that can earn future college credits at many institutions.
8. Can I interact with the instructor and other students taking the same course? Is there a community component?
Ans: MathQuest courses include community discussion forums where you can interact with peers and instructors taking the course.
Please discuss your concerns with Math Quest Team members before creating a new issue.
Please STAR
the repository if you like the content and code
Also enable the WATCH
button to keep watching the updates on the repository