Languages & Frameworks
My First Personal Project Decentralized Application
While talking with my wife one night, we came up with this idea. She took care of the designs and I took care of the smart contracts, and DApp.
The original version was built while I was working at Brickblock. A lot of the patterns that I decided to use, I eventually implemented in the Brickblock platform.
The Rewrite... and Taking it to Mainnet!
The first version was built in 2017 but never got deployed to mainnet. Once when my wife and I decided to have a wedding ceremony, I decided to rewrite the whole thing from scratch. I had learnt a lot more about smart contract and dapp best practices in the two years since the dapp was originally built!
The dapp was rebuilt, launched on mainnet, and used by myself and my wife on July 10th 2019. The wedding was streamed on twitch and gained a bit of media attention. We had an interview on blocktv.com.
Most of the development process, from contract rewrites to client development, was streamed live on twitch.
Useability as a focus
While creating this dapp, I really tried to focus on useability. I ended up building my own wallet implementation in the browser instead of forcing users to install MetaMask, though it is still an option to use it if desired.
The wallet's private keys are kept secure by being encrypted via password in local storage on the browser. Private Keys are retrieved through mnemonics, which the user is prompted to write and down and back up.
I also tried to create as uninvasive of a user flow as possible. This means only prompting the user for an account when one is really needed.
Evolution of patterns
Many of the components and user flow is an evolution of my work on my earlier pet project: rps-ethereum. You can find many less well thought out implementation of these concepts in that project.