samasri / transaction-tracker

Retrieves transactions from multiple bank accounts, categorizes them, and displays them in a readable format

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Transaction Tracker

Web app & CLI tool that tracks user's payments across different banks. It leverages Plaid to retrieve transactions from bank accounts, categorizes them, and displays them in a table.

Note that the application is currently customized to work with my TD, Amex, and Tangerine bank accounts. I am gradually working on generalizing it to work with any bank that is supported by Plaid.

web app table screenshot

Usage

This tool is exposed as a web application and a CLI interface. The easier way to use it (how I usually use it) is through the web application. I started it as a CLI tool and since then moved to the web application. But I'm still maintaining the CLI.

Usage instructions:

  • Sign up to Plaid and obtain your credentials
  • To use the web app:
    • Just run docker-compose up -d
    • Once it's loaded, go to http://localhost:3000/admin to set up your credentials
    • Set up your plaid credentials (everything else is optional)
    • Click "Connect Bank" to connect your bank accounts [Still working on implementing this button]
    • Go to http://localhost:3000/ to see your transactions
  • To use the CLI:
    • Set up the .env based on .env.sample
    • Run yarn install
    • Run yarn ts-node ./src/index.ts help for instructions. Also check out the package.json scripts for shortcuts

Note: To customize the date range for which transactions are displayed, the getCycleDates function can be modified.

Optional Configuration Files

If the following files exist, the corresponding transactions inside them are ignored:

  • ./db/[bankName].names: contains a list of names, separated by newlines. If a transaction from [bankName] has a name matching one of the names in this file, the transaction is ignored. This is useful to ignore recurring transactions that have a consistent name.

Architecture

Architecture visualizations using Structurizr are found in the docs

Overall Architecture

About

Retrieves transactions from multiple bank accounts, categorizes them, and displays them in a readable format


Languages

Language:TypeScript 96.9%Language:HTML 1.9%Language:Dockerfile 0.7%Language:Shell 0.3%Language:JavaScript 0.2%