Skip to main content

Budget Money - powerful budgeting tools extending Rocket Money transaction exports

Project description

Budget Money

Budget Money (bmoney) is a budgeting tool that builds on top of Rocket Money transaction exports.


Rocket Money allows users to export their financial transactions to a CSV file. Rocket Money (through their partnered service Plaid) provide transactions up to two years ago.

Budget Money (this tool) builds ontop of these CSVs:

  • Merge your Rocket Money CSV exports into one highly portable master file
  • Easily edit transaction data in your master file (through a locally deployed webapp)
    • Display and easily edit all your data
    • Custom Metrics and visualization dashboard to see category spending habit in more detail
  • Map Rocket Money categories to your own custom categories
  • Export shared transactions to Google Sheets to make sharing finances with roommates/partners easier

Installation

pip install bmoney

Once bmoney is installed in your environment, you can navigate to a directory where you want to store your transaction data files. Make sure you have a Rocket Money transaction export CSV file in that folder before using the bmoney cmds below.

Basic usage

  1. Create a project folder and put a Rocket Money transaction export CSV file in it.

  2. bmoney init from inside your project folder

You should see a a config.json and jsonl transaction file in your folder now.

  1. bmoney launch to see the budget money dashboard with your data.

Screenshots

bmoney dashboard bmoney data editor

CLI command quickstart

name description
bmoney init Initialize your project folder
bmoney launch Launch the bmoney browser app
bmoney db update Merge any CSVs into the master JSONL file
bmoney gsheets sync Send current data to your Google Spreadsheet

Explanation of config.json file

On bmoney init the config.json file comes pre-populated with many default values. The config file is a recent (v0.2.x) introduction and some variables may cause issues if they are edited in certain ways.

Below is an explanation of variables in config.json along with a declaration of whether I'd recommend manipulating this variable currently. Obviously all variables should be editable but this is just a toy personal project after all :)

name type description notes
MASTER_DF_FILENAME str Filename for master jsonl transactions
SHARED_EXPENSES list(str) CUSTOM_CAT vals that will have SHARED==True in master df
CAT_MAP dict(str) Mapping Rocket Money categories to your own custom categories There is an interplay between SHARED_EXPENSES and CAT_MAP.
DATA_VIEW_COLS list(str) The name of master df columns to show in the app's data editor tab
GSHEETS_CONFIG dict(str) Vars important for using the Google Sheets integration
BUDGET_MONEY_USER str Username, this is applied to create the Person col in the master df This will be asked on bmoney init if not expressly provided to that command
CUSTOM_WIDGETS list(dict) A list of widget config dicts to display in th dashboard. See example usage for more info.

More about the GSHEETS_CONFIG dict:

name type description notes
SPREADSHEET_ID str The ID of your Google Sheet file
SPREADSHEET_TABS dict key:val pairs for different bmoney->gsheets capabilities Leave a Tab val as "" if you don't want to use that capability.
START_DATE str Optional date (format="%m/%d/%Y"; e.g. "01/31/2024") to filter transactions that are sent to gsheets. This can be useful if your transactions go back further in time than your use of Google Sheets as a budgeting tool.
GCP_SERVICE_ACCOUNT_PATH str The path to a json file containing GCP provided service account credentials. See here for info on how to setup a GCP Service Account with Google Sheets access.

Creating a custom dashboard widget

Note: Currently bmoney only supports creating custom metric type dashboard widgets

There are two steps to create a custom dashboard widget:

  1. Create a python function that generates the data for your custom widget a) Your function must return a dict object with the keys title,value and optionally delta.
  2. Update your config.json with a new entry to the CUSTOM_WIDGETS list

For example we could create a script my_new_metric.py in our project folder with the following function:

from bmoney.utils.data import load_master_transaction_df
import pandas as pd

def get_category_cost_data(category):
    df = load_master_transaction_df()
    total_amount = round(df[df["Category"]==category]["Amount"].sum(),2)
    
    data = {"title": f"All time {category} cost",
            "value": total_amount}
    return data

And in your config.json file:

"CUSTOM_WIDGETS":[{
        "name": "Total Pet Cost",
        "type": "metric",
        "script_path": "./my_new_metric.py",
        "function_name":"get_category_cost_data",
        "args": ["Pets"],
        "kwargs": {}
    }]

Now when you run bmoney launch you'll see your new metric in your Mission Control (front page).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bmoney-0.4.2.tar.gz (654.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bmoney-0.4.2-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file bmoney-0.4.2.tar.gz.

File metadata

  • Download URL: bmoney-0.4.2.tar.gz
  • Upload date:
  • Size: 654.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bmoney-0.4.2.tar.gz
Algorithm Hash digest
SHA256 40bb5e1a7082062e2652f6810affb8a24176394be9ba47afa6941e5776e0490b
MD5 1b8a5aaf43efa50875354e6f69df04bd
BLAKE2b-256 97587f4516933c1dd2cb8d60bbf345e56faddbb6abe96447567f70d89d3038a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmoney-0.4.2.tar.gz:

Publisher: publish-to-pypi.yml on dskarbrevik/bmoney

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bmoney-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: bmoney-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bmoney-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b1d0d44c13d458ae17d5c623f54079aef384d7f5cf31eae368ce925b5489f5f0
MD5 0091939abd6fa411047d730dfcfc6337
BLAKE2b-256 df20c989f2955b4f28a8fe7fcd41b421bf2dcf2c9472b678f3720e72906546bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmoney-0.4.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on dskarbrevik/bmoney

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page