4th week of the Launch Track cohort at #coStarting. I am building a bitcoin wallet with human readable addresses.
Last week ended with a hacky website based on an angular material starter project found on Github. This week we will hopefully finalize the integration of the pre-sale website with proper UX and hopefully acceptable UI.
The day started with an issue between my angular app and the gumroad widget I am using to process payment information for the presale. I want to reliably pass the triplets generated by the algorithm, or chosen as a custom address by the user to the widget, so that I will have a way to ensure who reserved what address. Currently I simply store a email : triplet pair in the database which will tell me who reserved what, like this:
However, the gumroad widget lets the user enter their email and a custom field I defined. First of all I want to take that friction out of the process to have to enter the email AGAIN, and to enter the triplet manually, which would also leave me open for typos. I was able to pass the desired parameters through the data-gumroad-params parameter supported by the widget. But the angular loading and rendering engine is messing with my lifecycle, and I can't guarantee it will always be prefilled. The only solution I have found so far is based on this stack overflow article:
And I intend to implement it today. Further, I am hoping to be able to disable the input fields for the email and triplet in the widget to make 100% sure they won't change.
Once that is all working, I can confidently run my pre-sale of addresses and ensure I can connect a paying customer to the apps database.
As referenced here to from the link in the widget:
I am sure this will come back to bite me at some time once the filename changes, and I intend to fix this and load the file the right way dynamically in the future. But for now all I did is I added createGumroadEmbed() to the end of the file and loaded it when the address is to be reserved, like so:
Thats all that was needed. Now I can predefine email and the custom fields in the widget before I load the widget and they will be populated accordingly. Saving some time here by using a final 3rd party solution with gumroad, and spending half a day coding a workaround :P. But I am happy with the end result. Have a look, I also changed the UX slightly so that the widget replaced the initial form.
Did not get much done today, but started playing around with the UI design through UI Bakery. Pretty neat tool to quickly put together a layout. And supposedly it can generate angular code. Though so far I have not tried that. I need to find some good visual elements, pictures, etc to bring this more to live.
I finally setup a temporary Landing page on CoinDrop.me
I also butchered the logo into a icon:
And kept working on the UI for the pre-sale website. I have to admit, anything which has to do with design, takes me a really long time. I am not very good in putting finishing touches on things. It comes naturally to me to design a layout and the UX of the product. But once it comes to the visual details I am not the best. On top of that, as of now I don't have a lot of visual elements for the brand, so I just stitch them together as needed, like the icon above. Until I finish the design, and export the code, you can follow along with the butchery on the temp deployment through UI-Bakery.
I have been in procrastination mode a bit today. I don't feel good about it, and I think its due to the design tasks which are daunting me. I have done a bit of outreach though to try to connect with the crypto community. Unfortunately that did not go so well as of now. I have joined 5 large bitcoin related or crypto related Facebook groups and posted about the project looking for feedback. I got responses right away, unfortunately they were all scams (of sure look like scams at least).
Maybe the group picture should have been a hint?
After some master procrastination over the last few days, i finally picked myself back up and went back to the roots. I dusted off a old project landingpage I liked to repurpose it for CoinDrop.me.
First I tried to hack the landingpage into a Angular Component. The page was pure HTML, CSS and Vanilla JS. Since the work I did so far was based on the angular project I found as a starter project, I thought that to be the fastest way. After wasting 1h on that I scrapped the idea, and went the opposite direction.
I designed the landingpage and added all the business logic I had written in angular. It took me ~2h to get the core functionality integrated and the presale working through gumroad. Have a look:
Tomorrow I need to integrate the second flow for the free address. However, that is essentially just replicating what I did today and cleaning it up a bit. But I feel confident to have the website done and maybe even deployed before tomorrows live stream.
The second week is coming to an end, and we will close with a bang. Before we get to the live stream of today I wanted to give an update on some other developments.
Social Outreach & Market Research
After the debacle of receiving almost exclusively scam messages from my FB outreach, I joined a few more groups and asked for feedback on CoinDrop.me, one of which I wanted to share with you. I posted in the group "Bitcoin Official" which has almost 600k members.
The monkey was a gif, and he was clapping. :) Its also notworthy that Kri Gell is the Admin (founder?) of this Facebook group.
What's even more interesting than the kind words however is the link to paystring.org someone commented. Paystring is a HTTPS/DNS based protocol which basically does what I envisioned with CoinDrop.me. I have yet to dig a bit deeper, but it could be the underlying technology I could use to implement the business logic for CoinDrop.me
One company I found while I was looking deeper into payString is https://www.payme.plus/, which at its core seems to be very similar to my project, with one distinct difference. To use their service, you will need an existing bitcoin (or other crypto) wallet. I believe this step could still be intimidating to some users, and I aim to simplify the user experience on that end by integrating that.
As mentioned on last nights update, I ended up rewriting the pre-sale website completely. Today I finished the core functionality to reserve both
- A FREE random address
- A Custom address of the customers choosing
What's left for tonight / tomorrow is to do some more UI cleanup on the checkout as well as bullet proofing the checkout process to ensure that every pre-sale goes through correctly. Oh, and I need to wire up the contact form on the bottom of the website.
And finally we get to the highlight of the week. I decided to add this here already and send the post as a newsletter now to allow some of you the opportunity to watch the stream live. Last week I waited till after. Let me know which format you prefer. Unfortunately YouTube does not allow me (not sure why) to allow embedding on the video until after the live stream, so here is the link to it: