DCertify is a decentralized application that allow institutions to create and issue certifications to students. Storing data in a blockchain is expensive so DCertify store institutions and certifications info in IPFS and link these files by using the IPFS hashes.
DCertify identifies the role associated to the Ethereum address selected in Metamask and display custom pages based on this role.
DCertify uses Metamask to send and sign transactions and detect automatically account changes (different roles).
There are three different roles with different permissions and capabilities:
- Admins:
- Can add other admins
- Can add institutions
- Can update cost of issuing a certification
- Institutions:
- Can add certifications
- Can view their certifications
- Can issue certifications to students
- Students:
- Can view the list of certifications they have received
- Can decide whether they want to make their certifications public or not
Setting up DCertify is pretty simple. This project has been created with Truffle. Please follow the following instructions to run DCertify:
- install git (if not installed yet) and clone the repository to your local machine:
git clone https://github.com/asuarezgrupobme/dCertify.git
install node.js and npm (if not installed yet) and install node packages for the project:
npm install
install truffle (if not installed yet):
npm install -g truffle
-
Edit the truffle.js file to match your network settings. You may need to edit the IP and port where your RPC Server (Ganache) is running (http://127.0.0.1:7545 by default).
-
Compile and migrate your contracts from within your project folder:
truffle compile
truffle migrate
Note: keep in mind that the account[0] will be associated an Admin role. You can run the tests for the smart contracts by running:
truffle test
most tests have been implemented in JavaScript.
-
Install and configure Metamask to point to your network. You will need at least 3 different accounts to fully test all functionality (admin, institution and student).
-
Start your application:
npm run start
- Browse to: http://localhost:3000
Below you can find a video showing main functionalities: