/student-grading-dapp

Decentralized student grading App on Blockchain

Primary LanguageTypeScriptMIT LicenseMIT

Result Dapp 🔗

Result Dapp is a decentralized grading system built on blockchain technology. It is built with TypeScript, Tailwind, NextJS, and Solidity. Result Dapp allows educational institutions to store and manage student records in a secure and tamper-proof way on the blockchain.

Overview

The core functionality of Result Dapp relies on the efficient and secure storage of student records. To achieve this, the system employs Merkle root trees and stores the actual data off-chain in IPFS.

Demo

dapp-demo.mp4

Screenshots

Screenshot 2023-04-30 at 2 01 49 AM

Screenshot 2023-04-30 at 2 02 34 AM

image

Screenshot 2023-04-30 at 2 04 45 AM

image

Screenshot 2023-04-30 at 2 09 09 AM

Features 🚀

  • Super Admin: The super admin has the authority to add or delete new admins.

  • Bulk Upload: Result Dapp allows for bulk upload of student records from an Excel file through drag and drop.

  • Cost-effective: Result Dapp is extremely cost-effective as it uses Merkle root tree to store data in the blockchain. The actual data is stored off-chain in IPFS.

  • Auto Deploy Contract: Result Dapp has an auto-deploy contract feature with Hardhat deployer.

Technology Stack 💻

  • TypeScript
  • Tailwind
  • tRPC
  • NextJS
  • Solidity

Prerequisites 🔑

Before getting started with Result Dapp, you need to have the following:

  • BscScan Testnet API Key: You can obtain a BscScan Testnet API Key by creating an account on BscScan, and then generating an API Key from the API Dashboard.

  • Infura.io API Key for IPFS Instance: You can obtain an Infura.io API Key by creating an account on Infura.io, and then creating a new project to get an API Key.

  • Wallet Private Key: You will also need a Wallet Private Key to deploy the contracts and interact with the blockchain. Make sure to keep your Wallet Private Key secure and never share it with anyone.

  • SMTP Settings: You will need to contact your email service provider or check their documentation to obtain the SMTP settings required to send emails. These settings will typically include the SMTP server address, port number, and authentication credentials. You can obtain a test account at ethereal.email, by visiting their website and clicking on the "Create Account" button. This will give you access to a temporary email account that you can use to test your email functionality.

Getting Started 🚀

To get started with Result Dapp, follow these steps:

  1. Clone the repository.
  2. To configure your environment variables, you need to:

Rename the file named `.env.development.sample` to `.env.development` and the file named `.env.local.sample` to `.env.local`
Replace the placeholder keys in these files with the keys obtained during the prerequisites step.
  1. Set up smart contract.
cd contracts/
npm install
npm run build-contracts
npm run generate-contract-ts
npm run deploy-testnet
  1. Run the application.
cd client/
npm install
npm run dev

Available Commands 🛠️

  • generate-contract-ts: Generates TypeScript contract bindings from Solidity contracts.
  • build-contracts: Builds the contracts using Waffle.
  • deploy-testnet: Deploys the contracts to the testnet using Hardhat.
  • deploy-mainnet: Deploys the contracts to the mainnet using Hardhat.

License 🔑

Result Dapp is released under the MIT License. See LICENSE for more information.