Smart India Hackathon 2022 Submission | Category - Software | Organization - Department of School Education & Literacy (DoSEL), Ministry of Education
CrowdQuest - Online crowdsourcing model for creating a large pool of question bank that are vetted by experts along with automatically generating the question paper and securing it to conduct online examinations.
"Summary: To be able to graduate to objective type questions for one semester of online board exams, a question bank of at least 5000 questions will be required for each subject. Setting question papers for the exams is a complicated task. Can you think of a Crowd Sourcing model where questions are set by large number of anonymous stakeholders thereby creating a large question bank? These questions can be vetted by experts before freezing the same in the question bank. The actual question paper can be set through an automated system"
Getting fine grained questions for board examinations is a difficult and time consuming task. Along with this setting examination paper taking into consideration various paprameters such as difficulty, weightage is quite error-prone. The question paper that is generated should be secured in a proper and effective manner to prevent any mishap such as leaking of paper. Sending question paper to the students across the network should be in a highly secure environment. So our team proposed a solution to tackle all this. We developed an online decentralized crowdsource model to have stakeholders contribute questions on our platform which will be later vetted by experts and using them to generate a question paper. The question paper generated would be encrypted and send across the network to the third party blockchain and would be distributed to the students whenever required and would ensure a secure and smooth process of sending question paper to the students who registered for it.
Video demo : Watch Demo Video
Presentation : Check Presentation
Anurag Kumar 💬 💻 👀 |
Anmol Verma 💬 🚧 👀 |
Joshith Gopidi 🤔 👀 📢 |
Gagan Srivastava 🌍 👀 📢 |
Mitashi Gandhi 🌍 🎨 📢 |
Divij Katyal 💻 🚧 📢 |
Other Features :
- Email updates on expert's email id about questions summary on expert's dashboard.
- Reward notifications to the person who contributed the question.
- Report functionality to send the question again back for review.
- Subject filters.
- Question search functionality.
- Question text to speech reader.
Expert's authentication can be the primary security breach to the board's question paper generation and distribution. The diagram below shows all steps to generate the expert's login data hash from the username, the password, the 6 digit code (that will be provided by respective board to each teacher expert) and the ethereum address. To register the user must fill a form to provide the username, the password and the 6 digit code, the ethereum address is retrieved directly from the wallet. This address is associated to the username to generate a signature via the web3 function sign, the generated signature is hashed (hash1). The password is associated with the 6 digit code to generate another hash (hash2). The two hashes are combined to generated the final hash that is stored in the smart contract(Refer Authentication.sol). To login, the user must be connected to the Blockchain with the same address used during registration, and fill the login form with right username, password and the 6 digit code. The back-end solidity code then generates the hash with this login information and compares it with the hash that was stored in the smart contract by the ethereum address which request the login, if the two hashes match, then the user is authorized to login, if not, the access is denied.
Frameworks/Libraries/Tools : Bootstrap, FreeOCR, Google Transalate, Truffle, Ganache, VSCode, IPFS, Moralis, Web3, Tokenizer
Username - "Divij" password - "divij0406" passcode - "123456"
Ethereum address - "0xED620CdD26E4adfae79Ea12f5fadd2c4c6ab54a4"
- Write the following command and press enter.
$ git clone https://github.com/Divijkatyal0406/CrowdQuest.git
- Move to the parent/root directory (CrowdQuest) cd CrowdQuest
- Write the following command and press enter to download all required node modules.
$ cd CrowdQuest
$ npm install
- Open Ganache and click on settings in the top right corner.
- Under Server tab:
- Set Hostname to 127.0.0.1 -lo
- Set Port Number to 8545
- Enable Automine
- Under Accounts & Keys tab:
- Enable Autogenerate HD Mnemonic
-
Fire up your terminal and run
ipfs init
-
Then run
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "['*']" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "['true']" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "['PUT', 'POST', 'GET']"
Note: If you face any issues with the above command on windows, try using command prompt and escape sequences or git bash.
- After installing Metamask, click on the metamask icon on your browser.
- Click on TRY IT NOW, if there is an announcement saying a new version of Metamask is available.
- Click on continue and accept all the terms and conditions after reading them.
- Stop when Metamask asks you to create a new password. We will come back to this after deploying the contract in the next section.
- Install Truffle using
npm install truffle -g
- Compile Contracts using
truffle compile
- Open Ganache.
- Make sure to configure it the way mentioned above.
7.1. Open new Terminal and deploy contracts using
truffle migrate
- Install Node lite-server by running the following command on your terminal
npm install -g lite-server
- Move back to the parent directory by cd..
- While you are still inside the cloned folder, write the following command to run the website locally.
$ npm run dev