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.4.tar.gz (665.8 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.4-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bmoney-0.4.4.tar.gz
  • Upload date:
  • Size: 665.8 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.4.tar.gz
Algorithm Hash digest
SHA256 35ac9c0af64f4b13b4b617db1fae0efd79770cff06fcf74158d17665dc370c26
MD5 f6b8d9cc0fa2a93395132ca8c1a98575
BLAKE2b-256 d437533c35ae357ecc08ff390cc7894971cb2d656a792fe4ed509ed612050109

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: bmoney-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 26.5 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4d87b526fe21b6df641c8a70e26c90a3e8eb4d8a357d8d11b139496014acca1e
MD5 b59d2ea12d1621b14204c8c006e61690
BLAKE2b-256 1efb5f591da347ce6478617445d0879e0e599962d4724216218fe0bc9ddc9a9a

See more details on using hashes here.

Provenance

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