Want to reach a goal? Set a deadline, an amount of crypto. If you fail, you pay.
One of my favorite indie hackers, Pieter Levels, launched a website called "Go Fucking Do It".
The Idea: To reduce procrastination and become faster at launching projects. A person sets a goal in the app that he or she wants to reach until a certain deadline, puts some money at stake, and selects a supervisor who is going to evaluate whether he or she reached the goal. Once the deadline passed, a supervisor will judge and evaluate whether the person achieved the goal.
If the person achieved the goal, the pledged amount of crypto can be withdrawn from the smart contract. If not, the person's money remains locked in the smart contract.
This way you put your money where your mouth is and are incentivized to finish your goal and do not procrastinate. Just like we staked our eth for this hackathon.
I thought this would be a perfect project to migrate his idea into a Web3 decentralized App. I believe that Web3 can be a better alternative to the current Web2 version for the following reasons:
Beyond that, there were 2 bigger ideas that I could not implement yet. Due to the short nature of this hackathon and my partner being sick:
The first idea was to have code in a smart contract evaluate any goals and cut out the supervisor altogether. By using a Chainlink Oracle one could replace the supervisor who can still be persuaded to give someone a pass, oracles are much more objective. E.g. say I want to run at least 3 times a week and have an oracle hit the Strava Running App API to verify my activities. For sure you can still cheat, but it's becoming more bothersome.
The second idea was to tap into the creator economy idea and give value back to people. All the funds that are locked in the smart contract because people did not achieve their could be randomly paid out to people who keep on achieving their goals. This way people are not only incentivized to reach their goals with their own financial stakes but also by the financial stakes of others.
The app is built on the amazing Scaffold-ETH project. I chose it because...
It allowed me to quickly experiment with Solidity using a frontend that adapts to my smart contract in a heartbeat.
It comes with many out-of-the-box components and hooks that made it much easier to build the frontend.
Deployment is very easy with surge and adjusting a few things.
The smart contract design was inspired a lot by Nader Dabit and his amazing tutorial on Building a Full Stack NFT Marketplace on Ethereum with Polygon: https://dev.to/dabit3/building-scalable-full-stack-apps-on-ethereum-with-polygon-2cfb.
Parts include:
Reentrancy guards and counters from OpenZeppelin to track stats
Id mappings to allow users to create more than one goal
View functions for the frontend to dynamically retrieve content
Alchemy was used to connect the dapp to the Polygon Test Network.