Exam proctoring - TypingDNA Hackathon app
This project, realized for the Devpost Hackathon proposed by TypingDNA implements the api in a web app running on Node.js. The app is basically an exam proctoring system that includes the following features:
- Login/Signup system
- Uses MongoDB database hosted on mLabs
- Hashed passwords for security
- Token generation and validation using json web token
- Data validation
- Initialization system
- Newly created users are marked as not initialized with TypingDNA
- Users are requested to type three sentences (see screenshot above)
- Gets three typing patterns of the user and saves them in the typingDNA database.
- Exam system
- ID system to access to specific exams
- Practice exam available to get to know the system
- Mouse position monitoring to prevent cheating
- Right click disabled
- Timed exams feature
- Change theme (dark/light)
- 3 types of questions (short, development, multiple choice)
- TypingDNA match available at the end of the exam
- Backend System
- Creation/Edition of exams using Postman
Here's what drove us to build this project:
- In difficult times like the situation of Covid-19, society shows how vulnerable it is. This project aims to lower cheating in online exams.
- We think that if each person has its own typing pattern, then the technology must be extended to more formal fields such as education.
- And of course, who doesn't like a good challenge !
You will find here the instructions on how to install/run the project on your machine.
A key prerequisite is Node.js so we suggest installing node v12.18.3 with npm 6.14.6.
- npm
npm install npm@latest -g
- Get your api key from TypingDNA
- Create an mlab database and get your database url from https://mlab.com/databases/your_database_name
- Clone the repo
git clone https://github.com/anisdzdev/typing_dna.git
- Install NPM packages
npm install
- Install global packages
npm install -g nodemon@2.0.2
- Enter your TypingDNA public and secret keys in the following file
- config/default.json
- Also enter your database url in the same file, it should looke like this:
mongodb://username:password@ds01316.mlab.com:1316/db
- Run the project
npm run start
- Go to localhost:3000 (default port) to access the running app
- Create an account using the signup link under the login form.
- Write the 3 required sentences to initialize your account and save your typing pattern. (You can always reset if you feel the need to do so)
- Once you initialize your account once, you will be redirected to a page prompting an exam ID. Enter 123456789 for an actual exam or click "Enter practice mode" under the "start" button to start an exam.
- In the exam page, fill in the blanks as you would do in an actual exam, respecting instructions.
- After submitting your exam, your matching percentage is displayed on the screen (This would disappear in future updates where the professor panel is implemented).
- Anis Brachemi: Fullstack development of the application
- Saoud Messaoudi: Backend and Database Developer
- Kassem El-Zoghbi: Frontend developer
- Lucas Cimino: Security management
- Holy Mouaya: Design and Visual
Anis Brachemi - @anis.brachemi - anis@novem.dev
Saoud Messaoudi - @saoudsss - saoud@novem.dev