top | item 37836977

Show HN: I learned to code and built a crypto analytics platform

108 points| buckwhitzer | 2 years ago |tradingdigits.io | reply

Hey everyone!

I am an enthusiast trader and a year ago I had this idea to create a free-to-use website that would feature all the most essential tools that traders would use on a daily basis.

So I learned to code and build it—I did everything including design, texts, code, and SEO—which took me 12 months to launch and a year and a half to make it look like it currently does.

I was into marketing and design before, but I didn't know barely anything about coding. The website is built using Next.js, Tailwind CSS, and Typescript with Framer Motion animations and lots of APIs.

I’m actively working on the project and in the following months I will release a huge update that will feature a renewed interface and access to real time on chain data and analytics.

Feel free to ask any questions and thanks a lot for reading this, it means a lot to me. Any feedback and your opinions would be highly appreciated.

81 comments

order
[+] CitrusFruits|2 years ago|reply
Great job! Shipping an actual product is a huge milestone! Although I'm not that into crypto trading myself, I can see that a lot of work went into this.

I spend most of my professional time as a front end dev and am a UX enthusiast, so I thought I'd some feedback regarding the UX.

1. I'd work on establishing some strong patterns on what is clickable, what's an input, and what is information. If you look at /positionSize, you'll see what I'm talking about. "Loss" and "Stop Loss" both use identical design language, but one is an input, and the other is just information. You have a similar problem when looking at "Risk" vs "?". One appear to be a label, while one appears to be a toggle.

2. I'd consider using a different font. Hyper-stylized fonts like the one you have are super fun and can be a great way to express a brand identity, but it can come at the cost or readability and can even undermine a user's willingness to trust the security and reliability of the platform. I'd challenge you to spend an hour tuning it to something a little more mainstream like Roboto, Open Sans, or Ubuntu just to know what it would look like (you could even leave the existing font on the headers if you like).

3. Keep the minimum font size above 10px or 11px. You have some right now that is 8.4px and that's going to be impossible (quite literally) for some people to read without the use of magnification.

Once again, good job and cheers!

[+] buckwhitzer|2 years ago|reply
Thank you!

1. You're right, it's kind of confusing. Will fix all input cursors in this month's update. 2. I may make some changes in the overall website look in the big upcoming update although I quite like the font I'm using. Is it difficult to read for you? 3. I don't use font sizes smaller than 12px for important data and less than 10px for some less-important-data (like BETA and NEW badges in the side menu, which are semibold to make them more visible). The only place where 8.4px is used is for the 24H price change percentage for BTC and ETH prices in the header.

[+] franky47|2 years ago|reply
Great job! A couple of pointers for UX improvement:

- Animations look nice, but don't abuse them. Eg: on the Exchanges page, animating the tab switches between Spot & Futures makes it difficult to focus on the actual values.

- Your "share" feature could use a way to restore table filters/sorts based on the URL query. I have recently released a library that helps with that in Next.js: https://github.com/47ng/next-usequerystate

[+] buckwhitzer|2 years ago|reply
Thanks so much!

1. Yeah, I was thinking they may be too much sometimes. What would you recommend for switching animation? Simply fading?

2. That's a nice library, already starred it. How does it work with SEO? Won't Google complain that they are non-indexed pages?

[+] buckwhitzer|2 years ago|reply
If there are some other crypto analytics tools or calculators that you'd like to see on the website please let me know and I'll include it in the list of things to code.
[+] Galanwe|2 years ago|reply
Make it point in time, add an API, more data, and sell a registration fee.
[+] mellosouls|2 years ago|reply
Great job! How do you find your new identity as a coder - enjoying it enough to pursue as a main line or sticking with the trading and other skills you used here?
[+] buckwhitzer|2 years ago|reply
Thank you! I'm pretty comfy spending most of my time coding the website and adding/planning new tools as well as its promotion, but I still trade occasionally and I also have some passive income selling photos on stocks (I don't upload anymore, it keeps on selling old photos).

But yes I really enjoy coding and may even take some freelance projects when the website requires less work.

