DEV Community

loading...
Cover image for # Crypto Profits Tracker (feat. Notion API)

# Crypto Profits Tracker (feat. Notion API)

TnvMadhav⚡
Scribble . Design . Thoughts
Updated on ・4 min read

Crypto Boom of early '21


A crackle involving cryptocurrencies took off late 2020, and early 2021 saw a portion of it go mainstream. Cryptocurrency adoption was at all time high, with mighty bursts of bulk investing and selling.
The prices went from all time highs to dwindling states all in the matter of minutes. This was a result of non stop bidirectional flow of coins all over the globe. This forced the investors to keep up to date with extremely mutable prices toggling the state of the market.

Some wanted quick profits, some wanted to be a part of history and others went for the overhaul. Regardless of the intentions, almost all of the players had the trade sites running non-stop on all screens to catch the next dip.

Hours and hours of precious time were lost while keeping up to date with the graphs based profits (or losses) and the inconsistent nature of the the market didn't make the situation any better.

For people like me who waste a lot of time overthinking and make decisions on impulse, I wanted to try sorting this out.

🤔

The idea was to keep me updated without all the glitter and jam. I hated keeping all of the trade firms open multiple tabs and wanted to get this sorted out.

So I planned to use APIs to pull data to my console to check the prices without any other hassle.

ICYAC: Link to the template at the end of article 👇🏻

...

😲 Advent of Notion API

Then Notion launched API Integrations Beta. This immediately lit a spark in my head. Now I didn't have to leave my notion app (workspace).

👓 My Expectations

  1. Open a Notion page,
  2. Check my profits (or losses),
  3. Close the page

👉🏻 "This should take only 1 minute of my time."


Design

I want my net profit but I don't want to leave my Notion Workspace.

I had to get my net profit,

Profit Equation

where

n is number of coins I am currently 'hodling',

m is number of coins of type j that I currently have in my wallet

I just want check 'NetProfit' and peace out.


Dashboard Setup

"Notion is incredible with its DIY databases." - We can build wonders without worrying about the code that goes into maintaining it.

I quickly set up a dashboard with the crypto coin entries as a entities. The selected attributes were used to calculate the profit.

Profit Dashboard

Considering that my API Integration is setup and my updation server is running, If I had to ever invest in a new currency, I would just add an entry to this database consisting of Name, Amount Invested and Number of Coins in wallet , I should automatically see my profits taking form in the Notion Database.

Notion Integration

In order to provide edit capabilities on my crypto dashboard, I would want to provide a access token with edit scope to my updation script (here python).

To get the access token (secret key), I would want to create an internal integration. The steps to create an integration for a database can be found here

Steps to setup an Integration: [Referenced from Official Notion Doc]

  • Go to https://www.notion.com/my-integrations.
  • Click the "+ New integration" button.
  • Give your integration a name, say "My-Crypto-Updates"
  • Select the workspace where you want to install this integration.
  • Click "Submit" to create the integration.
  • Copy the "Internal Integration Token" on the next page and keep it aside

Notion Integration Gif

Share a database with your integration

 A user must share specific pages with an integration in order for those pages to be accessed using the API. 

Go back to the 'Crypto Dashboard' & click on the Share button and use the selector to find your integration by its name, then click Invite. Your integration now has permission to read, write, and edit the new database.

Ensure that this created integration is not used by any other database

🔥 Leveraging notion-api

Once you have a database setup in your notion workspace, you would want to have a system where the dashboard is constantly updated with latest crypto currency prices.

😄 Let's walk you through to get it done, using the 💪🏻 power of Notion API,

High Level Design

I am using python as it is more readable and is familiar for most. The script essentially performs 3 actions:

  1. Getting list of CryptoCoins that the user has added to the Notion database (GET~ POST)

  2. Getting prices for the CryptoCoins in List (GET)

  3. Updating the Prices to the Notion Database (PATCH)


The above functionality is implemented using python class methods.

How to use Notion API 💻


  1. Clone the GitHub Repository
  2. (After unzipping) You will find 3 files inside
  3. cd into the directory where the 3 files are present using bash shell or terminal (command prompt for windows)
  4. Install the required software dependencies by running the following command,

    
    pip3 install -r requirements.txt
    
    # use `py -m pip install -r requirements.txt` (for 
      Windows System)
    
  5. Update and save the my_variables.yml file with your notion related information,

    MY_NOTION_SECRET_TOKEN: <insert-your-notion-integration- 
    secret-token>. # (use the secret from prior step [[Ref]. 
     ()])
    
  6. Run the following command to execute python script,

    python3 read.py   
    
    # Use `py read.py` if you are on Windows!
    
  7. 🙌🏻 Watch your crypto dashboard update automatically! 🎉


