{"id":16414057,"url":"https://github.com/khaliqgant/finance-app","last_synced_at":"2025-03-23T06:31:24.850Z","repository":{"id":36763107,"uuid":"41069788","full_name":"khaliqgant/finance-app","owner":"khaliqgant","description":":money_with_wings: An app to manage finances","archived":false,"fork":false,"pushed_at":"2023-07-22T16:30:13.000Z","size":2530,"stargazers_count":6,"open_issues_count":12,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T22:51:30.969Z","etag":null,"topics":["backbone","finance","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khaliqgant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-08-20T02:02:11.000Z","updated_at":"2023-10-16T16:58:43.000Z","dependencies_parsed_at":"2024-10-28T15:52:58.414Z","dependency_job_id":null,"html_url":"https://github.com/khaliqgant/finance-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaliqgant%2Ffinance-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaliqgant%2Ffinance-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaliqgant%2Ffinance-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaliqgant%2Ffinance-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khaliqgant","download_url":"https://codeload.github.com/khaliqgant/finance-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244277179,"owners_count":20427312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backbone","finance","nodejs"],"created_at":"2024-10-11T06:53:09.419Z","updated_at":"2025-03-23T06:31:23.609Z","avatar_url":"https://github.com/khaliqgant.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Khaliq's Personal Finance App \n===\n\nA simple app to manage finances\n\n# About\n* I love mint and also mint bills, but wanted more control and ability to forecast\nmy current and future expenses. So I built this. I've been using this pretty consistently\nover the past 4 or so months and it has worked out great. I open sourced it in hopes\nthat others might find it useful as well. Check out this\n[blog post](https://khaliqgant.com/blog/my-personal-finance-app/)\nto learn more about the motivation behind this.\n\n\n## Getting Started\n* The app is structured through a series of json documents. The main one being\nthe dated file in the test data directory. For the actual app, I used a data directory\nwhich is not committed for obvious reasons (it has all my financial data). In this\ncase the entry point file is [07_2015.json](https://github.com/khaliqgant/finance-app/blob/master/test%20data/07_2015.json).\n* The main categories are\n    - Debt\n    - Cash\n    - To Pay\n    - Notes\n* Those sections are in an [array](https://github.com/khaliqgant/finance-app/blob/master/public/assets/js/finances.js#L45)\nthat gets looped through when processing that file. Some data is nested in other files\nand some data is in in the main file. The remote property signifies there for [clarity](https://github.com/khaliqgant/finance-app/blob/master/public/assets/js/finances.js#L139)\nwhen looping through each section to determine whether or not that data needs to be\nfetched from a remote file or not.\n* So the first thing you would do if you were setting up this app is to map out your\ndata in each category. Make the directories exactly the same as the test data,\nfill in your credit cards debt, statement balance (to pay), due dates, cash - paycheck,\nand fixed costs, and any notes. I've thought about automating this file creation\nprocess via a CLI so if you are interested in that, let me know!\n* After that, you should be ready to go. Any new months navigated to copies the previous\nmonths data into new files so you can forecast payments as well.\n* Any questions or issues feel free to make a Github issue!\n\n# Elasticsearch\n* Aggregations are run on the data once a month\n* Explained more [here](https://github.com/khaliqgant/finance-app/tree/master/elasticsearch)\n\n\n# Development\n* Any pull requests are welcomed and encouraged!\n\n* Start the app by running:\n```\nnodemon server.js\n```\n* App can be accessed from http://localhost:3000/\n* In production I use [forever](https://github.com/foreverjs/forever) to launch the app and run in the background\n```\nNODE_ENV=prod forever start --uid finances --append -c nodemon server.js\n```\n\n* There is a basic auth in [place](https://github.com/khaliqgant/finance-app/blob/master/server.js#L11)\nso you'll need to create an auth directory and a .htpasswd file with some creds.\nYou can generate such a file [here](http://www.htaccesstools.com/htpasswd-generator/)\n\n## Next Steps\n* Hook in mint api or scrape to get this info automatically?\n* http://browserify.org/\n* Pull in accout data programmatically? https://developer.intuit.com/docs/0020_customeraccountdata/0005_service_features\n    * https://github.com/figo-connect/node-figo\n    * https://github.com/plaid/plaid-node\n* Use graphs to show changes over time\n* Need task runner commands to automate the browersify and npm-css process\n\n## Notes\n* Icons used are http://fortawesome.github.io/Font-Awesome/icons/\n* Local bashrc file is included as a convenience to run the below commands\n* From css directory to compile css run:\n```\nnpm-css finances.css -o app.css\n```\n* From root directory run for browersify\n```\nbrowserify public/assets/js/finances.js -o public/assets/js/app.js -d\n```\n* In order to not have to compile every time using https://github.com/substack/watchify\n```\nnpm install -g watchify\nwatchify public/assets/js/finances.js -o public/assets/js/app.js -v\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaliqgant%2Ffinance-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhaliqgant%2Ffinance-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaliqgant%2Ffinance-app/lists"}