/fpapp

Financial planning & simulation application

Primary LanguageCSS

financial planning app

A financial planning & simulation application.


To do:

  • Convert backend from JS to Rust
  • Convert UI from Electron to Tauri
  • Convert web front end from React to Svelte
  • Cleanup / improve look & style of layout
  • Convert charts to D3
  • Generate overall visualizations / charts for dashboard
  • Add use tips to dashboard page if there is no data loaded

screenshot_loan

Features

  • Simulate income and expenses through retirement
  • Track historic account balances
  • Support multiple account types
    • Income
    • Retirement (IRA, Roth IRA, 401K)
    • Social Security
    • College Savings (529)
    • Expenses (such as grocery, car, utilities, insurance, entertainment, rent, etc.)
    • Loans (student, car, etc.)
    • Mortgage
    • Savings
    • Health Savings Account (HSA)
  • Make pretty graphs
  • Financial data saved locally as human readable json file

Computation Flow

  • Loop through accounts to determine what order they should be processed in
  • initialize tables to the correct sizes
  • Main loop to loop through each year
    • Initialize this year
    • Loop through accounts to make contributions and withdrawals
      • Initialize the value of the account for this year
      • Calculate earnings for savings, college, retirement, hsa, and income accounts
      • Add earnings to the account table for the year
      • Calculate interest for loan and mortgage
      • Add interest to the account table for the year
      • Calculate contribution amount if account has a yearlyContribution defined
        • Calculate contribution amount based on contribution type (fixed_with_inflation, fixed, percent_of_income)
        • Calculate the employer contribution
      • Add contribution and employerMatch to the account table for the year
      • Remove contribution from taxable income for the year based on taxStatus
      • Calculate payment if paymentType is defined
        • Calculate payment amount
      • Add payment to the account table for the year
      • Calculate withdrawal if withdrawalType is defined
        • Calculate withdrawal amount for col_frac_of_savings, fixed, fixed_with_inflation, and end_at_zero
        • Limit withdrawal amount to the current value of the account (do not allow an account to become overdrawn)
      • Calculate expense amount
        • Calculate expense amount for fixed and fixed_with_inflation
      • Add earnings to incomeTotalTaxableTable and incomeTotalTable for the year
      • Remove withdrawal from the account table for the year
      • Add withdrawal to income table for the year (withdrawal came from another account and it added to the income tables)
      • Add expense to the account table for the year
      • Remove healthcare expenses from linked HSA account
      • Add entry to expense total table
      • Add entry to savings total
    • Add Income to net account (subtract out paying for income tax)
  • Return Results

Development Setup

Clone the repo via git

git clone https://github.com/aero530/fpapp.git fpapp

Update TypeScript Bindings

The accounts rust module uses ts-rs to automatically create TS bindings for use in the UI. Currently these need to manually generated if the accounts module changes.

> cd src-tauri/src/accounts; cargo test; cd ../../../

Dev

Start app in dev mode:

> npm run tauri dev

Packaging

Create a package for macOS, Windows, or Linux using one of the following commands:

> npm run tauri build

Tests

> cargo test

Revision History

v0.0.1 - 8.3.12

  • Initial development in Octave

v0.0.2 - 8.27.12

  • Convert to SciLab.

v0.0.3 - 9.1.12

  • Update input numbers

v0.0.4 - 12.22.12

  • Update input numbers

v0.0.5 - 10.27.13

v0.1.0 - 12.30.13

  • Convert to Python

v0.1.1 - 6.1.14

  • Update input numbers

v0.1.2 - 12.7.14

  • Update input numbers

v0.1.3 - 12.1.15

  • Update input numbers

v0.1.4 - 3.10.17

  • Update input numbers

v1.0.0 - 10.5.18

  • Convert to JS / electron
  • Save user data as json instead of at the beginning of the code file
  • Release v1.0.0

v1.0.1 - 10.9.18

  • Added social security account type

v1.0.2 - 10.10.18

  • Update with new theme

v1.0.3 - 11.14.18

  • Update to electron 3.0

v1.0.4 - 12.29.18

  • Update to babel 7
  • Migrate from 2 package.json to single package.json
  • Replace react-router-redux with connected-react-router
  • Remove unused dependencies

v2.0.0 - 10.3.19

  • Change to new project template
  • Update dependencies
  • Fix calculation bugs
  • Add social security income source

v2.1.0 - 10.17.19

  • Add file-new
  • Refresh pages on file-open or file-new

v2.1.1 - 12.9.19

  • Fix data type storage bug from MUI Editable table fields

v3.0.0 - ________

  • Convert to Rust & Tauri