M

Minerva

A Question-Answer platform for school students that works (beautifully)!

The problem Minerva solves

Minerva targets school students as the audience group.

In this on-going pandemic, the world has turned virtual and education is no exception. With amazing products like Google Classroom, Zoom, Google Meet and others, the transition from offline education to online was rapid, but not as jitter-free as we would have liked it.

The Question-Answer module of existing market products is not that great. It is very easy for school students, who relatively have more doubts about their subjects, to get lost in the sea of comments. Multiple comments on the same answer can lead to confusion. The teacher can comment, but he/she needs to first scan through an ocean of content to decode the question and give the right answer. Students can very easily miss the teacher's answer too if the number of comments is high.

This is where Minerva comes into the picture. Minerva is a very simple (and beautiful) Question-Answer platform that incorporates a lot of utilities to solve the current problems faced by the school students.

  • Minerva follows the concept of classes and each class having a class code. This feature is inspired by Google Classroom. Since many students already use Google Classroom, using Minerva is not at all hectic.
  • Minerva follows a Question-Comment module. A question can have multiple comments. But the best part here is, a teacher has the choice of marking a comment as correct. This eliminates all the confusion for students regarding which is the correct answer. Voting system on the question aid the scenario that repeated questions are not asked.
  • Minerva helps teachers with analytics. Teachers get analytics of the questions asked in their class. The analytics is powered by votes, unit wise segregation and much more. This helps the teacher to understand if any particular portion is not clear with the class.

Minerva is not just any product, but a real-life problem solver.

Challenges we ran into

The most difficult part was the intercommunication between the different modules.
Every question was a sataset for our Python script. The Web App can communicate easily with MongoDB. But the Python script needed a Comma Seperated Value (csv) file.
We decided to create a CSV file for every question we ad or update. That was fine. But running the Python script was the problem.
We tried Flask in the beginning. It did not work even though we scoured all over StackOverflow and docs. After about an hour, we decided that our goal is still the same, but we are changing our plan.

The Python script was changed into a CLI. Everything was wrapped into a function and was running from the command line. We need our Node.js server to execute this file.
We went for Node.js child process, a territory that was new to us. The first step was exec() with promisify (from util). It worked. But it could not find the librabies we needed.
We tried Python-Shell package. It failed to run for some reason.
The actual thing that worked is spwan(). It did everything we wanted. But the process was asynchronous. So we went for spwanSync(), which finally did the job.

We learnt a new way of integrating Python code with Node.js server. And not only Python, but this opens up a new territory for use to use with Node.js (Java or C++ even). This made our project more modular, as we can work on different componentts with different languages, and run the one required. This is certainly a field we will be exploring more in the future.

Discussion