Inspiration
For educational institutions, issuing verifiable, secure certificates to their students is an important part of their processes, allowing students to showcase their skills to employers and documenting their academic growth.
However, existing platforms may not be up to the task. As centralised entities with varying protocols, the potential for cyberattacks, impersonation and forgery complicate the process of verifying certificates.
Noting the benefits, ease of use and widespread adoption of the Flow blockchain, FlowCerts was conceived, using the decentralisation offered by Flow and functionality offered by Chainlink services to provide a secure and seamless certificate management experience.
What it does
FlowCerts provides a user-friendly and uncomplicated web application for organisations to upload educational certificates to the Flow blockchain.
Account Setup
After signing up with a Flow-compatible wallet, organisations should verify ownership of their website by inserting a DNS record generated by Chainlink Verifiable Random Function for maximum security and verifiability. The DNS record is then checked using Chainlink Functions' Decentralised Oracle Network.
An organisation's web domain is a key feature to help others verify that a certificate originates from them, hence the need to verify it.
Once verified, FlowCerts stores Cadence resources and capabilities in the organisation's Flow account, allowing their Flow account to create certificate collections and issue certificates.
Verification Card and Issuing Certificates
When organisations issue PDF certificates using FlowCerts, a card with information on how to verify the certificate including a QR code and link can be embedded into the PDFs, along with metadata to allow FlowCerts to identify the certificate.
FlowCerts' web app provides tools which organisations may use to customise the card's appearance.
Once certificates are uploaded, FlowCerts lets organisations download CSV files containing the various links for each certificate associated with the uploaded filenames, allowing organisations to easily share the links.
Verifying Certificates
FlowCerts also provides a web app where anyone can either use a FlowCerts URL (printed on each FlowCerts PDF) or upload a FlowCerts PDF to verify a FlowCerts certificate. FlowCerts loads the metadata from the certificate or URL and compares it with the data on the Flow blockchain, among other checks, in order to verify its integrity and authenticity.
How we built it
FlowCerts started as a collection of Cadence smart contracts which defined the core behaviour of FlowCerts certificates and user privileges. Then, Node.js code which used Flow Client Library (FCL) to interact with these smart contracts on the Flow blockchain was written and incorporated into a Fastify backend. Then, we wrote code for the backend to interact with Chainlink VRF and Functions subscriptions for the organisation verification functionality.
Much of the smart contract interaction is done on the frontend too, using FCL, to enhance FlowCerts' decentralisation and security. The frontend is built in Vue.js and TailwindCSS, with various UI components from Flowbite.
Challenges we ran into
New to Flow
As our team was completely new to the Flow blockchain, we had to quickly learn how to develop smart contracts in Cadence and interact with them using FCL, adjusting our thinking to fit the structure of smart contracts.
UI / UX Design
To make FlowCerts easy to use, we had to pay extensive attention to the user experience, making sure not to overload new users with interactions and terms they may be unfamiliar with.
Accomplishments that we're proud of
UI / UX Design
After investing much effort into creating a user experience which could be welcoming enough for users unfamiliar with blockchain technologies, the final product has a UX which we are indeed quite proud of in this regard.
What we learned
Writing and using smart contracts in Cadence
Through this project, one of the most significant skills we learned was writing smart contracts in Cadence and interacting with them on both the client and server-side using Flow Client Library, which would definitely come in handy for future projects.
What's next for FlowCerts
Additional features such as a fully-featured certificate designer and metadata manager could be incorporated into the FlowCerts platform to provide institutions with a turnkey solution for issuing certificates, from design to issuing on the Flow blockchain.
Course tracking could be added to the FlowCerts platform, allowing students to track the certifications and qualifications they received via FlowCerts over the course of their education.
Testing Instructions
FlowCerts is currently on testnet. We recommend using Blocto wallet to test, as FlowCerts was mostly tested with the Blocto wallet. We also recommend using the testnet faucet to transfer more FLOW to your address used for testing as the default 0.001 FLOW may be insufficient to store many certificates' metadata.
Built With
- chainlink
- fastify
- flow-blockchain
- node.js
- tailwindcss
- vue.js
Log in or sign up for Devpost to join the conversation.