A personal financial information aggregator and planning tool. Collects and categorizes transactions, manages budgets, tracks investments, calculates net worth, and predicts future performance.
List of dependencies for package to run.
- nummus python modules
- sqlalchemy
- AutoDict
- gevent
- colorama
- rapidfuzz
- cryptography
- flask-assets
- pytailwindcss
- jsmin
- flask
- typing-extensions
- pdfplumber
- yfinance
- tqdm
- argcomplete
- Encryption extension to encrypt database file. Does not encrypt SSL or importers folders
- sqlcipher3-binary
- Cipher
- pycryptodome
Install module
> python -m pip install .
> # For autocomplete, activate completion hook
> activate-global-python-argcomplete
Install module with encryption
> python -m pip install .[encrypt]
For development, install as a link to repository such that code changes are used. It is recommended to install pre-commit hooks
> python -m pip install -e .[dev]
> pre-commit install
Run web
command to launch a website to interact with the module.
> nummus web
Does not test front-end at all and minimally tests web controllers. This is out of scope for the foreseeable future.
Unit tests
> python -m tests
Coverage report
> python -m coverage run && python -m coverage report
Code development of this project adheres to Google Python Guide
Linters
> ruff .
> djlint .
> codespell .
Formatters
> isort .
> black .
> djlint . --reformat
> clang-format $EACH_JS_FILE
formatters.sh
will run every formatterlinters.sh
will run every lintermake_test_portfolio.py
will create a portfolio with pseudorandom dataprofile_web_call.py
will send a request to an endpoint with vizviewerrun_tailwindcss.py
will run tailwindcss with proper arguments, add-w
to watch and rerun on save
Most configuration is made per portfolio via the web interface
There is a global config file for common user options, found at ~/.nummus/.config.ini
. Defaults are:
[nummus]
secure-icon = ⚿ # Icon to print on secure CLI prompts such as unlocking password
Versioning of this projects adheres to Semantic Versioning and is implemented using git tags.