[+] Nevermark|2 years ago|reply
Might be nice to be able to include crypto relevant stocks or funds.

Might be beyond your scope, but any tax estimates regarding sale decisions is always helpful, and can save some grief.

That is a serious request, though I don’t recommend anyone else doing this.

But the legitimate context here is a crypto tool, so here is my use case:

Microstrategy’s market cap reflects a growing fortune in Bitcoin, as well as its business value. The result is it’s share price can both magnify & buffer Bitcoin changes on different time scales.

(If anyone does ever invest in anything highly volatile, I recommend (1) you don’t, (2) if you do, learn everything you can about the security, market, political, social, technological, and key player contexts, (3) constantly pay attention to changes in context & events, (4) only do this with a small fraction of your money, and if you lose it - stop!)

That being said, IRA’s, with their lack of tax implications, vastly simplify investment change decisions, by removing tax timing and loss issues. This is tremendously helpful for volatile type investments, because transaction timing constraints and house vigs (taxes) both significantly magnify risks.

I really wish there was a time-agnostic way to invest for taxed accounts. Like taxes that reflected the time between a purchase & sale so that taxes did not create perverse incentives for timing purchases or sales.

Dancing around non-neutral tax implications creates a terrible drag on performance & adds headaches to straightforward rational value analysis.

TLDR: Don’t read anything I wrote! Max out your tax protected retirement plans every year, and invest all funds cautiously and diversely!

And thanks for sharing your project!

[+] buckwhitzer|2 years ago|reply
Thank you for your comment and for the advice! I was thinking to add both crypto and stocks heatmap in the future.
[+] gumballindie|2 years ago|reply
No questions - just here to congratulate you! This looks amazing and it’s amazing you learned AND built all this in one year. I love reading about such stories and more people should dare share them!
[+] ladberg|2 years ago|reply
FYI minor bug: if you sort the exchanges table, within a few seconds it'll refresh and go back to the original ranking
[+] buckwhitzer|2 years ago|reply
Thank you for noting that! I just checked and yes, the table gets rerendered upon data refetching every 60 seconds, resetting the table sorting.

Will fix it in this month's update, which will be released in around two weeks together with new Wallet Tracker tool and other improvements.

[+] jasfi|2 years ago|reply
The UI looks incredible! Well done, this is a great idea executed nicely.

Are you the only one building this?

[+] buckwhitzer|2 years ago|reply
Thanks a lot! Yes, I did all by myself including idea, design, texts, coding, SEO, and now promotion/SMM.
[+] Gibson_v1|2 years ago|reply
awesome. i'm trying to get better at coding myself and going to try a financial project soon. i wanted to do something with the current earnings reports coming out but that'll probably have to wait til next quarter at the rate i'm moving
[+] buckwhitzer|2 years ago|reply
Just do it bit by bit and eventually it will get done faster thank you think. I'm working on this since May 2022 so it's been a massively long road.

Good luck, man!

[+] chompychop|2 years ago|reply
This is pretty cool! :) What resources did you find most helpful in your learning journey?
[+] buckwhitzer|2 years ago|reply
Thanks so much! Most definitely can recommend scrimba.com, it's basically the only resource I used. I took a paid Frontend Developer Career Path, but there are lots of free courses too.
[+] tornato7|2 years ago|reply
Looks nice. You should definitely add Grayscale trust discounts!
[+] buckwhitzer|2 years ago|reply
Thank you! Will definitely look into it.
[+] root_axis|2 years ago|reply
fading transition animation is fine when clicking around, but it's an antipattern in the back button.
[+] buckwhitzer|2 years ago|reply
Thanks for the feedback, I'd never have noticed it myself. I kind of normalized it. Will fix it in this month's update.
[+] TacticalCoder|2 years ago|reply
Really cool.

Are all the data feeds you are using free?

