Do you have monthly/semi-monthly/weekly/every 2 months/other oddly scheduled bills? Yearly? Every 2 years? Need a way to track them all in one place?
That's what this application is for. Finance Planner allows you to enter everything into a list and provide an estimate for what your balances will look like every day, between any date ranges that you specify.
This application can be installed via Flatpak.
# if you do not have flathub added as a remote, please add it first, so that
# the necessary flatpak runtimes can be acquired:
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# add my custom flatpak repository next:
flatpak --user remote-add --if-not-exists com.charlesmknox.gtk-finance-planner https://gtk-finance-planner.flatpaks.charlesmknox.com/app.flatpakrepo
# install the flatpak:
flatpak --user install com.charlesmknox.gtk-finance-planner com.charlesmknox.gtk-finance-planner
This application is compiled for Linux only, currently, and requires Go if you'd like to build it:
git clone https://github.com/charles-m-knox/gtk-finance-planner.git
cd gtk-finance-planner
go get -v # this will take a little while
go build -v
./gtk-finance-planner
Here's a fairly comprehensive guide on how to use this application:
- Click
+
to add a new bill, and populate the details accordingly:- The
Amount
column allows you to add a cost to a bill. All values are assumed negative, but if you put a+
at the beginning, it can be registered as income, such as a paycheck. - The
Active
column allows you to temporarily enable/disable a bill if you'd like to predict how a subscription will change. - The
Frequency
column can be one of any three values (case-insensitive input):Monthly/Yearly/Weekly
. - The
Interval
column specifies how often the bill will occur. For example, if you selectedMonthly
for theFrequency
, and you want it to occur every 2 months, then set theInterval
value to2
. - For the Monday-Sunday checkbox columns, you can choose whether or not a bill can occur on a specified day of the week. For example, if you buy Groceries weekly on Saturdays, then just check the Saturday checkbox and set your
Frequency
toWeekly
, and yourInterval
to1
. - For the
Starts
column, specify in the patternYYYY-MM-DD
for best results. This applies to theEnds
column, too.- If left at the default values (
0-0-0
) then the start and end are assumed to be the window for your estimation (these are the input boxes in the bottom right of the window).
- If left at the default values (
- For the
Notes
column, you can put anything you want here. No special formatting will be applied.
- The
- Repeat step 1, optionally using the
Clone
button to speed things up where desired. - (optional) Enter a starting cash balance in the bottom left.
- (optional) In the bottom center and bottom left input fields, enter a start date for the planner to begin, and an end date for when they will stop.
- If you leave these two blank, the planner will start from today and end 1 year from today. This is just enough time to be able to get a yearly summary of your expenses, which you will do easily in a moment.
- Go to the Results tab. (you can press
alt+1
andalt+2
to switch between tabs quickly)- You will see the planner's results!
- If viewing over a single year, press
ctrl+I
on your keyboard to be presented with a dialog that rolls up your yearly income and expenses. This is very useful!
- Save your bills to a configuration file! To do this, you can do any of the following, like you'd traditionally expect:
- Use the dropdown arrow in the top left of the window to see all options, such as save/save as/open/save results/new window/etc.
Ctrl+Shift+S
- Save as. You'll need to do this if it's your first time saving to a new file.Ctrl+S
- Save.Ctrl+O
- Open.Ctrl+Shift+O
- Open in a new window.Ctrl+N
orCtrl+Shift+N
- Create a new config in a new window.Ctrl+W
- Close the current window.Ctrl+Q
- Quit the application.
There are a couple minor quirks:
- If you receive paychecks on e.g. the last day of the month, there is currently no direct method of doing this. I typically go with setting the
Starts
column to something like2022-01-28
, since every month of the year ends on or after the 28th day, guaranteed. - Sorting is currently not supported in a pleasant manner. Sorry about this - I want this feature too, but I struggled working with the TreeView's documentation.
- Some GTK theming issues, such as the icon when in the alt+tab interface or the application's name, have not been corrected. I'm not really sure how to do this with gotk, it's not documented in the example code from what I could see. Would like to fix this some time in the future.
- No way to sort bills, aside from editing the JSON config file itself.
A GTK3 desktop application written in Go, using gotk.
This application is unpolished (but the underlying library providing the finance logic is unit tested and should work well). I do not view it as a good representation of "ideal" code. I have not refactored or enhanced the code. I initially wrote this application in 1 weekend. There are going to be bugs. It still works pretty well though.
Run the following commands to build and publish a flatpak, which currently is configured to use GitHub pages as the flatpak repo:
# WARNING: Publishing is a dangerous operation if you have lots of in-progress
# changes.
#
# Commit and/or stash your changes to git first!! the entire repo goes through
# some chaos and creates an orphan branch
# first, build locally and install into a local flatpak - this installs
# and may override your existing installation of this flatpak application, if
# you have one:
make build-linux-amd64 flatpak-build
# publishing will do quite a bit of git operations and will push a fresh
# orphan branch to the github pages branch, with brand new code and an empty
# commit history
make flatpak-publish
The app's icon is modified from Font Awesome, license here: https://fontawesome.com/license