Inspiration
In the context of the blockchain world, in the last few years we have identified that some certain requirements were common among the development projects that we received. Broadly, we understand that blockchain technologies are used to produce irrefutable proofs to the existence of complex data like any kind of archive. This data that represents the document becomes notarized when inserted in the blockchain. From our experience we have found out that most blockchains are not suitable for big amounts of data but also that higher amounts of data to be inserted in the blockchain represent higher costs. We also understand that for any amount of data, an hash can be produced to represent it, and that this hash can be stored in any blockchain, becoming the proof that the data have not been corrupted. The central application must ensure the consistency of the hash stored in the blockchain.
What it does
From our application an user should be able to insert any kind of file, and produce the proof of its existence, and at any point in time he can access the proof and verify its existence, and also present a document to the application to verify its presence in the blockchain. When the user uploads a file for verification, the application should produce the hash and verify that it is the same that was previously inserted in the blockchain, thus the user can verify that a document is notarized at any point in time.
How we built it, challenges and accomplishments
The application is built in noje.js, using frameworks nest.js for the back-end and react.js for the front-end. The application backend uses hashgraph/hedera javascript sdk to communicate with hedera network. At the present the application has a default user, that can be used by anyone to upload a document to be notarized or verified its notarization in the hedera Testnet network. Our setup uses a mongodb database for saving data for the application and an aws s3 bucket to store original documents if the user wants his files to be persisted in the application. We have used netifly for frontend hosting and heroku with github workflow for the backend. The backend also has a swagger interface created that is allowing to better visualize our implementations.
Challenges we ran into, and what we learned
For this project we had to learn how hedera blockchain works and how to work with it. After creating this application with this starting main functionalities we can say that hedera offers a blockchain solution that is easier to implement than other blockchains and also that despite the hashgraph/hedera javascript sdk is kind of new and still in beta version, it is already very well documented and with very useful examples. We can also say that the initial learning for it is already faster than other blockchains we have worked with in the past.
What's next for Document Notarizer
Next for the application is to be able to create specific users that can associate document notarizations to their profile. The users should also be able to have signatures that they can use to sign the tokens inserted into the blockchain. Users should be able to pay for these requests using their hedera accounts or with traditional forms of payment. These implementations would then make it possible to integrate the application with the Hedera Mainnet network, which would be our main goal, offering to any internet user the possibility of producing a proof of a notarized document.

Log in or sign up for Devpost to join the conversation.