Giter Site home page Giter Site logo

manthan933 / manthan Goto Github PK

View Code? Open in Web Editor NEW
86.0 4.0 145.0 20.65 MB

Online testing platform

Home Page: http://www.manthan-app.org

License: MIT License

JavaScript 99.46% HTML 0.54%
online-tests-platform open-source hacktoberfest mern reactjs nodejs

manthan's Introduction

Logo

MANTHAN

उत्तिष्ठत जाग्रत प्राप्य वरान्निबोधत।

Explore the Docs »

View Demo · Report Bug · Request Feature

Contributors Forks Stargazers Issues MIT License

Table of Contents 📕

About The Project

Description 👇

We provide an online testing platform that can be used to conduct tests that are wrapped with all the necessary precautions to reduce the chances of cheating. Here, the educator can create classes and tests on a web portal and all the entered questions will be randomly distributed among the students resulting in a large number of sets.

Features 🔎

  • A secure platform for online testing.
  • Interactive and easy to use.
  • Grades can be accessed or changed even after the completion of the test.
  • The teacher can decide if a particular question is compulsory or not in all the tests.
  • The application is in the locked mode, so there is no transition between other applications (such as Whatsapp, call, etc.).
  • Basic facilities like calculators are provided in the application for basic math operations.
  • A list of the marks will be sent to the educator just after the completion of the test.
  • Use Gmail or Student mail IDs to save the student's marks.
  • The test will be automatically submitted after the prescribed time frame.
  • We will try to block incoming calls/ messages/ screen capture or any other malpractice during the test.

Built With 💻

Technology Stack 🛠️

  • Coding Languages: JavaScript HTML5 CSS3

  • Tools & Technologies: React MongoDB Express.js NodeJS

  • Project Management Tools: GitHub Git

Getting Started ✅

To get a local copy up and running, follow these simple steps.

Prerequisites 📖

These are the prerequisites required to run this application:

  • Node
  • npm
  • mongo-uri

Installation


  1. Clone the Manthan repository form GitHub
  git clone https://github.com/Manthan933/Manthan.git
  cd Manthan
  1. Create .env file in Manthan using format from .env.example
  MONGO_URI = //mongo-uri
  PORT = 5050
  JWT_SECRET = mysecret
  1. To run the application in development server
  cd client
  npm install
  cd ..
  npm install
  npm run dev

Contributing 🖋

Contributions are what makes the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project.
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the Branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

Contact Us 📞

Join our slack channel here for discussions and the latest news.
Follow our LinkedIn page here.

Programs We have been associated with 🤍

Authors 👨‍💻

Our Contributors ✨:

manthan's People

Contributors

aakankshashah avatar aavishkarmishra avatar abhay27chauhan avatar abhishek765 avatar aniketbiswas21 avatar anirudhsai20 avatar arkumari2000 avatar chauhanprakhar avatar deeksha2501 avatar deepthiteki avatar dependabot[bot] avatar iamabhi222 avatar imakash3011 avatar jademaveric avatar kathuria avatar mani9896 avatar mis-coder avatar mohitms007 avatar muditxofficial avatar nishant23122000 avatar osamamagdy avatar ritikpandey1 avatar rohan-kulkarni-25 avatar sainanda59 avatar shaurya24sri avatar shivam7-1 avatar sloth-panda avatar soham-official avatar sukriti-sood avatar vidisha-kayal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

manthan's Issues

Add missing Start script in backend

According to docs, we need to use nodemon to start the backend but due to missing script nothing happens. So, i would like to add start script and please add neccessary labels to this.

Bug : "Teacher can create test without providing test name and marks"

Describe the bug
Teacher can create test without providing test name and marks

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'class'
  2. Click on '+' icon in bottom to create test
  3. Then click next without adding name and marks

Expected behavior
It will show an error and also not move further if teacher doesn't provide test name and marks.

Should be a Numeric Value in Duration Box

When you create description of a test, the duration column should have a formatted input in form of hours and minutes rather than this format i.e at present -> "17:18" this should be like "x hours 2 minutes".
Ideas->
You can use moment.js for time functionality
Screenshot (317)

