The procedure of examination can be a pain during these challenging times for the students. The whole process of attending an online exam can prove to be very exhausting for the students and so we thought why not gamify the process so that it's a win-win for everyone and so, we developed Xamify - an ultimate online exam taking platform for students, now the student doesn't have to worry about his/her online exam anymore as now they've got ton loads of features to ease their pain. Xamify offers features like real-time test reminders, a fully flexible exam-taking module that allows the students to take the exam in modes other than handwritten, not only this but we have also taken care of all the ins-outs of an exam creation and student management for the teachers via the Xamify-Teachers. We're super sure that Xamify will cater to all the needs of its users to the best of its ability and would be the most sought-after product both for the teachers and the students.
During the course of this project's development, we encountered numerous challenges. Making offline submissions possible was a major one. We wanted to make sure that the offline submissions were legitimate. As a result, we decided to create an encoded timestamped file with submission data that can be downloaded offline. When the internet is available, the student can submit this file, and the submission data will be decoded and verified on the client side before being submitted to the server as an OFFLINE submission.
Another feature we wanted to include was the ability to generate a PDF for each submission/student that contains all of the questions and answers in a more traditional format that teachers can download for evaluation. We decided to include an independent microservice to which the backend would send requests containing submission data in order to generate a PDF. The issue now was generating a dynamic pdf from the template and passing this pdf between the microservice, server, and frontend. We decided to encapsulate the PDF data in a blob, which we then passed into the response body. We used Puppeteer and HandlebarsJS to fill out an HTML template and then print it to a PDF for dynamic PDF.
We encountered numerous other bugs and glitches, and because our project has a large number of data models and constraints, the bugs are seemingly endless :). We fixed many as we came across them, but we're sure there are many more waiting for us on the other end...!
Discussion