Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mobile-friendly transaction entry? #421

Closed
ngoonee opened this issue Nov 24, 2016 · 27 comments

Comments

@ngoonee
Copy link

commented Nov 24, 2016

Hi, I was testing fava and beancount out (along with hledger and hledger-web against my current gnucash system), and while I love the data display with fava, the transaction entry is really only suitable for computer use (where I'd presumably prefer to use vim/emacs anyway).

hledger-web has a nice form-based transaction input which eases transaction input especially from mobile devices. Please consider something similar. For mobile transaction entry I think the user would just want to enter the description, amount(s), and select accounts from a list (or have search results like in hledger-web).

@aumayr aumayr added the feature label Nov 24, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 24, 2016

I also thought of implementing something to enter data when on a mobile phone. But I would vastly prefer a native client.

What do you think about that?

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 24, 2016

@fokusov

This comment has been minimized.

Copy link
Contributor

commented Nov 24, 2016

I have Fava installed at Pythonanywhere and it would be cool if there were mobile-friendly theme.
Now it look like this:
image

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 24, 2016

@yagebu yagebu added this to the unplanned milestone Nov 24, 2016

@yagebu

This comment has been minimized.

Copy link
Collaborator

commented Nov 24, 2016

This has been on my mind as well for quite some time. It could be very useful on the desktop too - hledger add-like interactive functionality would be quite neat.

if there were mobile-friendly theme

OT: We have some mobile support since #321 but I guess that's more geared towards higher-resolution phones. Improvements to the stylesheets to support lower resolutions better are welcome!

@blais

This comment has been minimized.

Copy link
Contributor

commented Nov 25, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 25, 2016

For support directly in Fava: When viewed on a desktop (big screen), this could be an overlay, and when on a smartphone (small screen) a full page.

What should the features be? A form-like input, with dropdowns etc., or just a normal editor with completion, but maybe without all the transactions above (eg. an empty editor)?

@fokusov

This comment has been minimized.

Copy link
Contributor

commented Nov 25, 2016

+1 for something like hledger-web input with dropdowns

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 25, 2016

I think the following - just a thought-experiment - would be awesome:

  • Fava syncs your list of accounts and previous payees with a public web service (I do not want to have my Fava instance exposed to the internet)
  • Have a native client (iOS is interesting for me), which gets the list of accounts and previous payees via the web service
  • Input the transaction via the app, including photos of receipts, etc.
  • Upload this to the web service
  • Sync the new information to your local Fava instance

This way I do not have to make my Fava instance publicly accessible, and can input new transactions on-the-go. The public web service could be a generic one, and is accessible to many users (so it does not have to be run by me personally, but can be one public instance for everybody).

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 25, 2016

@lipidity

This comment has been minimized.

Copy link

commented Nov 27, 2016

I use beancount for my accounting now (switched from ledger-cli), but my family are not command-line people and rely on the web form I made for them in ledgible for adding transactions. I actually really miss the convenience of it myself, too.

Please check it out (login demo/demo) -- my mother has been using this for over one year.

The main features of this approach are that:

  1. It's super easy to enter transactions on the spot, so it gets to be a habit. I can't do that with fava, so the transactions pile up, I procrastinate, then finally I have to sit down and reconcile everything. Something that used to be fun is now a chore. (The problem is even worse if you have shared accounts and you miss accounting for something - I'll see something unfamiliar on my credit card and wonder, "Was this expense something I bought, or was it my partner? Maybe it's a fraudulent transaction?"). When I was using ledgible's transaction entry I pretty much never missed anything.
  2. date entry is usually just one or two clicks, rather than any typing
  3. autocompletion can "learn" from your data; eg. if my expenses at the payee "Costco" frequently go to my Expenses:Grocery account, Expenses:Grocery should show up first in the autocompletion list for the 'destination'/debit account. Likewise, if I pay for groceries with my credit card, that account would show up first for the 'source'/credit account. (To see this in the demo, put the payee as "Uncle Boons" and see when you type an "e" in either the "to" or "from" account, the first result is based on previous transactions). It doesn't take long before tab-completion does most of the work, so just a few keystrokes take care of the most common transactions!

[A public web service to add transactions, then sync with local fava] [...] This way I do not have to make my Fava instance publicly accessible

This sounds like a bigger privacy issue, since the web service is getting all your transactions!

It would seem to me much more sensible to use TLS and Basic HTTP password protection through eg nginx or httpd - which I am in fact doing already.

What should the features be? A form-like input, with dropdowns etc., or just a normal editor with completion

Based on my experiences with ledgible, +1 to a web form. It shouldn't be difficult to achieve parity with, then surpass ledgible. I look forward to migrating my family to fava once this is implemented :)

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 27, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 27, 2016

Thanks @lipidity for the Demo! This looks very useable, and can be optimized for smartphone-browsers as well… so I'm all for implementing something like this.

(Forget about the web service-idea, it is stupid.)

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 27, 2016

Brain-dump of the parts needed:

  • UI with auto-completion
  • Smartphone-optimization of UI
  • Algorithm to calculate the ordering of the auto-completion-lists (incl. tests)
  • Well-tested way to insert new transactions into the beancount file (like the statement-upload-feature already does)
@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 27, 2016

I made a first draft how this could look in a Desktop browser:

screenshot

@aumayr aumayr referenced this issue Nov 27, 2016
7 of 8 tasks complete
@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 27, 2016

@pfrancois

This comment has been minimized.

Copy link

commented Nov 27, 2016

just a question, it could be good to be able to chose the file where the transaction is added (even if it not seen).
i have two file: one archive , one current. obviously i add only to the current

@blais

This comment has been minimized.

Copy link
Contributor

commented Nov 28, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 28, 2016

@pfrancois That is a valid feature request - I use multiple files as well!

@blais About "automatically": How could an algorithm for figuring out which file and which section look like?

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 28, 2016

@corani

This comment has been minimized.

Copy link
Contributor

commented Nov 28, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 28, 2016

One way would be to define "insert-markers" (special comments, like the one we have right now for where the initial Editor cursor should go), and if there are multiple, provide a dropdown to specify where the transaction should go.

This way the process @corani describes could also be implemented, eg. putting the insert-marker in a separate file.

@pfrancois

This comment has been minimized.

Copy link

commented Nov 28, 2016

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 28, 2016

In a mobile browser:

screenshot

@ngoonee

This comment has been minimized.

Copy link
Author

commented Nov 28, 2016

Looks great =) Regarding more than one account ('split transactions') perhaps it should default to two and have an 'add account' link at the bottom?

@aumayr

This comment has been minimized.

Copy link
Member

commented Nov 30, 2016

Just a quick idea: When we already have a UI for entering transactions, it would be kind of convenient to extend it to the following:

  • Upload a file (a bank statement, XML, CSV, etc.)
  • Let bean-extract (or any other algorithm/program/part of Fava) try to parse the transactions in this file
  • Present a UI with two columns, and per row/transaction in the input file: To the left there is the parsed line(s), and to the right the Transaction-UI with the data that bean-extract et al. "understood".

This way parsing a bank-statement would be a straightforward task:

  1. Upload the file to this Fava page
  2. Check each row and change if needed (you can tab quickly through the input fields and make adjustments, etc.
  3. Save them (Fava writes them to your beancount file)
@EngineerNadeem

This comment has been minimized.

Copy link

commented Dec 16, 2018

can we integrate firepad to fava?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
9 participants
You can’t perform that action at this time.