Conclusion

This was another experiment of mine but it really helped me save a lot of time scrolling and clicking around Crypto Trading Firms.

If you liked this, do follow me on Twitter and let me know 😁

The Notion Template can be found here :~

Crypto Dashboard

Discussion (12)

Collapse
linkard profile image
Robin Playe 🌐

Can't get this to work for the life of me. Could use a video tutorial

Collapse
tnvmadhav profile image
TnvMadhav⚡ Author • Edited

Thank you for your feedback! I will definitely improve on the setup instructions for my future products!

But for the time being, would you mind sharing where exactly you are stuck at?

Collapse
linkard profile image
Robin Playe 🌐

I followed the instructions, but it's just not working for me. I'm able to download the zip file, launch the first python command, modify one of the file with my secret key and launch the final command, but my Notion page never updated with the API after that.

Note that I have no experience with Python, so I am following the instructions with minimal knowledge of what everything does.

Thread Thread
tnvmadhav profile image
TnvMadhav⚡ Author • Edited

Don't worry! Python is an incredible language and you would get better and better as you proactively try to find your weak spots and improve :)

I have a couple of questions:

  1. Have you added any crypto currencies to your dashboard table under the 'Name' Attribute? If you haven't I would recommend adding a test coin first

  2. Do you see any errors when you run python script?

Thread Thread
linkard profile image
Robin Playe 🌐
  1. No at first, Yes later. Got the same result both times
  2. I did it again from the beginning, here is the last block of text I get when I launch the last command "Traceback (most recent call last): File "C:\Users\linka\OneDrive\Documents\Backend\Notion\Python\Crypto Wallet\Binance\python3-notion-crypto-dashboard-bundle\read.py", line 102, in MyIntegration().UpdateIndefinitely() File "C:\Users\linka\OneDrive\Documents\Backend\Notion\Python\Crypto Wallet\Binance\python3-notion-crypto-dashboard-bundle\read.py", line 20, in init self.getDatabaseId() File "C:\Users\linka\OneDrive\Documents\Backend\Notion\Python\Crypto Wallet\Binance\python3-notion-crypto-dashboard-bundle\read.py", line 31, in getDatabaseId self.my_variables_map["DATABASE_ID"] = response.json()["results"][0]["id"] KeyError: 'results'"
Thread Thread
tnvmadhav profile image
TnvMadhav⚡ Author • Edited

Thank you for informing. I will be de listing the product for now and try to reproduce this.

I will get back to you soon.

Edit:
I am not able to reproduce this.

BTW, what is the output of print(response.json()) in the method getDatabaseId() ?

Can we take this in twitter dms?

Edit:
Issue is fixed ✅

Thread Thread
linkard profile image
Robin Playe 🌐

Sure! I'm not sure what your last question means but i followed you on twittter

Collapse
zopear profile image
Jane Doe • Edited

I got up to the last step and ran the python.3 read.py (I'm on mac) and received an index error: list index out of range

Any suggestions to get around this one?

Thank you!

Collapse
tnvmadhav profile image
TnvMadhav⚡ Author

Apologies for the delayed response.

Sure. I would love to help. Can we take this to twitter DMs if you don't mind?

Collapse
zaxkiller profile image
zaxkiller

Got the same error, any suggestion?

Thank you!!

Collapse
theshadowgit profile image
TheShadowGit

Hey Madhav, Thanks for the guide. I have imported your repository to my github. Now where do i edit and run the python file ? will it be on my desktop ? I just want to know because that will mean, I will have to always remember to run this script before looking at my tracker in notion ? is that how it is supposed to be ?

Collapse
tnvmadhav profile image
TnvMadhav⚡ Author

Hey there,

Apologies for the delayed response!

Now where do i edit and run the python file ?

You just have to paste your notion integration secret token into the my_variables.yml file and run your python script!

I just want to know because that will mean, I will have to always remember to run this script before looking at my tracker in notion ? is that how it is supposed to be ?

Yes, as long as the script is running, the crypto data will be fetched and the notion database will be updated automatically!