/finance-app

:money_with_wings: An app to manage finances

Primary LanguageJavaScript

Khaliq's Personal Finance App

A simple app to manage finances

About

  • I love mint and also mint bills, but wanted more control and ability to forecast my current and future expenses. So I built this. I've been using this pretty consistently over the past 4 or so months and it has worked out great. I open sourced it in hopes that others might find it useful as well. Check out this blog post to learn more about the motivation behind this.

Getting Started

  • The app is structured through a series of json documents. The main one being the dated file in the test data directory. For the actual app, I used a data directory which is not committed for obvious reasons (it has all my financial data). In this case the entry point file is 07_2015.json.
  • The main categories are
    • Debt
    • Cash
    • To Pay
    • Notes
  • Those sections are in an array that gets looped through when processing that file. Some data is nested in other files and some data is in in the main file. The remote property signifies there for clarity when looping through each section to determine whether or not that data needs to be fetched from a remote file or not.
  • So the first thing you would do if you were setting up this app is to map out your data in each category. Make the directories exactly the same as the test data, fill in your credit cards debt, statement balance (to pay), due dates, cash - paycheck, and fixed costs, and any notes. I've thought about automating this file creation process via a CLI so if you are interested in that, let me know!
  • After that, you should be ready to go. Any new months navigated to copies the previous months data into new files so you can forecast payments as well.
  • Any questions or issues feel free to make a Github issue!

Elasticsearch

  • Aggregations are run on the data once a month
  • Explained more here

Development

  • Any pull requests are welcomed and encouraged!

  • Start the app by running:

nodemon server.js
NODE_ENV=prod forever start --uid finances --append -c nodemon server.js
  • There is a basic auth in place so you'll need to create an auth directory and a .htpasswd file with some creds. You can generate such a file here

Next Steps

Notes

npm-css finances.css -o app.css
  • From root directory run for browersify
browserify public/assets/js/finances.js -o public/assets/js/app.js -d
npm install -g watchify
watchify public/assets/js/finances.js -o public/assets/js/app.js -v