Photo by malith d karunarathne on Unsplash
Moon Stats: The exciting Crypto PNL Tracker App
#Linode #LinodeHackathon
Table of contents
What is PNL?
PNL means Profit and Loss. Right now, the project only tracks Spot Trading Profit and Loss
History
After a few months of dabbling with crypto trading on Binance, I had a decent amount of trading history on Spot Orders. Spot Order just means normal trading without leverage (loans) and you wouldn't get liquidated (Binance will take your money) if the value of the crypto token goes down.
I had so much fun that I needed to see on a chart and some kind of tabular data how I was doing with all these trading. I went on Coin Gecko portfolio, and I thought I can do the same thing and much better!
Roadmap
Here's a roadmap of the project:
- v1 ✅
- Spot Order PNL Tracker
- Adding Buy/Sell Orders
- User Auth
- v2
- Getting data from Binance API
- Ability to import from Binance CSV
- Adding multiple accounts (e.g, Binance, Kucoin, etc)
- v3
- Futures / Margin Trading PNL Tracker
- v4
- Social Media PNL Sharing
Tech Stack
For Frontend, I chose Remix, because I love React! And I've been meaning to learn Remix for a long time. It was perfect and although I faced a lot of obstacles, I can say it has many pros than cons.
For Backend, I chose NestJS! I have used it for a small project before, and I'm really loving it so far. I don't think it's easy for beginners but once you get the hang of it, the opinionated framework will really take your project to new heights.
And of course for deployment, I use Linode for the Hackathon. I'm not a devops person, so I spent the whole weekend configuring. I deployed my NestJS there and my Mongo database. The Marketplace app for NodeJS really helped alot.
Here's some screenshot of my Linode and MongoDB cluster:
I used Vercel to deploy my Remix app, because I don't think I have enough time to configure and deploy it to Linode :)
Here's a screenshot of the web app:
Demo Usage
You can test a demo by logging in with these credentials:
email: faith.morante+test1@gmail.com
password: test123
- Sign in or Sign up
- Login to see the dashboard
- Click the Add Order button, make sure all the fields are filled in.
- Once it's done, the dashboard should automatically reload without refreshing the page
Web link: moonstats-remix.vercel.app
Frontend Github: github.com/idiglove/moonstats-remix
Backend Github: github.com/idiglove/moonstats-nest
NOTES: If you want me to post a tutorial for how I did this project on Remix, Nest and Linode, pls comment down below :)