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
-
Create a project folder and put a Rocket Money transaction export CSV file in it.
-
bmoney initfrom inside your project folder
You should see a a config.json and jsonl transaction file in your folder now.
bmoney launchto see the budget money dashboard with your data.
Screenshots
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:
- Create a python function that generates the data for your custom widget
a) Your function must return a dict object with the keys
title,valueand optionallydelta. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bmoney-0.4.1.tar.gz.
File metadata
- Download URL: bmoney-0.4.1.tar.gz
- Upload date:
- Size: 652.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54a7838f343003298af1d981ba28fe41125e808500777378f179ec5283a60c7c
|
|
| MD5 |
f20e6e6f1ce5d52a700c42ad1e779894
|
|
| BLAKE2b-256 |
a7f2c9fffcce7dfe1a9d1f4113ddbb959f39ba11486ed6c69f45e24253b056a5
|
Provenance
The following attestation bundles were made for bmoney-0.4.1.tar.gz:
Publisher:
publish-to-pypi.yml on dskarbrevik/bmoney
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bmoney-0.4.1.tar.gz -
Subject digest:
54a7838f343003298af1d981ba28fe41125e808500777378f179ec5283a60c7c - Sigstore transparency entry: 685886026
- Sigstore integration time:
-
Permalink:
dskarbrevik/bmoney@209990730056df81965fd59c417c9a06140fb630 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/dskarbrevik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@209990730056df81965fd59c417c9a06140fb630 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bmoney-0.4.1-py3-none-any.whl.
File metadata
- Download URL: bmoney-0.4.1-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2901f33b3050ee2f0167b0d3870fd26e08fb6f9ac4e7426fe770d82e5217f05e
|
|
| MD5 |
e56ef64ae34675a363f9fc1effb1bf57
|
|
| BLAKE2b-256 |
497e565ec8e4f01c3c443df3f9ce605aac48e2105ad38f6bc6d7b790e1b920e0
|
Provenance
The following attestation bundles were made for bmoney-0.4.1-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on dskarbrevik/bmoney
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bmoney-0.4.1-py3-none-any.whl -
Subject digest:
2901f33b3050ee2f0167b0d3870fd26e08fb6f9ac4e7426fe770d82e5217f05e - Sigstore transparency entry: 685886032
- Sigstore integration time:
-
Permalink:
dskarbrevik/bmoney@209990730056df81965fd59c417c9a06140fb630 -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/dskarbrevik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@209990730056df81965fd59c417c9a06140fb630 -
Trigger Event:
push
-
Statement type: