How I built a web3 project in a week with no-code tools
If I can build a web3 project without knowing how to code, then anyone can do it!
I'm the kind of person who has a lot of ideas, not small ideas you know but BIG IDEAS. At least in theory because here’s the catch: I always struggle with execution.
So last week, I made a deal with myself. I will work a full week on the first idea that comes to mind that seems exciting enough to keep me glued to my laptop.
I thought about developing a wiki where members write at length about their journey to become who they are and support each other in the process, a SaltyBet-like website where you bet real money on fighters instead of fake money, a chatbot that matches people based on interests and desires, a 2D battle royal where you earn money by killing opponents, a learning app like Duolingo but for empathy… The list could go on and on.
At last, I chose to make a website where people can bet on popularity of web content.
I't’s inspired from a 5 years old article of Simon de la Rouviere about curation markets.
TL;DR: Anyone can post on a list a link to a web content (e.g. a new track from an artist you love). New content is at the bottom of the list. Users bet a buck on it if they think it will be popular. The more users bet on a piece of content, the higher up the list it goes. And the higher a piece of content is on the list, the more money early bettors will be able to cash out. It’s a new kind of discovery process where discoverers are financially rewarded.
In other words, it’s like Reddit and HN but here the market decides what’s going up.
Seems simple right? Problem: I don’t know how to code.
So far I had one idea, one week and no clue how to execute it, I accepted my fate and started googling.
Long story short, at the end of the first day I found everything I could have dreamed of to not make this week a living hell, better: my findings make me confident that I could actually do it.
What I needed and what did I find?
A market maker algorithm to ensure liquidity. People will bet on an infinity of content and thus you need a way to bootstrap liquidity - because without liquidity there is no market, and without a market there is no possible bet. I needed an algorithm to have continuous liquidity on the buy and sell side, to act as a counterpart to any bet. Another need of mine was to host this algorithm on a blockchain. Why? Because I don’t want people to have to trust me with their money, I’m a newcomer to web development remember? Luckily I found Mint.club smart contracts which are open sourced, under MIT license and use a simple linear algorithm.
Tooling for smart contracts. Even if I had Mint.club smart contracts, I still have to change it a bit, compile, test and deploy my own version. For this task, I found the simplest yet powerful tool to do that: Remix, an online development environment dedicated to smart contracts. Without knowing how to code, it was still straightforward to read smart contracts and to remove lines of code I didn’t need for the project.
A blockchain to host smart contracts. I needed a solution that was compatible with Metamask wallet, had low fees and a bridge to Ethereum as I didn't want a solution that was too hard for users to adopt, web3 is already complicated enough. I chose Arbitrum nova because Reddit community points use it (social proof you know).
A way to interact with Metamask wallet and smart contracts. It was one of my great fears but hopefully I found the Web3 & Metamask plugin for the no-code platform Bubble. A real gem which allows you to manage interactions with Metamask and smart contracts without code. To learn how to use this plugin, I read the documentation and watched tutorials about signing users with Metamask and about interacting with smart contracts. This plugin costs $50, it was a no brainer for me.
Tutorials to learn to use Bubble fast. Because the Web3 & Metamask plugin was for Bubble only I had no choice but to use them. I found a tutorial to create a Hacker News clone using Bubble for $29. As I was a total newbie at Bubble I considered it worthwhile. I found also other tutorials to make specific features like a search bar and pagination with this video and this one.
I knew that armed with all these resources it would be like playing with Legos, trying to fit it all together to build my project. During the rest of the week, I learned so much, went through so many emotions and finished in extremis.
Here is what I learned during the week:
It’s critical to have a deadline. To be more creative and to cut the BS I know that I need a deadline. When I have a short deadline I become very creative, find solutions that I never thought possible and I don’t waste time on non-essential features (e.g. at the beginning I wanted users to be able to bet by streaming money in real time, there was no direct way to develop this kind of feature so I dropped it).
I need to start and everything will be ok. I could have told myself that, not knowing how to code, to build a web3 project in a week is an impossible task. This is limiting belief, I started to look for ways to compensate for my weaknesses. In the end, it was hard but not insurmountable. Even when I felt desperate about a specific problem, I took a break then come back and finally found a solution.
I can pay to speed up the process. Many things are free on the Internet but sometimes it’s better to pay for plugins, templates, tutorials,… I have to choose wisely between time and money.
I need to acknowledge that it will never be perfect. Right now the project I made is usable but there is things that I could improve, features to develop, bugs to fix, it’s endless. Perfect is the enemy of good. Also I have to deal with the fact that sometimes what I want to do is limited by the tools I use, I have to accept it (e.g. the bridge between Ethereum and Arbitrum nova takes 15 minutes to cross, what a great onboarding process) or find workarounds (e.g. the Web3 & Metamask plugin can’t pass the result of a call to a smart contract to the next step in the workflow thus it’s a nightmare to change data in the database when you have repetitive groups).
I can build a web3 project. I have a much clearer vision of what it is to create a project from A to Z. Funny to think that it’s kind of simpler to build a web3 project than to actually use it. I’m aware that my web3 project like many others is not user-friendly. For example, I tried to find solution like Ramp and Transak for people that don’t have ether but transaction fees are prohibitive (more than 5%), not cool.
What’s the result?
The website is live and accessible at guesslist.org. Smart contracts are deployed on Arbitrum nova.
For anyone that want to build a web3 project like I did, I opened the editor view of my project so you can see how I built it. Hope it will save you a lot of time :-)
What happens next?
Now that I have shared this project with the world, I'll listen to feedbacks and see what direction the project should take. I have still so much to learn and so many things to do, I will keep you posted if you subscribe!
Also if are interested in building things, works on projects like this one, feel free to reach out, would love to connect, DM open on twitter.