Development¶
Setting up a development environment¶
If you want to hack on Fava or run the latest development version, make sure you have recent enough versions of the following installed (ideally with your system package manager):
Python 3 - with pip (at least v21.3), to install the Fava Python package,
Node.js - with npm, to install the Javascript dependencies,
tox - to run the Python tests,
pre-commit - to lint changes with a git pre-commit hook.
Then this will get you up and running:
git clone https://github.com/beancount/fava.git
cd fava
# setup a virtual environment (at .venv) and install Fava into it
# alternatively, run `make dev` to do these next two steps with `uv` instead
python -m venv .venv
pip install --editable .
# add a git pre-commit hook to run linters
pre-commit install
You can start Fava in the virtual environment as usual by running fava
.
Running in debug mode with fava --debug
is useful for development.
You can run the tests with make test
and the linters by running make
lint
. There are further make targets defined, see the Makefile for details.
After any changes to the Javascript code, you will need to re-build the
frontend, which you can do by running make
. If you are working on the
frontend code, running npm run dev
in the frontend
folder will watch
for file changes and rebuild the Javascript bundle continuously.
If you need a newer version of Beancount than the latest released one, you can install from source like so (more details here):
pip install git+https://github.com/beancount/beancount@v2
Contributions are very welcome, just open a PR on GitHub.
Fava is released under the MIT License.