pylipp / financeager

Organize your finances easily - from the command line!
GNU General Public License v3.0
81 stars 22 forks source link

Non-CL user interface #50

Open pylipp opened 4 years ago

pylipp commented 4 years ago

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:

gabekz commented 3 years ago

I'd love to give this a go with Electron

pylipp commented 3 years ago

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 :)

gabekz commented 3 years ago

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!

pylipp commented 3 years ago

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.