Skip to main content

Personal finances on your terminal

Project description

ngtonic

Personal finances on your terminal

CI PyPI - License Linux PyPI - Python Version

๐ŸŒŸ Motivation and Description

Ngtonic is a small tool created to manage personal finances directly from the terminal, avoiding the need to share sensitive financial data with third-party apps. It's tailored for my specific needs. Currently, Ngtonic only supports ING bank, leveraging its automatic categorization of movements.

I also created it as an example of building a project "the right way" on GitHub.

๐Ÿค” Why Use Ngtonic?

Consider using Ngtonic if you:

  • Prefer not to use apps like Fintonic
  • Primarily use ING for personal expenses
  • Want a simple, terminal-based tool to check your finances
  • Value privacy and keeping your financial data local

For those seeking more advanced features or a GUI, Firefly III might be a better option.

๐Ÿ‘จโ€๐Ÿ’ป Getting started

  1. Install using pipx (recommended) or pip:
pipx install ngtonic
  1. Download your ING account movements as an Excel file.

  2. Import the movements:

ngtonic import ing movements.xls

Your data is now stored locally in .ngtonic/movements.json. You can import multiple files; Ngtonic will automatically deduplicate the data.

๐Ÿ“Š Usage

Ngtonic offers several commands:

โ•ญโ”€ Commands โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ import         Import movements files to the internal storage                   โ”‚
โ”‚ list           Show a table listing the movements with optional filtering       โ”‚
โ”‚ balance-plot   Plot the evolution of the balance over time                      โ”‚
โ”‚ month-plot     Plot the movements grouped per month                             โ”‚
โ”‚ find-bills     Use a simple heuristic to find regular bills, like subscriptions โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
# Use category filtering to list home expenses
ngtonic list -c hogar

# List leisure expenses by month
ngtonic list -c ocio -m

# Check Steam purchases by month
ngtonic list -d steam -m

# Use the integrated heuristic to find regular bills
ngtonic find-bills

The plot commands enable you to visualize movements grouped by month or track the balance over time. You can apply the same filters available in the list command to customize these plots. Below are some example graphs (y axis has been removed for privacy).

# Income per mont (in my case, the payroll)
ngtonic month-plot -i
# Expenses on ocio category per month
ngtonic month-plot -c ocio
# The month-plot without any options is a good way to know your saving capacity
ngtonic month-plot
# And the balance plot will give you a more detailed way to check your cash flow
ngtonic balance-plot

Instructions to export from supported sources

ING

Go to the movements view of your account and download the excel format

Revolut

On the web version, extract and choose excel format. Don't be surprised when you find that the file is, in fact, a CSV.

Paypal

Go to activity, download, Completed payments. Choose CSV as the output format. PayPal movements are not directly imported, they are used to enrich the information.

โš™๏ธ Configuration

Excluding Movements

Sometimes you may want to exclude certain transactions from your analysis, such as:

  • Transfers between your own accounts or to other banks
  • Large one-time transactions that skew your graphs
  • Any movements you don't want to include in your financial overview

You can exclude these movements using the configuration file located at .ngtonic/config.yaml. This file contains a list of filters; any movement matching these filters will be excluded from all commands.

Example configuration:

excluded_movements:
  - category: "Inversiรณn"
  - subcategory: "Ingresos de otras entidades"
  - description: "Traspaso emitido Cuenta Nรณmina"
  - description: "steam"
    value: -675 # Excludes only this specific Steam transaction

๐Ÿ› ๏ธ Development

pdm install
$(pdm venv activate)
pre-commit install

This command will create a virtual environment, install all dependencies (including Ngtonic itself), and set up helpful commit hooks. Any changes made to the code will take effect immediately without requiring reinstallation.

You can also run manually the linter with pdm lint or the formatter with pdm format.

๐Ÿ“ฆ Releases

The python packages are uploaded from the CI when creating a release, but you can create an whl locally with pdm build.

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

ngtonic-1.0.2.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

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

ngtonic-1.0.2-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file ngtonic-1.0.2.tar.gz.

File metadata

  • Download URL: ngtonic-1.0.2.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ngtonic-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3bdc9ac57fca22b9e35f7fb2f1e2a4d4336b2e654f55f689fe946d1f0425316c
MD5 2f508f2e9316c4bf2105bd92e22f8ca0
BLAKE2b-256 63975498497e4ef23201fad9535b17ad869c838f445e4c2679e9ddfaa7502833

See more details on using hashes here.

Provenance

The following attestation bundles were made for ngtonic-1.0.2.tar.gz:

Publisher: release.yml on dpaneda/ngtonic

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

File details

Details for the file ngtonic-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: ngtonic-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ngtonic-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a4c092c7f42ecb9ee77d09f4f07de064f045f3474c72743715334d428b9b5f4a
MD5 3dba303d8bc7b1134c0336d2e9f06e62
BLAKE2b-256 840dd01363185dbac37d5d35e2f5bc547d0491119a7893d9bbacda96cfd260fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for ngtonic-1.0.2-py3-none-any.whl:

Publisher: release.yml on dpaneda/ngtonic

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