Git Product home page Git Product logo

personal-finance's People

Contributors

wgaffa avatar

Watchers

 avatar  avatar

personal-finance's Issues

Refactor AccountTransaction

AccountTransaction should be more aptly name Transaction.
It is meant to hold a single entry affecting that account

Add an Account field and rename the type.

Description not shown during add command

In the intermediate outputs when showing what transactions currently are in memory the description is empty.

Best would probably be to show description as well (possibility would be to not show it all)

Output name of account when found

When entering transactions nothing is output until everything is done.
We can output the account to indicate what account we found, this gives
the chance to abort if the user did a mistake.

Add transaction reference id

When creating a transaction all entries should be grouped by an id.

Some ideas are

  • user can input their own id (or none/null if they don't wish to use one)
  • Application generates a unique id (UUID?) for the transaction

Better UI

See if we can create some better experience with some Terminal UI shenanigans.

Perhaps have some default shown in greyed out color for example

Configuration file

Use configuration file

Some possible configurations are

  • connection string to database (currently only sqlite3)

The file should be looked for in this order

  • home (dot file in linux and %appdata%/expense-tracker on windows)
  • current directory

No need for State monad?

I don't think State monad is needed for entering several transactions.
Think it can be done using the go pattern?

loop/recursion and accumulate a list of transactions, when the transactions balance equals zero we are done.

Add multi entry support

Able to enter a full transaction detail.

You should be able to enter several transactions until the balance becomes zero.

All transactions must be on the same day so the inputs should be

  • Date
  • Several transactions

Rename TransactionAmount

This type should be more aptly named to something like Entry or TransactionEntry or maybe even Amount.

Check health

Should be a way to check the validity or health of the database.
It would include

  • all transactions are equally balanced, credit and debit amount are equal
  • database version is the latest available
  • check for a newer version of application perhaps?
    • I don't know how these are done so this is not a focus for me

Improve the render API

Improve the render api to return String instead of using IO for example.
The output is more or less like a table with columns and some separators so far, it might be good to have a Doc or Table type
and render that using Boxes.

Floating point precision

Sometimes reading input the floating precision is off
I once entered 17.90 but the output was 17.89

Better commands

The commands can probably be better
maybe we have a 'create' command for adding/creating accounts and transactions
personal-finance create transaction
personal-finance create account

The db-connection flag can probably be shortened as I think we'll stay with only sqlite3.

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.