Competitive exams are a cornerstone in almost every student’s life. There are two purposes for competitive exams; at school and college, they encourage students to study by rewarding those who demonstrate the will to learn with reputation, prizes, admissions to universities and scholarships. They're also used in the selection of military and civil service officers. This makes success in these exams very lucrative, attracting many students.
However the archaic education system makes the preparation process very tedious, boring and unintuitive. This leads to burnout and a general disinterest towards academics. This system is also inefficient as it doesn’t have room for a dynamic system of preparation. Another issue that presented itself in the current, unprecedented times is that education has to evolve beyond brick and mortar institutions to function and thrive. The sudden rise in solutions implementing technology into education is no coincidence. As we are forced to look for alternatives to conventional learning methods, we have to find efficient and innovative methods so as to keep improving the quality of education.
We decided to create an innovative solution to help students prepare for their exams using ExamTantra. ExamTantra’s goal is to “Gamify” the mundane tasks of attempting exams by adding elements such as peer attempts: solving papers with peers resulting in a more productive practice environment, leaderboards to compare progress, a clean minimal UI so as to not distract the user, badges, awards and other reinforcements which have been proven to be psychological motivators. We believe that everyone must have the right to a fair education, thus, ExamTantra aims to make practicing more accessible to students by offering an ad free uninterrupted experience as well as being optimised to run on most devices.
The entire team was working together for the first time, so we did not have a common tech stack. We decided to try out something completely new to all of us, ie. Ionic with React as the frontend. We struggled to understand the framework and faced many issues along the way. This was also the first time we used Redux for state management of the user. We decided to go with firebase for authentication and storage(firestore).
One of the logical issues we faced was deciding the structure of the NoSQL Firestore database. We solved that by creating two collections, one for users and one for competitions and make another subcollection under each document of the collection. The other subcollection contained user information for the competition and competition information for the users.
Discussion