# Crypto Profits Tracker (feat. Notion API) using Python
Tags: python, productivity, cryptocurrency, notion
Published: 2021-07-04 16:06:39

## 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](https://developers.notion.com).  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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vlxdi8eyrfkdtfaw8vzb.gif)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pdwx1tnmhndt525t4kyx.png)

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](https://developers.notion.com/docs#step-1-create-an-in)]

- Go to [https://www.notion.com/my-integrations](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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v1oahl11m9nhlv2j6qkw.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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ni835auzatamze788sz9.jpg)

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](https://github.com/tnvmadhav/notion-crypto-integration)*
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,

    ```bash

    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, (don't include the <> characters)

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

    ```bash
    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](https://twitter.com/TnvMadhav) and let me know 😁

👉🏻 The Notion Template can be found here :~

[Crypto Dashboard](https://gum.co/tnvcrypto)

👉🏻  If you want to offload running and maintaining code to me, you can subscribe to this service as a monthly subscription:

[Crypto Profits Tracker App](https://crypto-profits-tracker-d5kar.ondigitalocean.app)