Skip to main content

A personal financial information aggregator and planning tool

Project description

nummus-financial

Unit Test Static Analysis Coverage Latest Version

A personal financial information aggregator and planning tool. Collects and categorizes transactions, manages budgets, tracks investments, calculates net worth, and predicts future performance.


Environment

List of dependencies for package to run.

Required

  • nummus python modules
    • sqlalchemy
    • gevent
    • colorama
    • rapidfuzz
    • flask
    • flask-assets
    • flask-login
    • pdfplumber
    • yfinance
    • pyspellchecker
    • tqdm
    • argcomplete
    • scipy
    • emoji
    • werkzeug
    • prometheus-flask-exporter
    • packaging
    • gunicorn

Optional

  • Encryption extension to encrypt database file. Does not encrypt SSL or importers folders
    • sqlcipher3-binary
    • Cipher
    • pycryptodome

Installation / Build / Deployment

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

Usage

Run create command to make a new portfolio. Then start a web server using flask.

> nummus create
> flask --app nummus.web run

Docker

A better way to use nummus is hosting the web server on in a docker instance.

> docker run \
  --name nummus \
  --detach \
  --publish 8000:8000 \
  --publish 8001:8001 \
  --volume nummus-data:/data \
  nummus-financial

Configuration

The following environment variables are used to configure the instance.

Env Default Description
NUMMUS_PORTFOLIO /data/portfolio.db Path to portfolio inside data volume.
NUMMUS_KEY_PATH /data/.key.secret File containing portfolio key for encryption
NUMMUS_WEB_KEY nummus-admin Web key used when creating a new portfolio
WEB_PORT 8000 Port to bind server to
WEB_PORT_METRICS 8001 Port to bind metrics server to
WEB_CONCURRENCY n(CPU) * 2 + 1 Number of gunicorn workers to spawn
WEB_N_THREADS 1 Number of gunicorn workers threads to spawn
WEB_TIMEOUT 30 Gunicorn workers silent for more than this many seconds are killed and restarted

Running Tests

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

Development

Code development of this project adheres to Google Python Guide

Linters

  • ruff for Python
  • pyright for Python type analysis
  • djlint for Jinja HTML templates
  • codespell for all files

Formatters

  • isort for Python import order
  • black for Python
  • prettier for Jinja HTML templates, CSS, and JS
  • taplo for TOML

Tools

  • formatters.sh will run every formatter
  • linters.sh will run every linter
  • make_test_portfolio.py will create a portfolio with pseudorandom data
  • run_tailwindcss.sh will run tailwindcss with proper arguments

Configuration

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

Versioning of this projects adheres to Semantic Versioning and is implemented using git tags.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nummus_financial-0.15.4.tar.gz (11.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nummus_financial-0.15.4-py3-none-any.whl (11.5 MB view details)

Uploaded Python 3

File details

Details for the file nummus_financial-0.15.4.tar.gz.

File metadata

  • Download URL: nummus_financial-0.15.4.tar.gz
  • Upload date:
  • Size: 11.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for nummus_financial-0.15.4.tar.gz
Algorithm Hash digest
SHA256 b5e7ac6a2049f39d67427f8c869f0f70cfaa314d7468ea1e62417cf08d846136
MD5 d65144dd985b1f464a765f77579093c2
BLAKE2b-256 d42e210897b8b2e8e4c6bcd4802899b9ff91d2aac855e1405a293e495104bd5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nummus_financial-0.15.4.tar.gz:

Publisher: deploy.yml on WattsUp/nummus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nummus_financial-0.15.4-py3-none-any.whl.

File metadata

File hashes

Hashes for nummus_financial-0.15.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c33754ce85bd523a887c6b4098f9aa136e9651c9d3995871ef961bb80006690c
MD5 c4513cdf0b861e891d3d03aac47f298f
BLAKE2b-256 dd85885a667d66546a8a7597503af7fb5e0caa1cd9b6cd7f5bdbdca510add354

See more details on using hashes here.

Provenance

The following attestation bundles were made for nummus_financial-0.15.4-py3-none-any.whl:

Publisher: deploy.yml on WattsUp/nummus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page