We are a bunch of students that are being now emerged into a virtual environment, and we are exposed to evaluations through online interfaces. Our student mindset inspired us to use the resources offered in order to better our online environment. We wanted to create an online exam platform where we could avoid cheating and offer a new way of identifying students through the TypingDNA API.
What it does
To summarize, Proctopro is an online exam platform where students are asked to type in three different sentences upon registration so that the web application saves their typing pattern. While students are completing development questions of their exam, a second pattern is recorded. After submitting the test, the teacher would see a match value in % provided by TypingDNA when comparing the first and second patterns. If the students gets a high match score, it means that the pattern in which the questions were written is the same pattern that was inputted in the initialization part. On the other hand, the student getting a low match is most likely cheating, or just writing in a completely different pattern than the pattern he inputted while initializing. The app does not intervene in any way whether the match is true or false. At this version of the platform, the score is simply displayed to the user after saving his submission in the database. The app also implements some features such as a dialog alerting the user when his mouse leaves the examination window to prevent cheating.
How we built it
In order to obtain the current wanted result, we had to go step by step. First, we had to set up the Node.js server. This is where we implemented our own API and connected it with TypingDNA's API. We also had to separate all of the different functionalities of the program in order to have a clean and easy to read code. We used Postman to test our newly created API manually. Once we were sure that our backend was ready, we jumped right into our React.js frontend. Obviously, while working on the frontend, we had to bring some changes to certain aspects of the backend in order to make everything compatible. For the database, we used MongoDB as we already had experience with this database. We made it so that user, exam and submission data would be stored inside of it.
Challenges we ran into
As any project created, we ran into some challenges that we, fortunately, overcame. In fact, we had difficulties implementing multiple choice questions as part of our visual and finding a logical and easy way to code them. Moreover, we had some problems with library versionning as some libraries are not compatible with others, which can cause compiler errors and raise exceptions.
Accomplishments that we're proud of
We are proud of the efforts put in the project and the result we have. Nothing puts a bigger smile on a development team than a code that compiles with no error and executes as planned. We are also very proud of the designing work put and the clean look of the interface.
What we learned
Throughout the entire course of the project, we had to develop skills that we could find useful in a workplace environment. To illustrate, we applied interpersonal skills to work as a team in order to achieve one specific goal. Some of us had to work on the backend and others on the frontend, but we all had to communicate frequently in order to be on the same level of understanding. Working on this project allowed us to get comfortable with the new communication platforms, especially during this pandemic context. Most importantly, we enjoyed working on this project which was eye-opening and a motivation to pursue our careers in Computer Sciences.
What's next for ProctoPro
ProctoPro has an enormous amount of features planned to be added on future updates. For the project to be marketable, it absolutely needs a teacher's dashboard which is our next planned major update. We already started working on this feature and we will release it as soon as it is done and tested.