andrerwolff / pft Goto Github PK
View Code? Open in Web Editor NEWPersonal Finance Tracker
Personal Finance Tracker
Credit cards are handled differently than other accounts in ynab. We can discuss how we want to do it later.
Accounts should be able to be closed. If they are closed, they won't show up on list accounts. I don't think they should be deleted because they will need to be referenced by any reports or look backs showing net-worth over time
Create a budgeting tool to help set up envelopes.
Using created, balanced budget 'tree' create envelopes/groups accordingly.
It would be nice to create some external file or db table that stores this info for future reference and/or tweaking. JSON? txt?
*Will likely require heavy re-factoring...
We should keep track of who is giving us money and where our money is going
PFT should validate all input so that the user doesn't blow something up accidentally.
*Idea: Create new module that handles all inputs. whenever user input is required, call the required function or call the function with required argument to handle that specific input case.
Something like:
from PFT import inputValidation as iv
name = iv.account_names()
def account_names()
while True:
name = input('enter account name:')
if name is a valid entry:
return name
else:
print('Try again')
Ongoing reminder for me to comment on the code I am writing.
Allow user to edit transaction details.
All edits should update all impacted info in other tables.
Do you think it would be better to combine the functions for deposits and withdrawals into one transaction function? It can ask the user if the transaction is a deposit or a withdrawal. That way if we need to make any changes to how we want to implement the transaction function we will only need to change it once rather than in the deposit and the withdrawal functions. The option text will be for users to record a transaction.
On a similar note, I think the user should have the option to deposit into any envelope. It should default to the income pool (maybe press y to deposit into income pool), but I think it is more clear if the user knows where the money is going. Also there are some times where you would want to deposit directly into an envelope.
Let me know your thoughts
In the PR I made earlier I addressed this issue in main.py
. But the functions also call os.system('clear').
I will move the clear function from the main to functions.py
Maybe we want to make a utils.py
file to put this function in because it does not relate to the functionality of the software. For now, I will leave it in functions.py
.
Be able to track any debts/liabilities.
We should be able to keep track of debt(student loans/mortgages/consumer debt). Since payments toward these items doesn't change net worth (other than interest payments/fees) they shouldn't be handled as regular expenses.
For example: I make $800 payment to student loans. $150 of that is interest.
My checking account (and Loans envelope) sees -$800, my student loan principal sees +$650 and there is a net withdrawal to the servicer of $150.
Rather than be depressed that my balance decreased by $800, I can be less depressed that my net worth only decreased by $150.
Implement GUI for App
PFT is kind of lame. Lets brainstorm a better name!
So I can remember/reference later what has worked for me. Confirmed with #31
[L] - Local [GH] - GitHub
git checkout master
.git pull
git checkout branch_name
git branch
git add *
and git commit
git push origin branch_name
git checkout master
git pull
git branch -d branch_name
Feel free to add something if I missed it.
I have been doing some research, and I think pytest is the best framework/runner to move forward with
Be able to track investment accounts. Web scrape for prices or manual input.
Will likely require its own table and its own transaction table to handle $ > shares.
For Transactions:
For Accounts:
Line 27 in 084fa00
Unless I'm missing something, this will always return True because of these in lines 21 and 22 in main.py.
f.table_init(conn)
f.env_init(conn)
I deleted the PFT.db file and started up again and it still returns true even though the db is empty
User should be able to split a transaction between several envelopes.
Will need special input validation and sequence to handle this.
Do we need a separate table or column to identify splits?
Line 12 in c313c09
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.