An application for securely issuing, storing, and verifying tamper-proof digital credentials. By leveraging IPFS and Soulbound Tokens (SBTs), MetaCert ensures trust and authenticity empowering users to manage credentials with unmatched security and transparency.
- 🔒 Secure Credential Issuance: Issue cryptographically secured credentials.
- 🌐 IPFS Storage: Store credentials in a decentralized, immutable manner.
- 🎓 Soulbound Tokens (SBTs): Credentials are tokenized as non-transferable SBTs, ensuring authenticity and ownership.
- ✅ Easy Verification: Verify credentials seamlessly with blockchain-backed proof.
Ensure you have the following installed:
- Node.js (v16 or higher)
- npm package manager
- A compatible crypto wallet (e.g., MetaMask/Phantom)
Clone the repository:
git clone --recurse-submodules https://github.com/Aswinr24/MetaCert.gitNavigate to the project directory:
cd MetaCertInstall dependencies:
npm iCreate a .env file in the root directory and configure the following variables:
NEXT_PUBLIC_OPENSEA_API_KEY=<OPENSEA_API_KEY>
NEXT_PUBLIC_SMART_CONTRACT_ADDRESS=<CONTRACT_ADDRESS>
JWT_SECRET=<PINATA_IPFS_SECRET_KEY>Start the development server for UI:
npm run devBuild the application for production:
npm run build
npm startThe contracts directory is included as a Git submodule.
After cloning the repository with submodules, navigate to the contracts submodule:
cd contracts Install Dependencies for Hardhat
npm iCreate a .env file in the contracts directory and configure the following variables:
NEXT_PUBLIC_ALCHEMY_SEPOLIA_API=<YOUR_ALCHEMY_SEPOLIA_API_KEY>
NEXT_PUBLIC_ACCOUNT_PRIVATE_KEY=<YOUR_WALLET_PRIVATE_KEY>Compile the smart contracts using Hardhat:
npx hardhat compileDeploy the contracts to the Sepolia test network:
npx hardhat run scripts/deploy-sepolia.js --network sepolia
After deploying the smart contract, note the contract address and update the NEXT_PUBLIC_SMART_CONTRACT_ADDRESS variable in the .env file of the MetaCert UI directory.
Contributions are welcome! If you find any bugs or have suggestions for improvements, please open an issue or clone the repository and submit a pull request on GitHub.