Issue, verify, revoke
An admin fills in the recipient, course and issuer. The app hashes the credential, the issuer signs the hash with MetaMask and the contract records it on Polygon Amoy. Metadata is stored server-side, keyed by that hash.
Anyone can paste a certificate hash into the verifier, which reads the issuer, status and timestamp straight from the contract. The issuer can revoke a credential in one signed transaction, and every verifier sees the change at once.
Keep the chain small
Names, courses and dates on-chain are expensive and leak personal data. Only the hash and a status flag go on-chain. The chain proves authenticity and the database serves the rich data.
Live events without polling
A WebSocket subscription streams every issue and revoke event into the dashboard. RPC providers drop these connections often, so the client reconnects and backfills from the last block it saw, and the live log never misses an issuance.
Web3 without the confusion
Most people have never used MetaMask. The interface says when a wallet is needed, which network to switch to and what the next transaction will do, and wallet errors are rewritten in plain English.