Formsify | Let's Create Better Forms 📋


Project Links 🔗

📌 Website (formsify.vercel.app)

🌐 Twitter (@formsifying)

💻 GitHub Source Code: Web3 App | Smart Contract


Formsify In A Tweet ✒️

Your forms are Good, but they can be Better 💯

👉 Formsify helps you in creating better forms, which are Decentralized, Trustless & Distributed.


Project Evolution 🚀

👉 All the below links show the evolution of project - from building idea to shipping features and finally current state.


Inspiration 📌

👉 Currently available "Online Survey Services" are Centralized, Trust-Based & Dependent.

" Thus, we have challenges of Integrity, Transparency and Accessibility. "

🔎 Let's have a discussion on the problems and drawbacks of Online Survey Services


1. Integrity 🤝

Definition 👋

The quality of being honest and having strong moral principles.

Problems 💢

How do you make sure 👇

  • that the server which holds your information wouldn't be compromised?
  • that the platform which holds your forms, wouldn't go down?
  • that the system which holds your data, wouldn't betray you?

2. Transparency 📋

Definition 👋

Operating in such a way that it is easy for others to see what actions were performed.

Problems 💢

How do you confirm 👇

  • that your data was unaltered?
  • that your forms were fair to all respondents?
  • that no-one filled forms on behalf of others?

3. Accessibility ✅

Definition 👋

The information that the user needs must be perceivable to them.

Problems 💢

How do you ensure 👇

  • that your data will be accessible, even when system goes down?
  • that your forms can be independently interacted with at all the times?
  • that access to your information cannot be revoked?

What Formsify Does 💯

👉 Formsify helps in creating Decentralized, Trustless & Distributed forms by giving each form their own digital identity in terms of smart contract and storing them on-chain.

" Thus, we address the challenges of Integrity, Transparency and Accessibility. "

🔎 Let's have a discussion on how Formsify solves the problems and drawbacks of Online Survey Services


1. Integrity 🤝

We make sure 👇

  • that your data is decentralized and therefore, it remains uncompromised because there isn't any single point of failure.
  • that your forms are platform independent and the interface can be re-built by anyone if we go down.
  • that the system isn't controlled by any single entity, therefore betrayal isn't possible until majority of the network gets compromised.

2. Transparency 📋

We confirm 👇

  • that data is immutable by storing it on Blockchain.
  • that your forms are unbiased in all scenarios by ensuring that they cannot be altered.
  • that no-one can fill forms on behalf of others, until and unless respondent's wallet is compromised.

3. Accessibility ✅

We ensure 👇

  • that your data is accessible, even if go down by storing it on-chain.
  • that your forms can be independently interacted with by representing them as separate smart contracts.
  • that access to your information cannot be revoked because no single entity can stop you from accessing it.

Improvements in Web3 Ecosystem 🌐

1. Accountability ❗️

Respondent cannot deny, once their transaction is recorded on-chain which makes them accountable to their responses.

2. Spam Infeasibility ⚠️

Since each form submit will be backed by some amount of gas, it makes the intention of spam entries infeasible in a long run.

3. Independency ☑️

Forms are unbiased and have their own digital identity which cannot be tampered with.


How We Built It 🧱

Each form is represented as an indiviudal smart contract The Smart Contract has following main features:

  • Owner (Form Deployer)
  • Fills (Total fills of the deployed form)
  • maxFills (Maximum fills that are allowed per form)
  • startTime and endTime (Opening and closing times of form)
  • allowedTotalFills (Number of fills allowed per user for a particular form)
  • formHead (Headers of the form which includes the initial parameters of heading and description)
  • fields (Question fields of the form)
  • records (Stores responses of the deployed form)
  • filledRecords (Tracks fill id and total number of fills of a particular address)

We had to make sure that each form response, although stored on-chain, would still remain unreadable to ensure data privacy.

  • We achieved it using AES Cryptography, where key of each form would be unique, generated using react-uuid and encryption-decryption is carried out using crypto-js.

App is based on following:


Challenges Tackled Down 😎

  • deploying smart contracts from frontend
  • synchronizing block time and local time of forms deployed on-chain
  • maintaining data privacy while storing data on-chain
  • cryptographic encryption and decryption of fetched form data locally
  • setting form parameters of smart contracts to ensure fill frequency and limits

Accomplishments 😇

image 👉 Formsify has been a part of 🦄 Buildspace's Nights and Weekends Program - Season 1 and was also presented under their "Demo Day" held on 6.8.2022


What We Learned 🎓

Added the following learnings to our portfolio:

  • Pre-planning of solution before coding does matter. (We learnt it the hard-way. 😅)
  • Making separate components helps in saving a lot of development time. (Reusability is highly underrated! ⌛️)
  • Take proper backups before forcing a git repo to commit back to previous release. (Just in case you mess up like us, there is a command called 'git reflog', use it wisely. May the force be with you! 🌌)
  • Things which work locally, can create serious problems after deployement, if left untested. (What happens on localhost, stays on localhost. 😬)
  • Conduct experiments on a trial project before breaking up the main code. (Breaking & fixing is the endgame after all. 😌)

What's Next For Formsify 👀

We are looking forward on the inclusion of following features:

  • make dynamic smart contract creation based on forms
  • include more customization options
  • have forms record information as solitary variables instead of a JSON string
  • provide saving & editing functionalities for form respondents
  • add editable smart contract functions for after deployment changes

Contact 👋

Uday Khokhariya

Built With

Share this project:

Updates