financeager icon indicating copy to clipboard operation
financeager copied to clipboard

Non-CL user interface

Open pylipp opened this issue 5 years ago • 4 comments

For increased usability, a different user interface could be provided.

First of all this requires some architectural considerations, e.g. whether the frontend caches queries, and how it is synchronized with the backend (especially critical when using the webservice).

Frameworks for TUIs could be:

  • urwid
  • prompt_toolkit
  • textual and for GUIs:
  • PyQt5/PySide2
  • remi (HTML based interface in webbrowser)
  • dash (HTML/JS based interface in webbrowser)
  • gooey (simply derives GUI from argparse parser)
  • https://github.com/zauberzeug/nicegui

pylipp avatar Nov 10 '19 21:11 pylipp

I'd love to give this a go with Electron

gabekz avatar Dec 21 '20 09:12 gabekz

Hej @GabeKutuzov, thanks for taking the initiative! How easy are Electron apps when it comes to testing, packaging, installing?

If you don't mind we could think about the structure of the interface together. In the simplest form, it could just replicate the output of fina list in a more interactive form (i.e. sorting and filtering of entries, collapsing entries to only show categories). We could already think about whether this comes in a tabbed view (one tab per month) or whether the user can select a time range. In mid-term I'd love to have some visualization (pie or bar charts). You probably have some more ideas, too :)

pylipp avatar Dec 22 '20 07:12 pylipp

Hello @pylipp, Of course! Looking forward to working with like-minded folks. Electron is ridiculously easy to work with, but it's biggest issue is the overhead it carries with chromium. I would love to think about this one together! I will however need to take some time and look deeper into the project. I have always been pro user-option, so a feature allowing the user to select a time range seems like a good one to me. Pie/bar-charts sounds like a fun task to do. Smoothly tweened visuals would be great for the UI elements as well.

I will take some time between Christmas and the New Year to look a little deeper into this.

Looking forward to this!

gabekz avatar Dec 22 '20 12:12 gabekz

Let me know how I can give you an insight of the package. Some parts should already been explained in the Readme (about the architecture) but there is no dedicated documentation apart from docstrings since financeager is not supposed to be used as a library. There is plugin support though; for a GUI we might want to have a clients.Client starting the GUI thread with a proxy attribute that holds the database in memory for the lifetime of the GUI...

I'm currently planning some restructuring of the database handling on the backend (see #52). Then it should also be simpler to access data of a single project spanning more than a year.

pylipp avatar Dec 28 '20 19:12 pylipp