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.5.tar.gz (666.0 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.5-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bmoney-0.4.5.tar.gz
  • Upload date:
  • Size: 666.0 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.5.tar.gz
Algorithm Hash digest
SHA256 b39713ced679ff2ad65e51b36953d95ad9b67605f7923e60174edbe052e61fab
MD5 8f3e87d85dc954e2a2f6bf5dda4eca3c
BLAKE2b-256 388a28a029a3172b3069efad46725ebc6fb21e7f0097132689f9cdd493719a77

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmoney-0.4.5.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.5-py3-none-any.whl.

File metadata

  • Download URL: bmoney-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 26.7 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e4611d0030329390bfa8c776185c473d4e0495d5f07f71b1ff0eaf112ed07ab8
MD5 eee54c10fd45f9d665d00483d19e6d2e
BLAKE2b-256 7b6b7c80cc4b18633ff5ae63c54d9e02c1bbc632e4753baac6f41543369f3962

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmoney-0.4.5-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