[+] buckwhitzer|2 years ago|reply
Thanks, man! Yes, all APIs are free. Also, it's hosted on Vercel so it's free too because their free tier is really generous. The only thing I pay for is the domain name.
[+] ge96|2 years ago|reply
Props for picking up TypeScript
[+] KomoD|2 years ago|reply
id get rid of the animations
[+] buckwhitzer|2 years ago|reply
Which ones exactly you find distracting/invasive? There are fade animations when you enter/exit pages and also sliding animations in some tools.
[+] foxes|2 years ago|reply
I learned to code and made the world slightly worse!
[+] withinboredom|2 years ago|reply
I wrote an arbitrage bot and gave it $100 ... then promptly forgot about it. Several years later, when I stumbled across it, still faithfully running on my server, it had nearly 11 million worth of coins. I opened the project and had it start shuffling everything off to bitcoin, slowly, over days/weeks to bitcoin. I was going to just cash out.

Well, it turns out that when I originally wrote the code, time was calculated in milliseconds, not seconds. So, when I thought I calculated out 17 days, it was like half an hour-ish. It caused a small crash trying to dump everything almost all at once, on some of the alt-coin markets, and lost almost all the money.

I walked away with ~$700.

I was literally in tears, as I went from so excited and I'm going to "just retire" ... to just as broke as I was an hour prior. The emotional roller-coaster of euphoria, to 'oh shit, what did I do!?', to 'well ... fuck' was not fun.

Anyway, good luck. There might be a lesson in there, but mostly, be careful where the intersection of money and programming lie.

[+] december456|2 years ago|reply
I dont think reputable alt-coins with liquidity could turn into 11mil->700$ in an hour, so i consider it pretty safe to assume that 11 million wasnt actually 11 million: it doesnt matter if nobody wants it. Nevertheless, great work on processing such emotional burden.
[+] i-use-nixos-btw|2 years ago|reply
I’m not sure what I’m finding harder to believe here. That one could lose more than 99.99% due to a timing fat finger (even on a quiet market - 11m over 30 minutes eating through the order book?), or that an arb bot that you forgot about managed to run for that long on a server without hitting endpoint changes, API changes, re-auth requests, etc.
[+] CPLX|2 years ago|reply
If it makes you feel any better the money was never actually there in the first place.

If $11,000,000 turned into $700 then the "market cap" was bullshit and the coin was bullshit and whatever "price" it had was bullshit. Maybe you could have done a little better than you did but there wasn't any there there, in the sense that there were actually eleven million real greenback dollars in the hands of people that had any interest at all in owning that coin.

This dynamic completely underpins the entire concept of crypto, with the possible exception of a couple big ones. It's just market manipulation and people trading with each other. Turns out nobody wanted to own digital apes either it was grift all the way down.

[+] tornato7|2 years ago|reply
Sounds like your bot hit some edge case and was min-maxing on long tail shitcoins with no liquidity on Uniswap. You maybe could have done a bit better than $700 via TWAP but likely not much more than $10k or so. It's just not that possible to turn $100 into $11M via arbitrage.
[+] timack|2 years ago|reply
11,000,000 to ~700? -- I'd call that more than a "small crash".
[+] spencerchubb|2 years ago|reply
Just run the arbitrage bot again. Or better yet, if you can prove to me that this was true I'd be willing to buy your arbitrage bot for $10k. Serious offer
[+] buckwhitzer|2 years ago|reply
Sorry to hear that! I am being pretty cautious when trading lately whilst the website is pure independent analytics and doesn't require me to risk any funds.
[+] endofreach|2 years ago|reply
Ouch. I do hope you don‘t miss the millions. Still: 700 bucks could feed some people on this planet for at least one year, if not even two.

And another upside: the valuable lessons you learned are probably worth… well… millions of dollars!

Back to topic: How did the crash lead to losing the money technically? What happened here? How did too many requests of selling lead to „devaluation“?

You should definitely write a longer form story about this and include some code.

[+] yieldcrv|2 years ago|reply
lol you had $700 in liquidity because the team found your dumb bot and saddled you with their illiquid asset for your liquid eth

its one of the easiest trades

[+] quickthrower2|2 years ago|reply
Language designers not having meaningful number type aliases (e.g. NanoSeconds instead of int) is a, well ... $11m mistake.
[+] mm263|2 years ago|reply
How exactly did 11 million dollars turn to 600?