Countdown timer durnig test

There is no option to check how much time is left.
According to me countdown timer could can solve this problem.

Any other ideas will be appreciated 👍🏻 💯

pr template

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

There is no pull request template so would like to add one

Describe the solution you'd like
A clear and concise description of what you want to happen.

It will help understanding pr better

Enhance Test card

Please add Max marks and duration of the test in the test card.

And if you can enhance the UI of test card it will be appreciated.

Docker setup for development

Setup docker for development

Please setup docker with local mongodb for backend to run the app in development environment and improve the docs here.

Test can be created anonymously

Describe the bug
Creation of tests should only be limited to the teacher (Google Classrooms assumes this is the creator of the test). But the current system allows not only an random user logged in to create test, but also anonymous users on the internet. This is basic security requirement, and that would prevent anyone from using this app in a serious environment.

To Reproduce
Steps to reproduce the behavior:

  1. I've set up a class room. Go to 'http://www.manthan-app.org/A0jp8s' (even works in incognito)
  2. You should be presented with the create test menu.
  3. Setup the test the way you want.
  4. If you're signed up for the course, the test should be appear in the course dashboard.
  5. Enjoy trolling students

Expected behavior
Unauthenticated users are redirected to the login page, while unauthorized users (students) are redirected to the course dashboard. An authorization mechanism that prevents people trolling the system is absolutely required. A prerequisite to this would be a user database (which I'm assuming is #80). Additional creator and enrolled students metadata would have to be added to the course.

Screenshots
(This is a private window in firefox)
image

Create Classroom

I found one issue,

To create new class user must have to provide the SubjectCode , SubjectName. but there is not validation applied.
so at this moment user can create class without subjectname and subjectcode.

Capture

Here class is created without subject code and name,...

So, as per my suggesion we have to validate form for creating new card.

Hey admin,check this bug and assign me , because i already did it in my own branch

waiting for your positive reponse...

Add more login options

There is only option for login using Google. It will be better if we can login using other platforms too ( as facebook, github etc. )

Add more login options as github and others.

Missing package-lock.json in client directory

Describe the bug
Missing package-lock.json in client directory, Required for consistency!

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'client' section
  2. Check package-lock.json is missing

Expected behavior
package-lock.json signifies what package should be used with this project else in future it can break due to packages upgrade. We should keep this file updated whenever any change is done in package.

Option to view students

Is your feature request related to a problem? Please describe.
There is no section to view the students who have enrolled in the classroom to give the test.

Describe the solution you'd like
It would be nice if there is an option to view the students who have enrolled in the classroom.

Errors are not handled properly while creating the test.

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Class Cards are not responsive

Describe the bug
As there is no limiting input size while creating a class,on big names class cards are not looking good as they got static(not responsive) css designs and also Delete button got hidden so one cannot able to delete their created class if their class name is big.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Create Class'
  2. Enter Big names in all fields
  3. Delete button is hidden along with other informations.

Expected behavior
Card should be responsive to the input values
There must be a limiting range of input names

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows10
  • Browser chrome
  • Version 89.0.4389.82 (Official Build) (64-bit)

Additional context
Add any other context about the problem here.

Automatic Test submission

Describe the bug
Test should automatically be submitted after time runs out.

Expected Solution
A call to handlesubmit() function after time is over.

Additional context
You can use setTimeout() or setInterval() funtions

Unable multiple submission for a test.

Describe the bug
In current updated user can send multiple submission for same test which should not be allowed.

To Reproduce
Steps to reproduce the behavior:

  • Start any test and submit it.
  • Check whether you are able to submit again for same test .
  • See error.....

Expected behavior
User should not be able to open a test more than once.

readme updation

Readme can be made to look attractive by adding different gifs

Let me know if this needs to be done

Add delete test option

There is no option to delete test in current updated.
Please add delete test option to delete specific test.

Edit and delete option for classroom

Problem
There is no option to leave or edit the classroom
It requires an edit option so that the teacher who creates the particular classroom can modify it and a delete option so that the classroom can be deleted after completion of the test.
Screenshots
Screenshot from 2020-12-28 19-59-08

Integration of welcome bot

Welcome bot can be integrated which will help first timers when they make their first pr or raise their first issue and so

Issue in google login

Hey @aavishkarmishra when I am doing login by google, after selecting Gmail id it is showing error-

2021-03-11

So I want to work on this issue as a GSSOC participants, Please assign it to me-

User Schema and routes

I would like to implement user schema. Please mention apart from basic user details what you expect from user.

Option to remove student

Is your feature request related to a problem? Please describe.
There is no option with the help of which a teacher can remove a student from the classroom.

Describe the solution you'd like
An option to remove any particular student from the classroom.

Multiple Select and Numerical Answer Type Questions + (Dynamic #choices)

Is your feature request related to a problem? Please describe.
Currently the app only provides MCQ type questions. If I was creating a test, I would expect to put in a healthy mix of NAT and MSQ as well.

Describe the solution you'd like
(Assuming backward compatibility is required)
The QuestionSchema model can be extended to hold a information about the type of question. A member like category, since type is already used. The Update() in the tests controller can then be updated to handle scoring for the selected type.
For NAT questions, this is rather simple to implement - answer holds the correct number. For MSQ, the answer string can be used as an adhoc bitfield.

(No backwards compatibility)
QuestionShema is very rigid right now and provides very little scope for improvement down the road. Here are some simple ways it should be refactored.

QuestionSchema.options should be an array, instead of 4 statically defined members. This allows for

  1. Dynamic number of choices
  2. Partial scoring/negative marking for each choice

QuestionSchema.answer should be a bit field (integer) describing which question are correct. In case of NAT, this would be the answer itself. This also allows an easy way to fix the issue of the answer needing to be retyped when creating the question. This current method presents an opportunity for human error, namely typos. With a bitfield, the teacher only needs to select which question(s) are correct and the clientside can generate the bitfield in the background.

QuestionSchema.group would point to the group of the question (currently what type does)
QuestionSchema.type would point to the type of the question [MCQ|MSQ|NAT]

Describe alternatives you've considered
The system doesn't provide any way to give MSQs or NATs.

Additional context
nada, nothing here yet. I can provide mocksup to show the program flow and possible UI depending on whether the maintainer wants backwards compatibility.

No need to use body-parser when using express version 4.16+

##Proposal

Express version 4.16+, their own body-parser implementation is now included in the default Express package so there is no need for you to download another dependency.

You have added a line to your code that looks like the following:

  • app.use(bodyparser.json());

If you are using Express 4.16+ you can now replace that line with:

  • app.use(express.json());

You also have the following code in your environment:

  • app.use(bodyParser.urlencoded({extended: true}));

You can replace that with:

  • app.use(express.urlencoded());

Test validation

I notice some important bugs Please read it below in details,

I created new test and i enter negative marks also add long hours and minutes . but still there is not an error or proper validation. see below screenshot,

Capture

Capture2

We should handle this with proper validation.

Please check it and assign me

Test creation Validation

Describe the bug
There are multiple validation failures while creating tests.

  • The test can be give negative marks
  • Duration can be negative (rolls over when processed by backend)
  • Answer provided in MCQ questions doesn't need to be one of the options (see bitfield in #82 for a solution)
  • Number of questions can be negative
  • Total marks and number of questions required in the generated test aren't validated with the number of questions in the question bank

To Reproduce
Steps to reproduce the behavior:

  1. Create a new test

  2. Give it negative marks (-100)

  3. Give it negative duration (0 hours, -20 mins) (-ve hours gives a warning)
    image

  4. Add question, all 4 options need to be selected
    image

  5. Add negative no. of questions and negative marks
    image

  6. Press next after verifying
    image

  7. Check the dashboard (local build on latest master branch)
    image

Expected behavior
Error message should be shown whenever a validation fails. And the next button blocked until the mistakes are corrected.

Desktop (please complete the following information):

  • OS: ArchLinux
  • Browser firefox
  • Version 86.0

Documentaion for docker installation

There is an option to run app in development environment using docker, but there is not proper documentation for this.
Please add the respective documentation in README and wiki.

Making class code only visible for instructor.

Please make the class code only visible to teacher/instructor
In a class card in class code is accessible by everyone who join the class, please make it visible for only class instructor
Screenshot from 2020-12-28 19-59-08

Questions with no content/options can be added

Describe the bug
The examiner can add a question without providing some text and options in the respective question and the test can be created without the questions and the options

Expected behavior
The class room teacher cannot add a question without providing the question and the the options

Page to give test

Create a page to give test and after submission add the scores to the scores array.

  • Have to create frontend page for test
  • Have to create an api that will add score of student to scores array
  • Have to integrate this api to frontend.

Errors are not handled properly while creating the test.

Bug:
1.While creating test,according to the code no one can create a test without giving a valid duration..but conditions are not set properly so we can create the test without giving any durations....

To Reproduce
Steps to reproduce the behavior:
1.Create a Class
2.Create a test
3.fill all the details without giving marks
4.click next

Expected behavior
One should not be able to create the test without giving duration
Screenshots
https://user-images.githubusercontent.com/54814610/111028515-21bec300-841d-11eb-9bf3-676794cc4ec6.png

Desktop (please complete the following information):

  • OS: windows10
  • Browser Google chrome

No of students enrolled not placed properly

No of students enrolled number not placed properly

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'NavBar'
  2. Click on 'Three Horizontal Lines Icons'
  3. See error (Number is displayed below enrolled)

Expected behavior
Number of students enrolled should appear in front the 'enrolled' text.

Screenshots
bandicam 2021-03-12 08-35-50-927

**Desktop **

  • OS: Windows 10 Pro , Version 1909
  • Browser: Chrome

Adding Unit Tests to the frontend

Is your feature request related to a problem? Please describe.
A good project should always have tests included so I want to test individual components of the website to make it more reliable and scable.

Describe the solution you'd like
I want to test the react components with jest and include the tests folder so that the maintainers can easily test the application.

Describe alternatives you've considered
There can be many alternatives to jest but jest will be more compatible.

Page to view test scores.

Create a page to view scores

Test object have a scores array having object with student's email and score, please create a page so that instructors can view the scores of students.

Features required :

  • Scores can be sorted
  • Scores can be edited
  • Responsive design

Additional context
Please use materialUI instead of bootstrap or react bootstrap.

Unable to create class

Describe the bug
Unable to create classroom when submitting it only with class name

To Reproduce
Steps to reproduce the behavior:

  1. Go to Create Class
  2. Submit the form with class name only.
  3. You can see that classroom is not created.

Expected behavior
It should create class without subject and subject code

Screenshots
Screenshot from 2020-12-29 15-39-10

Additional context
Add any other context about the problem here.

Create Testing code.

Need unit tests

Required some unit testing to test the code before pulling the PRs, it will be better if anyone can implement that.

  • Checkfor linting
  • Check for errors and typos
  • etc..

Not properly aligned number of enrolled

Describe the bug
In the navigation bar, under the enrolled the number of enrolled is not aligned properly.

To Reproduce
Steps to reproduce the behavior:

  1. Go to http://www.manthan-app.org/
  2. Click on 'Navigation three line'
  3. Under the enrolled
  4. See error

Expected behavior
It should be aligned just below the enrolled button and also in bold to show the importance of the enrolled number.

Screenshots
Capsture

Desktop (please complete the following information):

  • Browser [e.g. chrome, safari]

Additional context
If you would like then I will fix the issue.

Joining Class creating temp. duplicate instance for same class

Describe the bug
Joining Classroom with available ClassCode is creating temporary classes, it should be unique code and process should navigate to class page.

To Reproduce
Steps to reproduce the behavior:

  1. Start the node server
  2. Create a class
  3. Go to '+' icon to join the same class with the class-code
  4. See multiple instances of same class gets created.

Expected behavior
After clicking the join class, person should be navigated to class page and no new instances should be created as displayed in sample. Class Code should be unique, can be combination of subject-code + class-code.

Screenshots
Duplicate Classes

Desktop (please complete the following information):

  • OS: Windows
  • Browser - Chrome
  • Version 88.0.4324.150

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.