
GREED
Table of Contents
Overview
Greed is a financial application written almost entirely in Golang, used to view/track data easily across financial institutions/accounts. It utilizes the third-party API Plaid to connect your account with your financial institutions, and obtain your account and transaction history. This data can then be viewed in a user friendly format, which can be used to track past expenditures and plan future ones.
Since this app utilizes paid Plaid functions, users are restricted in a 'demo' mode, in the number of calls they can make to certain server endpoints, specifically those that talk to Plaid.
Server Features
- RESTful API
- Endpoints
- Postgres database
- No storing of sensitive personal or financial information, with the exception of Plaid Access Tokens, which are encrypted at rest
- JWT authentication
- Integration with financial data aggregator Plaid
- Plaid webhooks, allowing notification of users of updates available for their items
- Account-email verification utilizing SendGrid
CLI Features
- Cobra-based CLI tool
- CLI Commands
- Client SQLite database
- Allows for registering, logging in/out, and deleting users
- Basic reporting of account information for financial institutions
- 24 months of account financial history
- In-depth transaction history reporting
- Utilizing paginated tables in terminal
- Extensive sorting through amount, date, merchant, etc.
- Allows summary reporting as well
- ex. All transactions summed, showing count and total amount for each merchant, for each month
- ex. All transactions for merchant 'A' for month 'X' summed, showing count, total amount, dates
- ex. All transactions for merchant 'A' summed over full 24-month history, showing count, total amount
- Income/Expense viewing
- View Income vs. Expenses per account
- Viewable in tables and graphs
- Export data into a CSV file
System Requirements
- No dependencies for binary installation
- Docker (for Docker installation)
- Go 1.24+ (for source installation)
Installation Options
-
Download Binary (Recommended)
- Download from Releases based on your operating system
- No installation required - just run!
-
Docker
- Have Docker installed
- Pull the image:
docker pull jmsguy/greed-cli
-
Add an alias for easy input:
alias greed='docker run -it -v ~/.greed:/root/.config/greed jmsguy/greed-cli'
function greed { docker run -it -v "$env:USERPROFILE\.greed:/root/.config/greed" jmsguy/greed-cli $args }
-
To make the alias permanent, add it to your shell profile:
echo "alias greed='docker run -it -v ~/.greed:/root/.config/greed jmsguy/greed-cli'" >> ~/.bashrc
source ~/.bashrc
Add-Content $PROFILE "function greed { docker run -it -v `"`$env:USERPROFILE\.greed:/root/.config/greed`" jmsguy/greed-cli `$args }"
. $PROFILE
-
Run commands!
greed register ExampleUser
greed login ExampleUser
-
Install directly
go install github.com/jms-guy/greed@latest
greed --help
-
Clone repo
git clone https://github.com/jms-guy/greed
cd greed
go build
./greed --help
Usage
- List of CLI commands found here
- Help can be found with the command:
greed --help
To-Do List
- CLI tests + integration tests
- Recurring transaction detection
- Custom transaction tags and filtering
- Tag certain merchants/transactions with custom labels (fixed expense, variable expense, tax-deductible, vacation fund, etc.)
- Web client
Contributing & Issues
To contribute, clone the repo as described above in Installation Options. Please fork the repository and open a pull request to the main branch. If you have an issue, please report it here.