Giter VIP home page Giter VIP logo

johnstarich / sage Goto Github PK

View Code? Open in Web Editor NEW
63.0 3.0 8.0 5.86 MB

๐Ÿ’ธ Download from your banks and credit cards straight to your computer

License: GNU General Public License v3.0

Dockerfile 0.10% Go 70.67% Shell 0.19% Makefile 0.86% HTML 0.16% CSS 2.64% JavaScript 25.39%
privacy finance golang docker personal-finance ledger budgets double-entry-accounting direct-connect web-connect

sage's Introduction

Sage Build Status Coverage Status Sage Downloads Count

Be your own accountant, without the stress.

Examine your finances with ease. Automatically download transactions from your banks and credit cards, then run the numbers.

Get the latest release here, then let us know what you think!

Activity page demo

See your latest balances, expenses, and transactions.

Features

  • Securely & automatically download data directly from your bank or credit card company
  • View and edit transactions, balances, and budgets
  • Uses double-entry bookkeeping to keep things in check
  • Web Connect (beta) and Direct Connect support
  • Can deploy as a single binary or as a Docker container
  • Automatic version control

Budgets page demo

Manage monthly budgets to keep track of your expenses.

Install

Choose one of the following options:

DATA_DIR=$HOME/sage
mkdir "$DATA_DIR"
docker run \
    --detach \
    --name sage \
    --publish 127.0.0.1:8080:8080 \
    --volume "$DATA_DIR":/data \
    johnstarich/sage
# Visit http://localhost:8080 in your browser
  • Download and install the latest Sage server release from the releases page or this script:
curl -fsSL -H 'Accept: application/vnd.github.v3+json' https://api.github.com/repos/JohnStarich/sage/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep -i "$(uname -s)-$(uname -m)" | xargs curl -fSL -o sage
chmod +x sage
./sage -help  # Optionally move sage into your PATH
  • OR download the source and build it: go get github.com/johnstarich/sage

Usage

For available options, run sage -help

Future work

  • Over-budget notifications
  • Forecasts on current transactions to identify trends
  • Smarter categorization by training on current ledger

Data storage

Sage uses a ledger (plain text accounting) file, some simple JSON-encoded files, and an hledger rules file. You won't need to know about these files to use Sage. However, if you're a power-user, then these formats may come in handy.

The ledger will store all of your transactions in plain text so you can easily read it with any text editor. It also supports several other tools that can generate reports based on your ledger.

Warning: Some banks, like Bank of America, may charge a fee for downloading transactions. While this is uncommon, we are not responsible for these charges. Do your homework if you want to be certain these charges won't apply to you.

The rules file is a format designed by the hledger project for importing CSVs. This file will help Sage automatically categorize incoming transactions into the appropriate accounts for your ledger. After a transaction has been imported, it is assigned an account (category) from this file. To follow convention, only include rules to change the account2 field or a comment. While changing account1 is supported, it will likely cause problems with Sage since account1 is assumed to be the source institution of the transaction. Currently, the web UI only supports account2.

Awesome libraries ๐Ÿ‘

Sage relies on aclindsa/ofxgo for it's excellent Go implementation of the OFX spec.

sage's People

Contributors

aclindsa avatar johnstarich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

sage's Issues

UFCU Sync errors

UFCU Sync is encountering an error

Failed downloading transactions: [University Federal Credit Union]: Error running action *chromedp.Selector with index #1: &{sel:a[aria-label="History Export"] exp:1 by:0xd9b860 wait:0xd9b4d0 after: raw:false}: context deadline exceeded
Failed downloading transactions: [University Federal Credit Union]: Error running action *chromedp.Selector with index #1: &{sel:a[aria-label="History Export"] exp:1 by:0xd9b860 wait:0xd9b4d0 after: raw:false}: context deadline exceeded

Venmo support

Venmo supports a relatively simple JSON API for downloading transactions that include unique IDs. Ideally, they'd support OFX/QFX but this should be sufficient for unique ID imports.

Example:

โžœ ~ curl -H 'Accept: application/json' -H 'Cookie: ...' 'https://api.venmo.com/v1/transaction-history?start_date=2019-12-01&end_date=2019-12-31'
{
  "data": {
    "start_balance": 0,
    "year_to_date_fees": 0,
    "end_balance": 0,
    "statement_period_fees": 0,
    "transactions": [
      {
        "refund": null,
        "capture": null,
        "direct_deposit": null,
        "disbursement": null,
        "internal_balance_transfer": null,
        "transfer": null,
        "datetime_created": "2019-12-02T23:55:40",
        "payment": {
          "status": "settled",
          "id": "2890403437596377250",
          "date_authorized": null,
          "date_completed": "2019-12-02T23:55:40",
          ...

Link-to-search capability

Basic use: clicking a budget should take user to search page with a prepopulated search.
Likely requires improvements to search to filter out low scoring items, like not matching an explicit category.

Securely signed apps

Today, the Windows and macOS apps won't open without taking careful steps to side-step security popups saying "Signed by unknown authority" or similar. This issue is to properly and securely sign the apps for Windows and macOS.

Goal tracking

It'd be nice to set up financial goals and track progress towards those goals.

Add "Feedback" / "Help" options

For those who are frustrated or confused when using Sage, provide a mechanism to easily submit feedback and ask questions. In the early days, this may just end up being email or GitHub issues.

Spending summary graph

It's useful to know the proportions for spending categories, typically in the context of budgets.
Likely will be in the form of a pie graph for the current month's budgets.

UFCU Support

Probably will need to use a form of Web Connect since there is no OFX connection.

Add live "sync status"

Connect with the API and show a live "sync status". Provide a space to show a detailed sync error report.

Budget notifications

Add in-app notifications for going over budget.

Other notifications may be needed in the future (e.g. app updates, forecasts), so this should include a Notifications component.

This is not for external notifications -- that's reserved for future work.

Bulk transaction categorization

Transactions should be easily categorized after they've been imported. Perhaps something like

Transaction pattern: ____________
Match category (default: any): _________

New category: __________

If time, add a date range picker so it doesn't affect the whole ledger.

PayPal support

Probably will need to use a form of Web Connect since the downloads are prepared asynchronously and the payloads are ... dense.

Investigate forecasts

Questions:

  • Which types of forecasts provide valuable insight?
    • Forecast algorithm / name
    • Pros / cons
    • Typical visualizations or format of data
    • How is confidence calculated?
  • Which visualizations are best for an inexperienced user?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.