ejach / notion-budgeter

Keeps a given Notion database up to date with expenses using Plaid or Teller.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

notion-budgeter

PyPI PyPI PyPI PyPI

Keeps a given Notion database up to date with transactions using Plaid.

docker-compose.yml

version: '3.7'
services:
  notion_budgeter:
    image: ghcr.io/ejach/notion-budgeter
    container_name: notion_budgeter
    environment:
      - access_token=<access_token>
      - client_id=<client_id>
      - secret=<secret>
      - environment=<development OR sandbox> # optional, defaults to development
      - data_dir=<data_dir>
      - notion_secret=<notion_secret>
      - notion_db=<notion_db>
      - custom_property=<custom_property> # optional
      - excluded=<excluded> # optional
      - icon=<icon> # optional, default 🧾
    volumes:
      - /path/to/data:/path/to/data
    restart: unless-stopped
Variable Description Required
access_token Token associated with financial account (see below) βœ…
client_id ID associated with a Plaid account βœ…
secret Key associated with environment βœ…
data_dir Path to where the database file should be stored βœ…
environment What Plaid environment should the program run in (development or sandbox) ❌
notion_secret The secret token associated with your Notion integration βœ…
notion_db What Notion database name to write to (case-sensitive) βœ…
custom_property Custom property in the format that Notion expects (see below) ❌
excluded Expense name(s) that will not be written to Notion (Example: Walmart or Walmart,Amazon) ❌
icon What icon should the expense have in Notion (Example: πŸ’³) ❌

Installation

Pre-requisites:

NOTE: If you get a "Connectivity not supported" error when using the Quickstart repository to get an access_token, follow this guide.


Expected properties

'Expense' -> type: text
'Amount' -> type: number
'Date' -> type: date

You must format your Notion database to have these properties.

How to format Custom Properties

The program expects a Python-like dictionary:

{'Category': {'type': 'multi_select', 'multi_select': [{'name': '\u2754Uncategorized'}]}}

Or a list of Python-like dictionaries:

{'Category': {'type': 'multi_select', 'multi_select': [{'name': '\u2754Uncategorized'}]}, 
'Comment': {'type': 'rich_text', 'rich_text': [{'type': 'text', 'text': { 'content': 'Hello World' }}]}}

When adding these to your environment, they need to be encapsulated in quotes ""

More information on this format can be found here.

NOTE: Use a Python code beautifier like Code Beautify if you get stuck.

About

Keeps a given Notion database up to date with expenses using Plaid or Teller.


Languages

Language:Python 90.3%Language:Dockerfile 9.7%