sapy usage

The purpose of this softeware is to allow a quick view of your personal budget. The idea behind this software is implement an interface for the Japanese Kakeibo method. The word "kakeibo" can be translated as Household ledger and is literally meant for household financial management. Kakeibos vary in structure, but the basic idea is the same. At the beginning of the month, the kakeibo writes down the income and necessary expenses for the beginning month and decides some kind of savings target. The user then records their own expenses on a daily basis, which are added together first at the end of the week and later at the end of the month. At the end of the month, a summary of the month's spending is written in kakeibo. In addition to expenses and income, thoughts and observations are written in kakeibo with the aim of raising awareness of one's own consumption.

The code is available on github

Important acronyms:


Install the libgirepository dev pkg in order to install requirements into the virtualenv

    $ sudo apt install libgirepository1.0-dev pkg-config libcairo2-dev libjpeg-dev libgif-dev

You can follow those steps:

    $ git clone         # get the code
    $ cd Sapy                                                                          # enter the code volder
    $ virtualenv venv                                                              # create the virtualenv
    $ source venv/bin/activate                                                # load the virtualenv
    $ pip install -r requirements                                              # install requirements into the venv
    $ python install                                                   # install sapy into the venv
    $ export  SAPY_HOME=~/.sapy-test                                  # set custom app folder 
    $ sapy --gui                                                                        # start the app

To generare the documentation you need to install the doc generator:

pip install mkdocs mkdocs-windmill

and run: mkdock build


mkdock serve


Manual Installation


    $ sudo apt install python3-matplotlib libgirepository1.0-dev
    $ sudo pacman -S python-matplotlib python-cairo


You can install sapy application using the following method


The user can run the application in two way: * using the command line * using a gtk ui

Command Line

Application Usage :

stethewwolf@blilla:~/Devel/Applications/sapy$ sapy -h
usage: sapy [-h] [--add ADD] [--graph] [--gui] [--import IMPORT] [--list LIST] [--rm RM] [--version] [--balance] [--daily] [--end-date END_DATE] [--id ID]
            [--monthly] [--lom LOM] [--start-date START_DATE] [--value VALUE] [--weekly] [--cause CAUSE] [--date DATE] [--name NAME]

App implementing the Japanese Kakeibo method

  -h, --help            show this help message and exit
  --add ADD, -a ADD     add new item, takes : mom | pro
  --graph, -g           print the graph
  --gui                 run the application in grafical mode
  --import IMPORT, -i IMPORT
                        import data from csv file
  --list LIST, -l LIST  list items, possibles values are moms | loms | profiles
  --rm RM, -r RM        remove target : mom | profile
  --version, -V         print the version
  --balance, -b         print the actual balance
  --daily, -D           set daily occurrance [default]
  --end-date END_DATE   set end date
  --id ID               specify id for operation
  --monthly, -m         set monthly occurrance
  --lom LOM, -L LOM     specify the list of money ( lom )
  --start-date START_DATE
                        set start date
  --value VALUE, -v VALUE
                        set mom value
  --weekly, -w          set weekly occurrance
  --cause CAUSE, -c CAUSE
                        set cause
  --date DATE, -d DATE  set the date for the operation
  --name NAME, -n NAME  set the name

User interface

The use interface is implemented using glade and pygtk.

It is composed by one window, splitted in two panels.


In this panel user can add/remove or modify moms.


Here you can see the graphical rapresentation.


day view

year view

month view


CSV File Format

The CSV file you are importing must have following columns

* date (,
* cause,
* value,

the delimiter for decimal values is the char '.'

the file must not include the header line at the beginning