Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kakeibo

A desktop budgeting app inspired by the Japanese kakeibo (家計簿), a method of tracking household spending by category and reflecting on it each month, here implemented with an envelope-budgeting model. You give every yen a job by dividing your income across labelled envelopes, import your real bank transactions, and watch each envelope fill up or drain over the month.

Written in C++20 with Qt 6. The interface is bilingual (French / 日本語).

The envelopes view

The figures in this screenshot are fictional sample data created for illustration. They do not represent any real account or transaction.

Background

This is a personal tool, built for my own use and shared publicly as a portfolio piece rather than a product. I made it to manage one household's budget across two currencies, euros and yen, using the kakeibo approach.

Because it only ever needed to fit one person, the scope is intentionally narrow:

  • Single-user desktop app. All data is stored locally, with no accounts and no backend.
  • Built and tested on macOS and Fedora.
  • The interface is French and Japanese only.
  • The statement importers handle just the banks I use (Rakuten Bank, Rakuten Card, Mitsubishi UFJ).

You're welcome to read, fork, or adapt it, but it isn't meant to work out-of-the-box for a different setup.

Features

  • Envelope budgeting. Create envelopes with a monthly goal and a ceiling, mark some as savings, and track how full each one is at a glance.
  • Bank statement import. Paste a raw statement and it is parsed automatically. Supported formats: Rakuten Bank, Rakuten Card (credit), and Mitsubishi UFJ. Full-width Japanese digits are normalised to ASCII.
  • Automatic categorisation. Expenses are matched to envelopes by remembered description types. Unknown ones prompt you once and are then remembered.
  • Dispatch page. Distribute your income across envelopes, evenly or to each goal, with per-envelope locking and full undo/redo before you apply.
  • History and statistics. Filter expenses by envelope and date range, and see per-month and per-year averages.
  • EUR / JPY conversion. Every amount is shown in yen and euros using live European Central Bank reference rates (no API key required).
  • Backups and cloud snapshot. Daily local backups (30 kept) and an optional image snapshot of selected envelopes written to a sync folder.

Installation

Both platforms build from source. Requires CMake 3.16 or newer, a C++20 compiler and Qt 6 (Core, Gui, Widgets, Network, Concurrent).

macOS

brew install cmake qt
./scripts/bundle.sh
mv Kakeibo.app /Applications/

bundle.sh produces Kakeibo.app and runs macdeployqt, which needs to be on PATH. It prints ERROR: lines about QtVirtualKeyboard and codesign along the way; those are noise, the build succeeded if the last line is Bundling complete. Re-run it after a git pull to update, and drag the app to the trash to uninstall.

Fedora

sudo dnf install cmake gcc-c++ qt6-qtbase-devel google-noto-sans-cjk-fonts
./scripts/bundle-linux.sh

bundle-linux.sh installs into ~/.local for the current user: the binary as ~/.local/bin/kakeibo, a launcher in ~/.local/share/applications and an icon in the hicolor theme, so the app shows up in the application menu under Office (log out and back in if the menu cache is stale). Re-run it to update, --uninstall to remove it, and PREFIX=/usr/local sudo -E for a system-wide install.

The CJK font package is not optional: without it the 日本語 half of every label renders as empty boxes. Other distributions are untested, but the script only needs the equivalent packages — on Debian or Ubuntu, sudo apt install cmake g++ qt6-base-dev fonts-noto-cjk.

First launch

Kakeibo asks for a folder to keep its daily backups in before it shows the window, and for a sync folder for the cloud snapshot the first time state changes; both are remembered, and the sync folder can be declined. The EUR/JPY rate is fetched at startup, so with no connection the euro amounts show - until the next launch.

Data location

State is stored as JSON under $XDG_DATA_HOME/kakeibo (or ~/.local/share/kakeibo, the same path on macOS): enveloppes.json, specialEnveloppes.json, and the backup and cloud path config. Installing, updating and uninstalling all leave that folder alone.

backups.json and cloudPath.json hold absolute paths. When a stored path does not exist, Kakeibo asks for a folder once and remembers the new one.

Development

Building without installing, for hacking on the code.

cmake -S . -B build
cmake --build build
./build/Kakeibo

Or use the helper:

./scripts/run.sh

The bank-statement parser has unit tests (pure logic, no Qt required):

cmake --build build
ctest --test-dir build --output-on-failure

Project layout

include/core   data model, parsing, persistence, backups, cloud sync
include/ui     the Qt views (envelopes, history, stats, dispatch, import, etc.)
include/uiElements  small reusable widgets
src/           implementations mirroring include/
external/json  nlohmann/json (single header)
assets/        icons, compiled into the binary via assets.qrc
scripts/       run, bundle and formatting helpers

License

MIT. See LICENSE.

About

A desktop budgeting app built on the Japanese kakeibo method, with a bilingual French and Japanese UI and real bank-statement import.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages