Introducing AQUA: Digital Education Made Simple
Tags: atlashackathon, mongodb, react, python
Published: 2022-01-12 21:42:19

[Instructions]: # (To submit to the MongoDB Atlas Hackathon on DEV, please fill out all sections.)

![Landing Page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g39034uw1begml74f9i.png)

### Overview of My Submission
A few months back when the pandemic was at its peak in India and there was chaos all around, the education system got hit hard too and as tensions rose among the students so did the discord among different departments in our universities.

Clashing deadlines for assignments, last-minute rushed quizzes. The pressure was enormous and the environment around us was even scarier. So this specific problem of deadlines gave us an idea that could in general help us create a streamlined environment for evaluation and assessment.

Online classes have not only increased the burden on students but on educators equally. Evaluating hundreds of pages worth of handwritten assignments is tiring and boring. On discussing further we came to know that **teachers spend more time on checking and evaluating our assignments than actually preparing coursework and teaching**.


This is what inspired us to build AQUA, which is short for Assignments Quizzes Utility Application, a product to reduce the workload on both students and teachers. Thanks to MongoDB's simple yet powerful [Realm Functions](https://docs.mongodb.com/realm/functions/), we were able to automate most of the manual tasks of the evaluation process easily

#### So... What is AQUA? 👩‍🏫

We came up with a platform where teachers, or in general, any educator can upload the assignment, choose a due date and publish it for the students. But here comes the catch. No two assignments can be created such that they have a deadline within 24 hours of each other, giving students ample time to solve the questions.

#### Automated Keyword Checker ✅


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lykdba9wqtg64cdn0kpx.png)

Most of the time, teachers look for the presence of certain keywords in the answer scripts and mark students accordingly. This might be an easy and effective way of evaluation but is time-consuming, especially when you consider the volume of answer sheets that needed to be checked after the submission of one assignment.

Here in India, almost all schools and colleges want the assignments to be submitted in handwritten format. This makes checking them even more difficult. So we decided to build a pipeline that will feed all the handwritten documents from the Blob Storage to an OCR engine which basically converts the handwritten text to digital format for further processing.

We live by the rule: "Automate the Boring Stuff". Hence we decided that we need to come up with a system that will automatically detect the presence of keywords, that the teacher wants, to be checked and flagged. Marks can be then allotted accordingly.

We used MongoDB realm trigger functions to automatically run trigger function as soon as a student submits an assignments which in response calls the keyword checker api and checks the assignment against the keywords already provided by the teacher at the time of creation of assignment.
The result gets saved in the database which can be then accordingly fetched.


#### Plagiarism Detection 👀


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj887mvzpg77aca7ncmf.png)

*You can copy my homework, but don't make it look obvious* is a line that almost all student has either said or heard in their life. Well, plagiarism is an age-old problem that still hasn't been solved. We tried to tackle this issue by checking the similarity between all the documents and returning the similarity score. If it exceeds a particular threshold (which is set by the evaluator), it will be flagged as plagiarized and appropriate actions can be taken.

We are doing same here as we did for keyword checker, as soon as a student submit an assignment, his/her assignment is checked for plagiarism by sending request to the plagiarism API in response to change in the database, with the help of realm trigger function.

The response is then saved in the database, making it easier for the teacher not to wait for the API (doing heavy computation on backend side) to fetch results.


### Submission Category: 

**Action Star**


### Link to Code 🔗

{% github https://github.com/0xCompyler/aqua %}


### Additional Resources / Info

#### Built With 🛠

<img alt="TF" src="https://img.shields.io/badge/Azure-0089D6?style=for-the-badge&logo=microsoft-azure&logoColor=white"/>

<img alt="PyTorch" src="https://img.shields.io/badge/Pytorch-D00000?style=for-the-badge&logo=pytorch&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/SciKit%20Learn-F7931E?style=for-the-badge&logo=scikit-learn&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/MongoDB-47A248?style=for-the-badge&logo=mongoDB&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/express-000000?style=for-the-badge&logo=express&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/react-61DAFB?style=for-the-badge&logo=react&logoColor=black"/>

<img alt="SkL" src="https://img.shields.io/badge/node.js-339933?style=for-the-badge&logo=node.js&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/flask-000000?style=for-the-badge&logo=flask&logoColor=white"/>

<img alt="SkL" src="https://img.shields.io/badge/nginx-009639?style=for-the-badge&logo=nginx&logoColor=white"/>


#### Built By 😎

Arijit Roy - [GitHub](https://github.com/0xCompyler) - @radioactive11 

Kartik Goel - [GitHub](https://github.com/kg-kartik) - @kgkartik 
Boidushya Bhattacharyay - [GitHub](https://github.com/boidushya) - @boidushya 

Yashwin Saini - [GitHub](https://github.com/yash-wins) - @yashwinsaini 

#### Link to platform ✨

[https://aqua-eta.vercel.app](https://aqua-eta.vercel.app)

#### Screenshots 📸


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/us1y5qp2136hisa1840y.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybcxpxqyvsnbtzway8in.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ely5lamfaiy0txumfim3.png)